Ratgeber

So sichern Sie Ihr Linux-System ab

20.06.2008 von Johannes Plötner und Steffen Wendzel
Auch Linux-Distributionen sind nicht automatisch vor Angriffen sicher. Wer sein System zuverlässig schützen will muss viele Aspekte beachten und typische Fehler vermeiden.

Die Absicherung eines Unix(artigen)-Systems kann sehr aufwendig sein, sofern Sie alle Pakete modifizieren, das Dateisystem härten, den Kernel patchen und vielleicht noch weitere Userspace-Absicherungen durchführen wollen. Um als Administrator um diese Aufgabe herumzukommen, können Sie zu einer speziellen, auf maximale Sicherheit getrimmte Linux-Distribution greifen.

Im Folgenden stellen wir Ihnen die wichtigsten Alternativen vor. Selbstverständlich verfügen alle Systeme über die wichtigsten Sicherheitsmerkmale, etwa Shadow-Passwörter. Auch unterstützt ein Großteil PAM, Kerberos, chroot/jailing, One-Time-Passwörter.

Benutzer verwalten

Linux ist von Haus aus mehrbenutzerfähig, was sich nicht zuletzt am vielschichtigen Benutzer- und Rechtesystem zeigt. Ein normaler Benutzer hat dabei in aller Regel keinen Vollzugriff auf das System ? und das ist unter Sicherheitsgesichtspunkten auch gut so. Schließlich sind Schreibrechte nicht zwingend nötig, um Programme auszuführen. Auch ist es in der Regel so, dass normale Benutzer Geräte verwenden wollen, ohne neue Treiber für die Hardware-Komponenten zu konfigurieren. Zudem gehen einen User die Dateien der anderen Benutzer nichts an, es sei denn, der Zugriff wird explizit erlaubt.

Da der Eigentümer eine Eigenschaft des Prozesses ist, sollten Serverdienste im Kontext spezieller Benutzerkonten laufen. Der Grund liegt auf der Hand: Wird ein solcher Dienst durch einen Exploit dazu gebracht, Code eines Angreifers auszuführen, läuft dieser Code unter einem eingeschränkten Benutzerkonto. Wenn der Administrator nicht als root am System arbeitet und auch keine Dienste im Kontext dieses Benutzerkontos laufen lässt, ist eine gewisse Grundsicherheit gewährleistet.

Eine weitere sicherheitsrelevante Eigenschaft von Linux ist das Logging. Mit Logging lässt sich nachvollziehen, was auf dem System vor sich geht und welche Ereignisse bereits stattgefunden haben. Im Falle einer Systemkompromittierung lässt sich so ermitteln, wer sich wann und von welcher IP-Adresse aus eingeloggt hat. Bei Serverproblemen ist es dank der Protokollierung meist möglich herauszufinden, wo das Problem liegt und wie es sich beheben lässt.

Natürlich besteht der erste Schritt eines Angreifers in den meisten Fällen darin, die Logfiles zu manipulieren oder zu löschen. Kommt im Netzwerk aber ein zentraler Logging-Server zum Einsatz, wird dem Angreifer die Arbeit erschwert.

Nicht alle Netzwerkdienste sind sinnvoll

Bei einem schlüssigen Sicherheitskonzept spielen die installierten Netzwerkdienste ebenfalls eine große Rolle. Besonders wichtig ist es, keine unnötigen Services laufen zu lassen und sich stets für die sicherere Variante zu entscheiden. So ist etwa die Nutzung des SSH-Dienstes, der Verschlüsselungsalgorithmen nutzt, dem Einsatz des betagten Telnet-Services vorzuziehen. Auf vielen Systemen finden sich die folgenden Dienste, obwohl sie in der Praxis auf Serversystemen kaum eine Rolle spielen.

Neben den vier exemplarisch vorgestellten Netzwerkdiensten gibt es eine Reihe weiterer Services, die Sie aus Sicherheitsgründen nicht installieren sollten.

Interessante Security-Funktionen

Firewall und Intrusion Detection sind beileibe nicht die einzigen Schutzmechanismen, die Linux Ihnen bietet. Auch mittels Restricted Shels und chroot können Sie die Sicherheit erhöhen.

Sicherheit beginnt bei der Installation

Um ein System abzusichern, sollten Sie sich als Erstes die Frage stellen, welche Komponenten unverzichtbar sind. Schließlich stellen unnütz installierte Programme und unnötig laufende Dienste potenzielle Sicherheitsrisiken dar. Problematisch ist, dass die Installation diverser Linux-Distributionen und BSD-Derivate nicht unbedingt als minimal zu bezeichnen ist. Davon abgesehen gibt es natürlich noch weitere Methoden, um ein System abzusichern.

Vor allem bei Serversystemen spielt diese Absicherung eine große Rolle. Dabei sollten Sie auf drei Einsatzgebiete achten.

Regelmäßige Updates sind wichtig

Eine Update-Policy ist für die Sicherheit der Serversysteme extrem wichtig. Zwar lässt sich ein Webserver durch Firewalls absichern, auf die grundlegende Funktionalität ? eben den angebotenen Serverdienst ? kann aber von außen nach wie vor zugegriffen werden. Und ist die dort laufende Software nicht mehr aktuell oder werden signifikante Sicherheitslücken bekannt, sind Dienst, Rechner und damit das gesamte Netzwerk angreifbar.

Never change a running system ? diese Devise befolgen viele Administratoren. Allerdings vergessen sie, dass sich dieser Grundsatz auf die Hardware beschränkt. Im Zusammenhang mit dem Betriebssystem und Sicherheits-Updates ist das Gegenteil der Fall. Denn auch in Bezug auf Kommandozeilen-Tools kommt es bei Servern auf Minimalität und Aktualität an.

Bringt etwa ein Angreifer den Webserver, der als Benutzer httpd läuft, durch eine Sicherheitslücke dazu, eingeschleusten Code auszuführen, kann er eine Shell auf dem Serversystem starten. Diese Shell läuft nun unter den Rechten des Webservers ? als httpd. Weil dies dem Angreifer aber keinen großen Spielraum gibt, wird er früher oder später nach lokalen Sicherheitslücken suchen ? als Grundlage dienen alle Tools, die er auf dem Server findet. Nachinstallieren kann der Hacker zu diesem Zeitpunkt aber nichts, was ihm Root-Rechte verschaffen würde.

Problematisch bei Updates ist, dass hinterher die Gefahr besteht, dass etwas nicht funktioniert. Daher sollten Updates ? zumindest im Sinne neuer Programmversionen ? nicht automatisch installiert werden, auch wenn einige Linux-Distributionen so eine Funktion anbieten.

Niemals ohne Firewall

Der mit Abstand wichtigste Schutzmechanismus, der Desktop-Rechner und Serversysteme abschottet, ist die Firewall. Ganz gleich, ob Software oder Hardware ? Sinn und Zweck einer Firewall ist es, den Zugriff auf ein Rechnersystem beziehungsweise ein ganzes Netzwerk zu beschränken.

In der Praxis hat sich gezeigt, dass es besser ist, die Firewall dahingehend zu konfigurieren, dass ausschließlich die vom Administrator genehmigten Zugriffe erlaubt sind. Alle anderen Zugriffe blockt die Firewall rigoros ab. Dieses Prinzip wird als "Default Deny" bezeichnet. Zwei verschiedene Funktionsweisen haben sich im Zusammenhang mit Firewalls durchgesetzt: Paketfilter- und Personal-Firewalls.

Der erstgenannte Firewalltyp filtert, wie es der Name schon sagt, die im Netzwerk übertragenen TCP/IP-Pakete. Dazu arbeitet die Paketfilter-Firewall typischerweise als Gateway und untersucht die weitergeleitete oder für sie selbst bestimmte Kommunikation nach bestimmten Regeln, dem so genannten Ruleset. Die Regeln (siehe Kasten "Grundlegende Firewall-Regeln") einer solchen Firewall sind typischerweise nach dem Default-Deny-Prinzip aufgebaut.

Personal-Firewalls sind das, was in der Windows-Welt als Desktop-Firewall bekannt ist. Der Anwender installiert ein Programm, dessen Konfigurationsmöglichkeiten sich ? überspitzt ausgedrückt ? in der Wahl der Sicherheitsstufe erschöpfen. Der wichtigste Unterschied zur Paketfilter-Firewall: Eine Personal-Firewall schützt einen einzelnen Rechner eines Netzwerks auf Applikationsebene.

Will eine Anwendung mit dem Internet oder dem Netzwerk Daten austauschen, weist die Software den Nutzer darauf hin und fragt, ob diese Kontaktaufnahme erlaubt werden soll. Dies zeigt, dass eine solche Firewall auf einer anderen OSI-Ebene arbeitet als die Paketfilter. Auch blocken viele Personal-Firewalls grundsätzlich alle eingehenden Verbindungen ohne Rückfrage, da eine Workstation in den seltensten Fällen als Server fungiert.

Grundlegende Firewall-Regeln

Wie bereits erwähnt, sind die Regeln einer Firewall nach dem Default-Deny-Prinzip ? ähnlich dem folgenden Schema ? aufgebaut:

Werden die Regeln nun von oben nach unten abgearbeitet, wird die Catch-all-Regel genau dann aktiv, wenn keine vorherige Regel zutreffend ist. Dieser Traffic ist also nicht explizit erlaubt und wird durch diese Regel »aufgefangen« und blockiert.

Firewall unter Linux: netfilter/iptables

Damit ein Betriebssystem eine Paketfilter-Firewall unterstützen kann, muss der Kernel über die entsprechenden Funktionen verfügen. Diese Schnittstellen sind unter Linux als netfilter bekannt. Das entsprechende Frontend für den Userspace ist iptables. Mit dem iptables-Tool werden im Userspace nach einem definierten Format die Firewallregeln festgelegt. Diese werden dann über das netfilter-Interface im Kernel aktiviert. Ein iptables-Aufruf setzt sich ? vereinfacht ausgedrückt ? aus folgenden Komponenten zusammen:

Mehr Infos

Dieser Artikel stammt auszugsweise aus "Linux ? Das distributionsunabhängige Handbuch", das bei Galileo Computing unter der ISBN 978-3-8362-1090-4 für 40 Euro erschienen ist. Auf 1117 Seiten führen die Autoren in die Linux-Grundlagen und die Arbeitsweise des Systems ein und geben wertvolle Praxistipps rund um das Thema Sicherheit. Weitere Infos erhalten Sie unter www.galileocomputing.de/1579.

Dieser Beitrag stammt von der COMPUTERWOCHE-Schwesterpublikation www.pcwelt.de.