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
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
, 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.
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:
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.
Some packages (like
libc6) will do this check in the postinst phase for a limited set of services specially since an upgrade of essential libraries might break some applications (until restarted)
.
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
).
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
. 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
mit einem Konsolen- oder Terminalserver verbunden ist.