Zugriffskontrolle auf Dienste

Es ist von größter Wichtigkeit, Ihr Red Hat Linux-System gegen unberechtigte Eingriffe zu sichern. Eine Möglichkeit, die Sicherheit in Ihrem System zu gewährleisten, besteht darin, den Zugriff auf die verschiedenen Systemdienste sorgfältig zu verwalten. Möglicherweise ist es erforderlich, dass Ihr System den freien Zugriff auf bestimmte Dienste (z.B. httpd, falls Sie mit einem Webserver arbeiten) zulässt. Dienste, die Sie nicht zur Verfügung stellen müssen, sollten Sie dagegen ausschalten — auf diese Weise minimiert sich das Risiko, dass Bugs für Angriffe auf Ihr System genutzt werden.

Es gibt verschiedene Methoden, um den Zugriff auf Systemdienste zu verwalten. Für welche Methode Sie sich entscheiden, hängt von dem jeweiligen Dienst, Ihrer Systemkonfiguration und Ihrer Erfahrung mit Linux ab.

Am einfachsten verweigern Sie den Zugriff auf einen Dienst, indem Sie den Dienst ausschalten. Die von xinetd verwalteten Dienste (an späterer Stelle in diesem Abschnitt beschrieben) als auch die Dienste in der /etc/rc.d-Hierarchie können dafür konfiguriert werden, entweder mit Hilfe des Dienstprogramms ntsysv oder unter Verwendung von chkconfig zu starten und zu stoppen. Wahrscheinlich wird Ihnen die Verwendung dieser Tools im Vergleich zu den zur Verfügung stehenden folgenden Alternativen leichter fallen — manuelles Bearbeiten der zahlreichen symbolischen Links, die sich in den Verzeichnissen unter /etc/rc.d befinden, oder Bearbeiten der xinetd-Konfigurationsdateien in /etc/xinetd.d.

ntsysv stellt eine einfache Schnittstelle zum Aktivieren und Deaktivieren von Diensten zur Verfügung. Sie können ntsysv dazu verwenden, um einen von xinetd verwalteten Dienst ein- oder auszuschalten. Außerdem können Sie mit ntsysv einen Dienst in der /etc/rc.d-Hierarchie starten oder stoppen. In diesem Fall wird das aktuelle Runlevel durch den (optionslosen) Befehl ntsysv konfiguriert. Falls Sie ein anderes Runlevel konfigurieren möchten, müssen Sie den entsprechenden Befehl dazu eingeben, z.B.: ntsysv --levels 016. (In diesem Beispiel stellen Sie die Dienste für die Runlevel 0, 1 und 6 ein.)

Die ntsysv-Schnittstelle funktioniert wie das Installationsprogramm im Textmodus. Verwenden Sie die Nach-oben- und die Nach-unten-Tasten, um in der Liste nach oben und nach unten zu blättern. Mit der Leertaste können Sie die einzelnen Dienste auswählen/abwählen und die Buttons Ok und Abbrechen "betätigen". Um zwischen der Liste mit den Diensten und den Buttons Ok und Abbrechen zu wechseln, drücken Sie die Tabulatortaste. Ein * zeigt an, dass ein Dienst eingeschaltet ist. Durch Drücken der Taste F1 wird eine kurze Beschreibung zu jedem Dienst eingeblendet.

chkconfig kann ebenfalls zum Aktivieren und Deaktivieren von Diensten verwendet werden. Wenn Sie den Befehl chkconfig --list verwenden, wird Ihnen eine Liste mit Systemdiensten angezeigt und die Information, ob sie in den Runlevels 0-6 gestartet (eingeschaltet) oder gestoppt (ausgeschaltet) wurden (am Ende der Liste erscheint ein Abschnitt für die von xinetd verwalteten Dienste, die an einer späteren Stelle in diesem Abschnitt beschrieben werden).

Außerdem können Sie mit chkconfig feststellen, ob ein bestimmter Dienst ausgeführt wird. Der folgende Befehl überprüft z.B. den Dämon finger:

$ chkconfig --list finger
finger          on

Wie oben gezeigt, ist finger im aktuellen Runlevel eingeschaltet.

Wenn Sie chkconfig --list verwenden, um einen Dienst in /etc/rc.d abzufragen, werden Ihnen die Einstellungen des Dienstes für jedes Runlevel angezeigt. Zum Beispiel:

$ /sbin/chkconfig --list anacron
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Doch was noch wichtiger ist: Mit chkconfig können Sie einstellen, ob ein Dienst in einem bestimmten Runlevel gestartet werden soll oder nicht. Wenn z.B. nscd in den Runlevels 3, 4 und 5 ausgeschaltet werden soll, verwenden Sie den Befehl:

chkconfig --level 345 nscd off

Weitere Informationen darüber, wie Sie chkconfig verwenden können, finden Sie in der entsprechenden man-Seite.

xinetd ist eine weitere Möglichkeit, um den Zugriff auf Internet-Dienste zu kontrollieren, und stellt eine sichere Alternative zu inetd dar. xinetd erhält die Systemressourcen, bietet Zugriffskontrolle und Anmeldefunktionen und kann dazu verwendet werden, Server zu starten, die einem speziellen Zweck dienen. xinetd kann dazu verwendet werden, den Zugriff nur auf bestimmte Hosts zu gewähren, den Zugriff auf bestimmte Hosts zu verweigern, den Zugriff auf nur einen Dienst und nur zu einer bestimmten Zeit zuzulassen, die Zahl der eingehenden Verbindungen und/oder die durch die Verbindungen erzeugte Auslastung zu begrenzen etc.

xinetd wird konstant ausgeführt und fragt alle Ports der von ihm verwalteten Dienste ab. Sobald für einen der von ihm verwalteten Dienste eine Verbindungsanforderung eingeht, startet xinetd den für diesen Dienst geeigneten Server.

Die Konfigurationsdatei für xinetd ist /etc/xinetd.conf; doch wenn Sie die Datei überprüfen, werden Sie feststellen, dass sie nur einige wenige Standardeinstellungen und eine Anweisung zum Einfügen des Verzeichnisses /etc/xinetd.d enthält. Die Dateien innerhalb des Verzeichnisses /etc/xinetd.d enthalten die Konfigurationsoptionen für jeden der von xinetd verwalteten Dienste, so dass Sie diese Dateien bearbeiten müssen, um xinetd zu konfigurieren.

Die man-Seite xinetd (8) und die man-Seite xinetd.conf (8) enthalten genaue Anweisungen darüber, wie Sie die Dateien in /etc/xinetd.d einrichten. Eine andere gute Informationsquelle ist die xinetd-Web-Seite, die Sie unter http://www.xinetd.org/ finden.

Viele UNIX-Systemadministratoren verwenden TCP-Wrapper, um den Zugriff auf bestimmte Netzwerkdienste zu verwalten. Alle von xinetd verwalteten Netzwerkdienste (sowie jedes Programm mit integrierter Unterstützung für libwrap) kann TCP-Wrapper verwenden, um den Zugriff zu verwalten. xinetd kann die Dateien /etc/hosts.allow und /etc/hosts.deny verwenden, um den Zugriff auf die Systemdienste zu konfigurieren. Falls Sie TCP-Wrapper verwenden möchten, finden Sie weitere Informationen hierzu in den man-Seiten hosts_access (5).

Außerdem können Sie den Zugriff auf Systemdienste verwalten, indem Sie mit ipchains eine IP-Firewall konfigurieren. Bedenken Sie bitte: Falls Sie zum ersten Mal mit Linux arbeiten und noch nicht mit dem Programm vertraut sind, ist ipchains möglicherweise nicht die beste Lösung für Sie. Das Einrichten von ipchains kann kompliziert sein und sollte daher am besten nur von erfahrenen UNIX/Linux-Systemadministratoren ausgeführt werden.

Andererseits bietet ipchains den Vorteil der Flexibilität. Wenn Sie beispielsweise eine benutzerdefiniert gestaltete Lösung benötigen, bei der nur bestimmten Rechnern der Zugriff auf bestimmte Dienste gewährt wird, dann kann ipchains Ihnen diese Lösung bieten. In der Publikation Linux IPCHAINS-HOWTO, die unter http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html zur Verfügung steht, finden Sie weitere Informationen zu ipchains. Außerdem ist Linux IPCHAINS-HOWTO auch auf der Dokumentations-CD enthalten.

Wenn Sie auf der Suche nach einem Dienstprogramm sind, das die allgemeinen Zugriffsregeln für Ihren Computer zu Hause festlegt, und/oder wenn Sie noch nicht so sehr mit Linux vertraut sind, sollten Sie als Alternative das Dienstprogramm gnome-lokkit ausprobieren. Bei gnome-lokkit handelt es sich um ein Dienstprogramm mit grafischer Benutzeroberfläche, das Ihnen verschiedene Fragen darüber stellt, wie Sie Ihren Computer verwenden möchten. Anhand Ihrer Antworten konfiguriert gnome-lokkit dann eine einfache Firewall für Sie.