Product SiteDocumentation Site

4.2. Ausführen von Sicherheitsaktualisierungen

Sobald neue Sicherheitslöcher in einem Paket entdeckt wurden, reparieren sie Debians Paketbetreuer und Originalautoren im Allgemeinen innerhalb von Tagen oder sogar Stunden. Nachdem das Loch gestopft wurde, werden neue Pakete unter http://security.debian.org bereit gestellt.
Wenn Sie eine Debian-Veröffentlichung installieren, müssen Sie berücksichtigen, dass es seit der Veröffentlichung Sicherheitsaktualisierungen gegeben haben könnte, nachdem entdeckt wurde, dass ein bestimmtes Paket verwundbar ist. Ebenso könnte es Zwischenveröffentlichungen gegeben haben, die diese Paketaktualisierungen enthalten. Für Debian 3.1 Sarge gab es vier Zwischenveröffentlichungen.
Während der Installation werden Sicherheitsaktualisierungen für Ihr System eingerichtet, offene Sicherheitsaktualisierungen heruntergeladen und Ihrem System hinzugefügt, sofern Sie sich nicht explizit dagegen entscheiden oder keine Internetverbindung besteht. Die Aktualisierungen werden noch vor dem ersten Systemstart eingespielt, damit das neue System sein Leben so aktuell wie möglich beginnt.
Um Ihr System manuell zu aktualisieren, fügen Sie die folgende Zeile in Ihre /etc/apt/sources.list ein. So werden Sie Sicherheitsaktualisierungen automatisch erhalten, wann immer Sie Ihr System aktualisieren. Ersetzen Sie [CODENAME] mit dem Namen der Veröffentlichung, z.B. mit squeeze.
  deb http://security.debian.org/ [CODENAME]/updates main contrib non-free
Hinweis: Falls Sie den Testing-Zweig einsetzen, sollten Sie die Sicherheitsspiegel für Testing verwenden. Das wird unter Abschnitt 10.1.4, „Sicherheitsunterstützung für den Testing-Zweig“ beschrieben.
Wenn Sie dies erledigt haben, stehen Ihnen zahlreiche Werkzeuge zur Verfügung, mit denen Sie Ihr System aktualisieren können. Wenn Sie ein Desktop-System einsetzen, können Sie eine Anwendung mit dem Namen Update-notifier verwenden[10], mit der Sie leicht prüfen können, ob neue Aktualisierungen verfügbar sind. Damit können Sie Ihr System auch über den Desktop auf den neusten Stand bringen (mit update-manager). Weitere Informationen finden Sie unter Abschnitt 10.1.2.2, „Überprüfung von Aktualisierungen auf dem Desktop“. Für den Desktop können Sie auch Synaptic (GNOME), Kpackage oder Adept (KDE) einsetzen, die einen größeren Funktionsumfang aufweisen. Wenn Sie auf einem textbasierten Terminal arbeiten, stehen Ihnen Aptitude, Apt und Dselect, wobei letzteres veraltet ist, zur Verfügung:
  • Falls Sie die textbasierte Oberfläche von Aptitude verwenden wollen, müssen Sie zunächst u (für Update) und dann g (für Upgrade) eingeben. Oder Sie führen auf der Befehlszeile Folgendes als Root aus:
    # aptitude update
    # aptitude upgrade
  • Falls Sie Apt einsetzen möchten, müssen Sie obige Zeilen von Aptitude nur mit apt-get ersetzen.
  • Falls Sie dselect verwenden wollen, müssen Sie zuerst aktualisieren ([U] für Update), dann installieren ([I] für Install) und schließlich die installieren/aktualisierten Pakete konfigurieren ([C] für Configure).
Wenn Sie möchten, können Sie der Datei /etc/apt/sources.list die Zeilen mit deb-src hinzufügen. Weitere Details finden Sie unter apt(8).

4.2.1. Sicherheitsaktualisierungen für Bibliotheken

Wenn Sie eine Sicherheitsaktualisierung durchgeführt haben, müssen Sie gegebenenfalls einige Dienste des Systems neu starten. Wenn Sie das nicht tun, könnten Dienste auch nach der Sicherheitsaktualisierung immer noch verwundbar sein. Das liegt daran, dass Daemonen, die schon vor einem Upgrade liefen, immer noch die alten Bibliotheken vor dem Upgrade verwenden könnten.[11] Um herauszufinden, welche Daemonen neu gestartet werden müssen, können Sie das Programm Checkrestart (ist im Paket debian-goodies enthalten) oder diesen Einzeiler (als Root) verwenden:[12]
From Debian Jessie and up, you can install the needrestart package, which will run automatically after each APT upgrade and prompt you to restart services that are affected by the just-installed updates. In earlier releases, you can run the checkrestart program (available in the debian-goodies package) manually after your APT upgrade.
Einige Pakete (wie libc6) werden diesen Test in der Postinst-Phase für eine begrenzte Anzahl von Diensten durchführen, da ein Upgrade von notwendigen Bibliotheken einige Anwendungen unbrauchbar machen kann, wenn sie nicht neu gestartet werden [13].
Indem das System auf Runlevel 1 (Single User) und dann zurück auf Runlevel 3 (Multi User) gebracht wird, sollten die meisten (wenn nicht alle) Systemdienste neu gestartet werden. Dies ist aber keine Option, wenn Sie die Sicherheitsaktualisierung über eine Verbindung aus der Ferne (z.B. mit Ssh) vornehmen, da diese getrennt werden würde.
Lassen Sie Vorsicht walten, wenn Sie es mit Sicherheitsaktualisierungen über eine Verbindung aus der Ferne wie mit SSH zu tun haben. Die empfohlene Vorgehensweise für Sicherheits-Upgrades, die Dienste betreffen, ist, den SSH-Daemon neu zu starten und sofort zu versuchen, eine neue SSH-Verbindung herzustellen, ohne die alte zu beenden. Falls der Verbindungsversuch scheitern sollte, machen Sie das Upgrade rückgängig und untersuchen Sie das Problem.

4.2.2. Sicherheitsaktualisierung des Kernels

Stellen Sie zunächst sicher, dass Ihr Kernel durch das Paketsystem verwaltet wird. Wenn Sie die Installation mit dem Installationssystem von Debian 3.0 oder früher durchgeführt haben, ist Ihr Kernel nicht in das Paketsystem integriert und könnte veraltet sein. Sie können das leicht überprüfen, indem Sie Folgendes ausführen:
$ dpkg -S `readlink -f /vmlinuz`
linux-image-2.6.18-4-686: /boot/vmlinuz-2.6.18-4-686
Wenn Ihr Kernel nicht vom Paketsystem verwaltet wird, werden Sie anstatt der obigen Nachricht die Rückmeldung bekommen, dass das Paketverwaltungsprogramm kein Paket finden konnte, das mit der Datei verbunden ist. Die obige Meldung besagt, dass die Datei, die mit dem laufenden Kernel verbunden ist, vom Paket linux-image-2.6.18-4-686 zur Verfügung gestellt wird. Sie müssen also zuerst ein Paket mit einem Kernel-Image von Hand installieren. Das genaue Kernel-Image, das Sie installieren sollten, hängt von Ihrer Architektur und Ihrer bevorzugten Kernelversion ab. Wenn Sie das einmal erledigt haben, können Sie die Sicherheitsaktualisierungen des Kernels wie die jedes anderen Pakets durchführen. Beachten Sie allerdings, dass Kernelaktualisierungen nur für Aktualisierungen der gleichen Kernelversion wie der Ihrigen durchgeführt werden. D.h. apt wird nicht automatisch Ihren Kernel von 2.4 auf 2.6 aktualisieren (oder von 2.4.26 auf 2.4.27 [14]).
Das Installationssystem von aktuellen Debian-Veröffentlichungen wird den gewählten Kernel als Teil des Paketsystems behandeln. So können Sie überprüfen, welche Kernel Sie installiert haben:
$ COLUMNS=150 dpkg -l 'linux-image*' | awk '$1 ~ /ii/ { print $0 }'
Um festzustellen, ob Ihr Kernel aktualisiert werden muss, führen Sie Folgendes aus:
$ kernfile=`readlink -f /vmlinuz`
$ kernel=`dpkg -S $kernfile | awk -F : '{print $1}'`
$ apt-cache policy $kernel
linux-image-2.6.18-4-686:
  Installiert: 2.6.18.dfsg.1-12
  Installationskandidat: 2.6.18.dfsg.1-12
  Versionstabelle:
 *** 2.6.18.dfsg.1-12 0
        100 /var/lib/dpkg/status
Wenn Sie eine Sicherheitsaktualisierung durchführen, die auch das Kernel-Image umfasst, müssen Sie das System neu starten, damit die Sicherheitsaktualisierung Wirkung zeigen kann. Anderenfalls lassen Sie immer noch das alte (und verwundbare) Kernel-Image laufen.
Wenn Sie das System neu starten müssen (wegen eines Kernel-Upgrades), sollten Sie sicherstellen, dass der Kernel fehlerfrei booten wird und die Netzwerkverbindungen hergestellt werden, besonders wenn die Sicherheitsaktuali sierung über eine Verbindung aus der Ferne wie mit SSH durchgeführt wird. Für den ersten Fall können Sie Ihren Boot-Loader so konfigurieren, dass er den Originalkernel lädt, wenn ein Fehler auftritt (für weiterführende Informationen sollten Sie http://www.debian-administration.org/?article=70 lesen). Im zweiten Fall müssen Sie ein Skript verwenden, das die Netzwerkverbindungen testen kann und überprüft, ob der Kernel das Netzwerksystem korrekt gestartet hat, und, wenn das nicht geschehen ist, das System neu startet [15]. Dies sollte böse Überraschungen verhindern, wie wenn Sie den Kernel aktualisieren und dann nach einem Reboot merken, dass die Netzwerkhardware nicht richtig erkannt oder konfiguriert wurde, und Sie daher eine weite Strecke reisen müssen, um das System wieder zum Laufen zu bringen. Natürlich hilft es beim Debuggen von Reboot-Problemen aus der Ferne, wenn die serielle Konsole des Systems [16] mit einem Konsolen- oder Terminalserver verbunden ist.


[10] Ab Etch und den folgenden Veröffentlichungen.
[11] Selbst wenn die Bibliotheken aus dem Dateisystem entfernt wurden, werden die Inodes nicht beseitigt, bis kein Programm mehr einen offenen Dateideskriptor mit Verweis auf sie hat.
[12] Je nach der Version von Lsof müssen Sie $8 statt $9 verwenden.
[13] Das passierte z.B. beim Upgrade von Libc6 2.2.x auf 2.3.x wegen Problemen mit der NSS-Authentifizierung, siehe http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276.html.
[14] Es sei denn, Sie haben ein Kernel-Metapaket wie linux-image-2.6-686 installiert, welches immer die neueste Minor-Version des Kernels einer Architektur installieren wird.
[15] Ein Beispielskript mit dem Namen http://www.debian-administration.org/articles/70/testnet ist im Artikel http://www.debian-administration.org/?article=70 enthalten. Ein ausgereifteres Testskript befindet sich im Artikel http://www.debian-administration.org/?article=128.
[16] Das Einrichten einer seriellen Konsole würde den Rahmen dieses Dokuments sprengen. Informationen dazu finden Sie im http://www.tldp.org/HOWTO/Serial-HOWTO.html und im http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/index.html.