Linux: Systemsicherheit unter Debian GNU/Linux, Teil 1

01.03.2006 von Frank Ronneburg
Kein Betriebssystem ist vor unbefugten Zugriffen sicher. In diesem Artikel erfahren Sie, wie Sie ein Debian-GNU/Linux-System besser gegen solche unberechtigten Attacken schützen. Debian GNU/Linux bietet hierzu einige vorbereitete Pakete, die mit wenig Aufwand zu installieren oder zu konfigurieren sind.

Zunächst sollten Sie bereits bei der Installation des Systems darauf achten, dass Sie sowohl die Frage nach der Verwendung von Shadow-Passwörtern als auch die Frage nach MD5-verschlüsselten Passwörtern mit “Ja“ beantworten.

Generell ist zu sagen, dass jeder auf einem Unix-System laufende Dienst ein Sicherheitsrisiko darstellt. Installieren Sie also ausschließlich Dienste, die auch auf dem System eingesetzt werden sollen.

Das Debian-Team nimmt die Sicherheit des Systems sehr ernst. Sicherheitslücken werden umgehend beseitigt, und aktualisierte Versionen der Softwarepakete sind auf den Debian-FTP-Servern verfügbar. Um Zugriff auf die jeweils aktuellen Sicherheitsupdates zu haben, sollten Sie folgende Zeile der Datei /etc/apt/sources.list hinzufügen:

deb http://security.debian.org/ stable/updates main contrib non-free

Die Artikelserie basiert auf dem Kapitel 14 des Standardwerks „Debian GNU/Linux Anwenderhandbuch für Einsteiger, Umsteiger und Fortgeschrittene“ von Frank Ronneburg aus dem Verlag Addison-Wesley. Sie können dieses über 750 Seiten starke Buch auch in unserem Buchshop bestellen oder als eBook herunterladen.

Serie: Systemsicherheit auf Debian GNU/Linux-Systemen

Teil 1

Sicherheitsaspekte vor und während der Installation

Teil 2

Erhöhung der Systemsicherheit nach der Installation

Teil 3

Weitere Details zur Maximierung der Systemsicherheit im Betrieb

Teil 4

Sichere Dienste und weiterführende Sicherheitsmaßnahmen

Das Paket task-harden

Um sicherzustellen, dass sich keine Pakete mit Sicherheitslücken auf dem System befinden, kann das Paket task-harden installiert werden. In diesem Paket sind verschiedene Task-Pakete aufgeführt, die wiederum mit entsprechenden Anhängigkeiten belegt sind. Die „harden-Pakete“ werden laufend aktualisiert und, sicherheitskritische Software wird durch entsprechende Abhängigkeiten, die in diesen Paketen festgelegt sind, von der Verwendung ausgeschlossen. Es kann also durchaus passieren, dass die Installation dieses Pakets dazu führt, dass ein benötigter Dienst gelöscht wird.

Das Debian-Team ist dabei der Meinung, dass es besser ist, einen Dienst eine Zeit lang nicht zur Verfügung zu stellen, statt einem Angreifer einen Angriffspunkt zu liefern.

Das Paket task-harden besitzt definierte Abhängigkeiten zu diversen anderen Paketen, die auch gesondert installiert werden können. Diese decken kleinere Bereiche ab, so dass es möglich ist, einzelne Dienste oder bestimmte Systeme gezielt zu schützen. Diese Pakete sind:

harden - Makes your system hardened.

harden-3rdflaws - Avoid packages with security problems.

harden-clients - Avoid clients that are known to be insecure.

harden-development - Development tools for creating more secure programs.

harden-doc - Useful documentation to secure a Debian system.

harden-environment - Hardened system environment.

harden-localflaws - Avoid packages with security holes.

harden-nids - Harden a system by using a network intrusion detection system.

harden-remoteaudit - Audit your system from this host.

harden-remoteflaws - Avoid packages with security holes.

harden-servers - Avoid servers that are known to be insecure.

harden-surveillance - Check services and/or servers automaticly.

harden-tools - Tools to enhance or analyze the security of the local system.

Die durch diese Pakete vorgenommenen Veränderungen basieren auf den im Securing Debian HOWTO beschriebenen Aktionen.

Securing Debian HOWTO

Im „Securing Debian HOWTO“ finden sich Informationen darüber, an welchen Stellen ein Debian-System noch sicherer gemacht werden kann. Daher soll an dieser Stelle nur auf einige grundlegende Dinge hingewiesen werden.

Zunächst müssen Sie sich darüber im Klaren sein, dass ein System nur dann hundertprozentig sicher ist, wenn keinerlei Dienste auf diesem nach außen hin über das Netzwerk angeboten werden oder sogar gar keine Verbindung zu einem Netzwerk besteht. Dies ist heutzutage in der Realität natürlich unsinnig und nicht durchsetzbar; das System würde so nicht sinnvoll benutzbar sein.

Sie sollten sich auch darüber im Klaren sein, dass die Anforderungen an die Sicherheit stark vom Einsatz des Systems abhängig sind. Ein Privatnutzer wird deutlich andere Anforderungen stellen als der Administrator eines Firewall-Systems. Viele Einstellungen, die die Sicherheit eines Systems erhöhen, vereinfachen den Gebrauch nicht unbedingt; auch hier ist zwischen Benutzbarkeit und Paranoia abzuwägen.

Die softwareseitigen Einstellungen an einem Debian-System, die zur Verbesserung der Sicherheit dienen, können nicht den physikalischen Zugriff auf das System verhindern. Wenn von Systemsicherheit die Rede ist, muss auch bedacht werden, dass zu einem völlig sicheren System auch gehört, dass der Zugriff auf die Hardware unterbunden wird. Ein Angreifer, der Zugriff auf die Hardware hat, kann beispielsweise über eine Boot-CD oder -Diskette Zugriff auf das System erlangen. Auch ein BIOS- oder LILO-Passwort kann den Diebstahl der Festplatte nicht verhindern. Ein völlig sicheres System gehört also hinter gut verschlossene Türen. Doch Betrachtungen zur Hardwaresicherung sollen an dieser Stelle nicht weiter verfolgt werden.

Wichtige Security-Aspekte

Allgemein formuliert sollten folgende Punkte beachtet werden:

1. Entscheiden Sie, welche Dienste auf dem System benötigt werden, und beschränken Sie den Einsatz genau auf diese Dienste – nicht mehr und nicht weniger. Nicht benötigte Dienste sollten auf dem System nicht installiert oder zumindest deaktiviert sein. Weiterhin sollten die benutzten Ports durch eine Firewall auf dem System freigegeben beziehungsweise sollten die Ports von nicht genutzten Diensten über die Firewall gesperrt werden.

2. Verwendete Dienste sind abzusichern, so dass bei einem erfolgreichen Angriff auf diesen Dienst nicht das gesamte System kompromittiert wird (beispielsweise durch die Verwendung einer chroot-Umgebung).

3. Auf dem System sollten nur die notwendigen Benutzerkonten angelegt und aktiviert sein. Aktive Benutzerkonten sind durch entsprechende Beschränkungen (Unix-Zugriffsrechte, Quota, ACLs) abzusichern.

4. Setzen Sie Programme ein, die einen unbefugten Zugriff auf das System erkennen und melden, so dass geeignete Gegenmaßnahmen ergriffen werden können.

BIOS-Einstellungen vor der Installation

Bereits vor der Installation können einige Maßnahmen zur Sicherheit des Systems getroffen werden. Das Debian-Installationsprogramm enthält ebenfalls einige Punkte, an denen die Sicherheit des Systems verbessert werden kann.

BIOS-Einstellungen

Bevor ein Betriebssystem auf einem neuen Computer installiert wird, sollte ein BIOS-Passwort gesetzt werden, und die Booteinstellungen sollten so gewählt werden, dass ein Systemstart von Diskette nicht möglich ist. Nach der Installation sollte darauf geachtet werden, dass so schnell wie möglich auch der Start von CD-ROM abgeschaltet wird.

Ein weiterer Vorteil dieser Einstellungen zeigt sich, wenn das System als Server in einem Rechenzentrum betrieben wird. Es wäre nicht das erste Mal, dass eine vergessene Diskette im Laufwerk einen erfolgreichen Reboot eines Systems verhindert; und das wird sehr ärgerlich, wenn ein direkter Zugriff auf das System nur mit einer längeren Anfahrt möglich ist.

Festplattenpartitionen

Die Einteilung des verfügbaren Festplattenplatzes hängt von der Verwendung des Systems ab. Hierzu sollten Sie einige Dinge beachten:

Jede Partition, auf die die Benutzer des Systems Schreibzugriff haben, sollte auf einer eigenen Partition liegen, beispielsweise in den Bereichen /home und /tmp. Dies verhindert, dass ein Benutzer das Root-Dateisystem (/) unbenutzbar macht und das gesamte System in einen instabilen Zustand bringt. Es bleibt natürlich ein gewisser Platz (meist fünf Prozent, dieser Wert kann mit tunefs angepasst werden) für den Administrator reserviert, doch kann so anderen Benutzern das Arbeiten mit dem System unmöglich gemacht werden.

Es sollte für jeden Bereich, der automatisch mit Daten gefüllt wird (beispielsweise /var und hier insbesondere das Verzeichnis /var/log), eine eigene Partition vorgesehen werden. Auf Debian-Systemen sollte /var großzügiger bemessen werden, da unter /var/cache/apt/archives Pakete temporär abgelegt werden, wenn die Installation über das Netz erfolgt. Weiterhin finden sich unter /var/lib/dpkg viele Dateien, die für das Paketmanagement benötigt werden.

Wenn Software installiert werden soll, die nicht in der Debian-Distribution enthalten ist, sollten auch diese Bereiche auf eigenen Partitionen liegen; diese werden dann bei einer Neuinstallation des Systems nicht überschrieben. Nach dem „File Hierarchy Standard“ (FHS) sind dies /opt oder /usr/local.

Administrator Passwort

Während der Installation wird nach einem Passwort für den Administrator (root) gefragt. Zusätzlich kann ein Konto für einen „normalen“ Benutzer dem System hinzugefügt werden; auch für diesen ist dann ein Passwort einzugeben. Auch wenn es möglich ist, hier ein sehr einfaches Passwort zu verwenden, so ist dies natürlich nicht empfehlenswert. Die Auswahl eines guten Passworts ist auf vielen Webseiten im Netz beschrieben, es sind dabei nur einige einfache Regeln zu beachten. Eine Suche nach „auswahl gutes passwort“ mittels Google führt schnell zum Erfolg.

Grundsätzlich sollte auf jedem System neben dem Zugangskonto für den Administrator auch mindestens ein solches Konto für einen Benutzer angelegt werden, das nicht über alle Rechte verfügt. Dieses Benutzerkonto sollte für grundsätzlich alle Logins beziehungsweise Arbeiten auf dem System verwendet werden. Nur wenn für eine bestimmte Aufgabe die Zugriffsrechte nicht ausreichend sind, sollten Sie mit dem Kommando su die Identität wechseln. Nach Beendigung der Arbeiten als Administrator sollten Sie sich umgehend wieder als „normaler“ Benutzer im System bewegen.

Passwörter und aktivierte Dienste

Während der Installation erfolgt eine Abfrage, ob „Shadow Passwords“ aktiviert werden sollen. Wenn die Frage positiv beantwortet wird, werden die Passwörter in der Datei /etc/shadow verschlüsselt gespeichert. Diese Datei kann nur vom Administrator und der Gruppe „shadow“ gelesen werden; somit kann kein Benutzer des Systems die verschlüsselten Passwörter lesen und versuchen, diese mit Hilfe einer Software zu entschlüsseln. Diese Einstellung kann später mit dem Programm shadowconfig rückgängig gemacht werden.

Weiterhin besteht die Möglichkeit, die Passwörter mit einer MD5-Verschlüsselung zu speichern; dies ist generell eine gute Idee, da so ein Angriff weiterhin erschwert wird und längere Passwörter möglich sind.

Aktivierte Dienste

Wie bereits beschrieben, sollten nur die absolut notwendigen Dienste auf einem System aktiviert werden. Jeder neue Dienst schafft möglicherweise ein neues Sicherheitsloch, das vielleicht erst später zu einem Problem wird. Werden bestimmte Dienste nur selten benötigt, so können diese über die Update-Kommandos (beispielsweise update-inetd) gezielt aktiviert und deaktiviert werden.

Mailinglisten

Lesen Sie die Debian-Security-Mailinglisten. Informationen zu den verfügbaren Listen finden Sie auf der debian.org-Homepage. Dort ist auch beschrieben, wie Sie sich an einer solchen Liste an- und abmelden. Relevant sind in diesem Zusammenhang debian-security-announce, dort werden Sicherheitslücken bekannt gegeben, und Sie werden über Bugfixes dagegen informiert. Eine weitere Mailingliste zum Thema ist debian-security@lists.debian.org, dort werden alle Sicherheitsthemen rund um Debian behandelt.

Wenn Sie Meldungen über Sicherheitsupdates per E-Mail bekommen wollen, so senden Sie eine Mail an: debian-security-announce-request@lists.debian.org (mailto://debiansecurity-announce-request@lists.debian.org) mit dem Wort „subscribe“ im Betreff der Mail. Die Anmeldung an dieser Mailingliste ist auch über die Webseite http://www.debian.org/MailingLists/subscribe möglich.

Auf dieser Mailingliste erhalten Sie nur sehr wenige Mails, Sie werden dort aber sehr schnell über Probleme mit Paketen informiert und erfahren eine Internet-Adresse, unter der eine fehlerbereinigte Version des Pakets zur Verfügung steht.

Absicherung des Bootloaders

Nachdem das System mit allen benötigten Programmen eingerichtet ist, kann mit einigen weiteren Aktionen die Sicherheit des Systems weiter erhöht werden.

Jede Person, die Zugang zur Tastatur des Systems hat, kann eine Administrator-Shell bekommen und beispielsweise alle Passwörter ändern, indem am Bootprompt dateiname- des-bootkernels init=/bin/sh eingegeben wird. Um dies zu verhindern, kann ein Passwort für den Boot-Loader gesetzt werden. Dies kann global für alle Boot-Images geschehen oder individuell für jedes einzelne.

Wenn Lilo als Bootloader verwendet wird, muss die Datei /etc/lilo.conf um die Einträge password und restricted erweitert werden:

image=/boot/2.2.14-vmlinuz

label=Linux

read-only

password=hackme

restricted

Danach muss lilo noch einmal aufgerufen werden. Sorgen Sie dafür, dass die Datei /etc/lilo.conf nur vom Administrator gelesen werden kann, da das Passwort unverschlüsselt in der Konfigurationsdatei steht; dies erreichen Sie mit dem Kommando chmod 600 /etc/lilo.conf. Die Option restricted bewirkt, dass nur nach einem Passwort gefragt wird, wenn der Benutzer versucht, zusätzliche Parameter am Bootprompt anzugeben. Die Auswahl verschiedener, bereits in der Konfiguration eingetragener Kernel ist weiterhin möglich. Wird der Eintrag restricted weggelassen, fragt Lilo in jedem Fall nach einem Passwort.

Die genannten Einträge können am Anfang der Konfigurationsdatei allgemein gültig für alle Kernel in der Konfiguration angegeben werden oder aber innerhalb eines Abschnitts der Konfigurationsdatei nur für bestimmte Kernel.

Wird auf dem System GRUB verwendet, so müssen folgende Zeilen der Datei /boot/grub/menu.lst hinzugefügt werden:

timeout 3

password hackme

Die Option timeout sorgt nach der angegebenen Zeit dafür, dass der Standardeintrag gebootet wird.

Starten von Diskette

Der von Debian-Versionen vor 2.2 installierte MBR (Master Boot Record) wurde mit einer Option installiert, die es erlaubte, von Diskette zu booten, auch wenn dies sonst abgeschaltet war. Ob ein solcher MBR installiert ist, lässt sich wie folgt prüfen:

Drücken Sie während des Startvorgangs die „?“-Taste; der MBR-Prompt sollte erscheinen.

Drücken Sie nun „f“, und das System startet von Diskette. Mit dieser kann ein Administratorzugang zum System erreicht werden.

Dieses Verhalten kann wie folgt verändert werden:

lilo -b /dev/hda

(wobei hda dem entsprechenden Devicenamen Ihres Systems angepasst werden muss).

Die Bootdisketten ab Debian-Version 2.2 installieren lilo direkt in den MBR; hier tritt diese Lücke nicht auf.

Mounten von Dateisystemen

Beim Mounten (Einhängen in das Dateisystem) von ext2-Partitionen gibt es diverse Optionen, die dem Kommando mount übergeben werden oder die direkt in die Datei /etc/fstab eingetragen werden können. Ein solcher Eintrag könnte beispielsweise wie folgt aussehen:

/dev/hda7 /tmp ext2 defaults,nosuid,noexec,nodev 0 2

Die Optionen finden sich in der vierten Spalte. Die Option nosuid ignoriert gesetzte SUID- und GUID-Bits auf dieser Partition. Eine gesetzte Option noexec verhindert, dass auf dieser Partition befindliche Programme ausgeführt werden können, und nodev ignoriert Device-Dateien. Dabei ist zu beachten:

Dies bezieht sich nur auf ext2-Dateisysteme.

Auch solche Optionen können relativ leicht umgangen werden.

Hierzu ein Beispiel:

fr@sushi:/tmp# mount | grep tmp

/dev/hda3 on /tmp type ext2 (rw,noexec,nosuid,nodev)

fr@sushi:/tmp# ./date

bash: ./date: Keine Berechtigung

fr@sushi:/tmp# /lib/ld-linux.so.2 ./date

Sun Jul 29 14:40:32 CEST 2001

Viele Tools, die von Hackern benutzt werden, versuchen im Verzeichnis /tmp Dateien anzulegen und diese auszuführen. Mit der Option noexec kann man dem Angreifer zumindest das Leben etwas schwerer machen.

Ausblick

Der zweite Teil der Artikelserie „Systemsicherheit unter Debian GNU/Linux“ informiert, an welchen Stellen ein Debian-System noch sicherer gemacht werden kann. Dabei behandelt der Artikel insbesondere die Maßnahmen nach der Installation des Betriebssystems. Die Themengebiete reichen von der Absicherung des Bootloaders über die Modifikation der Pluggable Authentication Modules (PAM) bis hin zur Anpassung verschiedener Systemdienste.

Im dritten Teil der Artikelserie wird die Abwandlung von Diensten zur Maximierung der Systemsicherheit fortgeführt. Neben Dateien erläutert dieser Teil auch den Einsatz von entsprechenden Kommandos sowie die Benutzung von Quota und die Prüfung der Integrität des Dateisystems.

Der vierte und letzte Teil erklärt, wie Sie spezielle Dienste in einer entsprechenden Umgebung sicher einsetzen können. Neben der Secure Shell (SSH) werden auch Anwendungen wie Display-Manager, E-Mail, Nameserver-BIND und X-Anwendungen auf Sicherheitsaspekte beleuchtet. Zusätzlich zeigt der Artikel, wie Sie ein System vor einem möglichen Einbruch schützen können und wie Sie sich nach einem Einbruch ins System verhalten sollten. Letzteres beinhaltet auch das Erkennen von so genannten Rootkits. (hal)