it-swarm.com.de

Wie dringend ist ein *** Neustart des Systems *** aus Sicherheitsgründen erforderlich?

Um ein bisschen Serveradministration zu lernen, habe ich einen einfachen Ubuntu 14.04-Server eingerichtet, auf dem ich eine persönliche Website betreibe. Ich habe festgelegt, dass Sicherheitsupdates automatisch installiert werden, aber die anderen Updates weggelassen. Das scheint ganz gut zu funktionieren. Gelegentlich erhalte ich beim Einloggen auf dem Server (mit ssh) die Meldung:

*** System restart required ***

Als dies passierte, habe ich Ubuntu einfach neu gestartet und alles war in Ordnung. Dies ist in Ordnung, da es sich um eine einfache persönliche Website handelt. Was mich jedoch wundert, ist, wie dies bei Webservern funktioniert, die in 99,9999% der Fälle auf dem Vormarsch sein sollten? Starten sie einfach nicht neu und riskieren die Verletzung der Sicherheit, weil keine Sicherheitsupdates installiert sind (was ich mir nicht vorstellen kann)? Oder halten sie Ausfallzeiten für selbstverständlich (was ich mir auch nicht vorstellen kann)?

Wie gehe ich damit um, wenn dies ein sehr wichtiger Produktionsserver ist, den ich weiter betreiben möchte? Alle Tipps sind willkommen!

[EDIT] Ich weiß, dass ich cat /var/run/reboot-required.pkgs ausführen kann, um die Pakete aufzulisten, die den Neustart verursachen. Der Befehl liefert derzeit Folgendes:

linux-image-3.13.0-36-generic
linux-base
dbus
linux-image-extra-3.13.0-36-generic
linux-base

aber woher weiß ich, ob es sich bei den Updates um Kleinigkeiten handelt, um festzustellen, ob ich eine ernsthafte Sicherheitslücke habe, wenn ich den Neustart nicht durchführe?

[EDIT2] Okay, ich habe jetzt die Befehle, die ich für nützlich befunden habe, in einem zusammengefasst:

xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high

Wenn hierdurch nichts ausgegeben wird, scheint es keine Sicherheitsprobleme mit hoher Dringlichkeit zu geben.

Eine letzte Frage ist jedoch: Sind low, medium und high die einzigen dringenden Möglichkeiten, oder gibt es weitere wie zum Beispiel critical oder extremelyimportant?

54
kramer65

Dies ist keine einfache Antwort, da dies von den vorgenommenen Aktualisierungen abhängt. Wenn der Kernel ein ernstes Sicherheitsproblem hatte, ist es gut, so schnell wie möglich neu zu starten. Wenn der Kernel nur kleinere Korrekturen hatte, konnte der Neustart verschoben werden.

Wenn Sie eine Verfügbarkeit von> 99,9% garantieren, verfügen Sie fast immer über ein Clustersystem, auf dem Sie die Knoten nacheinander neu starten können, ohne den Dienst zu unterbrechen.

Sie starten also das erste System neu und verbinden es erneut mit dem Cluster. Dann das zweite und so weiter. Dann wird der Dienst niemals nicht verfügbar sein.

44
Uwe Plonus

Addon für die Themenlösung

Ich führe eine ähnliche Überprüfung auf "Neustartanforderungen" für das zabbix-Überwachungssystem durch

Ich sehe 2 Probleme in der 'Topic'-Lösung:

  1. eignung funktioniert normalerweise schlecht in Skripten. Ich habe ein paar Stunden getötet, aber mit zabbix hat es immer noch nicht funktioniert
  2. wenn nur 1 Änderungsprotokoll ein dringendes Update enthält, zeigt Ihre Überprüfung immer positive Ergebnisse

Meine Logik ist:

  1. Überprüfen Sie die letzte Änderung nur im Änderungsprotokoll für jedes Paket, das einen Neustart des Systems erfordert
  2. Als Ausgabe nur ein Update mit der höchsten Priorität anzeigen

Unter Verwendung von Debian-Dokumentation habe ich 5 mögliche Werte für "Dringlichkeit" und auch die Tatsache gefunden, dass es durch Gleichheit ("=") oder Semikolon (":") gefolgt werden kann. ) Zeichen. Es kann auch Groß- und Kleinschreibung geben

So endete ich mit folgenden:

#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog 
# for updates which require system restart
#
##################################
# Contact:
#  [email protected]
##################################
# ChangeLog:
#  20151205    initial creation
#  20151208    check uniq packages only 
##################################

case "$1" in

status)
    if [ -f /var/run/reboot-required ]; then
      echo 1
    else
      echo 0
    fi 
    ;;

urgency)
    if [ -f /var/run/reboot-required.pkgs ]; then
      while read pkg; do
        tmp=`/usr/bin/apt-get changelog $pkg | \
             /bin/grep -m1 -ioP '(?<=[Uu]rgency[=:])(low|medium|high|emergency|critical)' | \
             tr '[:upper:]' '[:lower:]'`
        if [ -n $tmp ]; then
          if   [ "$tmp" == "low" ] && \
               [ "$urgency" != "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=low
          Elif [ "$tmp" == "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=medium
          Elif [ "$tmp" == "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=high
          Elif [ "$tmp" == "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=emergency
          Elif [ "$tmp" == "critical" ]; then 
            urgency=critical
            break
          fi
        fi 
      done < <(sort -u /run/reboot-required.pkgs)
    else
      urgency=none
    fi

    case "$urgency" in
        none)      urgency=0 ;;
        low)       urgency=1 ;;
        medium)    urgency=2 ;;
        high)      urgency=3 ;;
        emergency) urgency=4 ;;
        critical)  urgency=5 ;;
        *)         urgency=42 ;;
    esac

    echo $urgency
    ;;
esac
exit 0

Als Ergebnis:

  • reboot_required_check.sh status gibt 1 zurück, wenn ein Neustart erforderlich ist, und 0, wenn dies nicht der Fall ist
  • reboot_required_check.sh urgency gibt die höchste Dringlichkeitsstufe oder '0' zurück, wenn kein Neustart erforderlich ist

Hoffe es hilft jemandem eine Zeit zu sparen;)

3
user2658174

Was mich jedoch wundert, ist, wie dies bei Webservern funktioniert, die in 99,9999% der Fälle auf dem Vormarsch sein sollten? Starten sie einfach nicht neu und riskieren die Verletzung der Sicherheit, weil keine Sicherheitsupdates installiert sind (was ich mir nicht vorstellen kann)? Oder halten sie Ausfallzeiten für selbstverständlich (was ich mir auch nicht vorstellen kann)?

Große Webserver werden neu gestartet, wenn * Systemneustart erforderlich * aus Sicherheitsgründen angezeigt wird.

Dies ist jedoch für den Benutzer transparent und die Site ist nie inaktiv, da auf großen Servern häufig zwei oder drei Server ausgeführt werden, auf denen genau dieselben Dateien gespeichert sind und dieselbe Site angezeigt wird. Der erste ist der Hauptserver, während die beiden anderen sekundär sind und nur verwendet werden, wenn der Hauptserver inaktiv ist.

0
rom