4.4. Administrative Kontrollen

Für die Verwaltung eines Heim-PCs muss der Benutzer einige Aufgaben als root-Benutzer oder durch effektive root-Berechtigungen durch ein setuid Programm wie sudo oder su ausführen. Ein setuid-Programm arbeitet mit der Benutzer-ID (UID) des Besitzers des Programms, und nicht mit der des Benutzers des Programms, Solche Programme werden durch ein kleines s im Abschnitt Besitzer einer detaillierten Auflistung wie im folgenden Beispiel markiert:

-rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su

Für Systemadministratoren eines Unternehmens muss festgelegt werden, wieviel administrativen Zugang Benutzer innerhalb des Unternehmens zu ihren Computern haben dürfen. Durch ein PAM-Modul mit dem Namen pam_console.so können einige Vorgänge, die normalerweise nur dem Root-Benutzer erlaubt sind, wie z.B. das Rebooten und Mounten externer Medien, dem ersten Benutzer, der sich an der physischen Konsole anmeldet, ermöglicht werden (siehe auch das Kapitel Pluggable Authentication Modules (PAM) im Red Hat Enterprise Linux Referenzhandbuch für weitere Informationen über das pam_console.so-Modul). Andere wichtige Systemadministrations-Aufgaben wie das Ändern von Netzwerkeinstellungen, Konfigurieren einer neuen Maus oder das Mounten von Netzwerkgeräten sind jedoch ohne administrativen Zugang nicht möglich, weswegen Systemadministratoren entscheiden müssen, wieviel administrativen Zugang die Benutzer auf ihrem Netzwerk erhalten sollen.

4.4.1. Root-Zugang erlauben

Sind die Benutzer innerhalb eines Unternehmens vertrauenswürdig und kennen sich mit Computern aus, ist das Vergeben von root-Berechtigungen unter Umständen sinnvoll. Root-Zugang zu erlauben bedeutet, dass kleinere Probleme wie das Hinzufügen von Geräten oder das Konfigurieren von Netzwerkschnittstellen von den einzelnen Benutzern durchgeführt werden kann, und somit Systemadministratoren mehr Zeit für Netzwerksicherheit und andere, wichtige Aufgaben haben.

Auf der anderen Seite kann das Vergeben von Root-Rechten zu Einzelbenutzern zu folgenden Problemen führen (um nur einige zu nennen):

4.4.2. Root-Zugang sperren

Wenn ein Administrator Benutzern keine Root-Berechtigungen aus diesen oder anderen Gründen zuweisen möchte, sollte das Root-Passwort geheim gehalten und Zugang zu Runlevel 1 oder Einzelbenutzermodus durch Passwortschutz für den Bootloader verhindert werden (weitere Informationen finden Sie unter Abschnitt 4.2.2).

Tabelle 4-1 zeigt Methoden, mit denen ein Administrator Anmeldungen als Root verhindern kann:

MethodeBeschreibungBetrifftBetrifft nicht
Ändern der Root-ShellBearbeiten Sie die Datei /etc/passwd und ändern Sie die Shell von /bin/bash zu /sbin/nologin.

Verhindert Zugang zur Root-Shell und zeichnet den Versuch auf.
Die folgenden Programme können nicht mehr auf den Root-Account zugreifen:
· login
· gdm
· kdm
· xdm
· su
· ssh
· scp
· sftp

Programme, die keine Shell benötigen, wie z.B. FTP-ClientsMail Clients und viele setuid-Programme.
Für die folgenden Programme wird der Root-Account nicht gesperrt:
· sudo
· FTP-Clients
· E-Mail Clients

Sperren des Root-Zugangs über ein Konsolengerät (tty).Eine leere /etc/securetty Datei verhindert die Anmeldung als Root für jegliche Geräte, die am Computer angeschlossen sind.

Verhindert den Zugang zum Root-Account über die Konsole oder das Netzwerk. Die folgenden Programme sind für den Zugang zum Root-Account gesperrt:
· login
· gdm
· kdm
· xdm
· Andere Netzwerkservices, die eine tty öffnen

Programme, die sich nicht als Root anmelden, aber administrative Aufgaben durch setuid oder andere Mechanismen ausführen.
Die folgenden Programme werden nicht für den Zugang zum Root-Account gesperrt:
· su
· sudo
· ssh
· scp
· sftp

Deaktivieren von SSH-Logins als RootBearbeiten Sie die Datei /etc/ssh/sshd_config und setzen Sie den PermitRootLogin Parameter auf no.

Verhindert Root-Zugang über die OpenSSH-Toolsuite. Die folgenden Programme sind für den Zugang zum Root-Account gesperrt:
· ssh
· scp
· sftp

Das dies nur die OpenSSH-Toolsuite betrifft, sind keine anderen Programme von dieser Einstellung betroffen.

Mit PAM den Root-Zugang zu Services einschränkenBearbeiten Sie die Datei für den Zielservice im Verzeichnis /etc/pam.d/. Stellen Sie sicher, dass pam_listfile.so für die Authentifizierung erforderlich ist. Weitere Informationen finden Sie unter Abschnitt 4.4.2.4.

Verhindert Root-Zugang zu Netzwerkservices, die PAM berücksichtigen.
Die folgenden Programme sind für den Zugang zum Rot-Account gesperrt:
· FTP-Clients
· E-Mail-Clients
· login
· gdm
· kdm
· xdm
· ssh
· scp
· sftp
· Alle anderen Services, die PAM berücksichtigen

Programme und Services, die PAM nicht berücksichtigen.

Tabelle 4-1. Methoden zum Deaktivieren des Root-Accounts

4.4.2.1. Die Root-Shell deaktivieren

Um zu verhindern, dass sich Benutzer direkt als Root anmelden, kann der Systemadministrator die Shell des Root-Accounts auf /sbin/nologin in der Datei /etc/passwd setzen. Dies verhindert Zugang zum Root-Account über Befehle, die eine Shell benötigen, wie zum Beispiel su oder ssh.

WichtigWichtig
 

Programme, die keinen Zugang zur Shell benötigen, wie z.B. E-Mail-Clients oder der Befehl sudo, können weiterhin auf den Root-Account zugreifen.

4.4.2.2. Root-Anmeldungen deaktivieren

Um den Zugang zum Root-Account noch weiter einzuschränken, können Administratoren Root-Anmeldungen an der Konsole verhindern, in dem sie die Datei /etc/securetty bearbeiten. In dieser Datei werden alle Geräte aufgelistet, auf die der Root-Benutzer zugreifen kann. Existiert die Datei nicht, kann sich der Root-Benutzer durch ein beliebiges Kommunikationsmedium auf dem System anmelden, sei es über eine Konsole oder eine Raw-Netzwerkschnittstelle. Dies stellt ein Risiko dar, da ein Benutzer sich über Telnet am Computer als Root anmelden kann und die Passwörter im Klartext übers Netzwerk versendet. Standardmäßig erlaubt die Red Hat Enterprise Linux-Datei /etc/securetty dem Root-Benutzer nur, sich an der mit dem Computer direkt verbundenen Konsole anzumelden. Um das Anmelden von Root zu verhindern, löschen Sie den Inhalt dieser Datei, indem Sie folgenden Befehl eingeben:

echo > /etc/securetty

WarnungAchtung
 

Eine leere /etc/securetty Datei verhindert nicht, dass der Root-Benutzer sich von außen über die OpenSSH Toolsuite anmeldet, da die Konsole erst nach der Authentifizierung geöffnet wird.

4.4.2.3. Root SSH-Anmeldungen deaktivieren

Um Root-Anmeldungen über das SSH-Protokoll zu verhindern, bearbeiten Sie die Konfigurationsdatei des SSH-Daemons (/etc/ssh/sshd_config). Ändern Sie folgende Zeile:

# PermitRootLogin yes

zu:

 
PermitRootLogin no

4.4.2.4. PAM für Root deaktivieren

PAM ermöglicht durch das /lib/security/pam_listfile.so-Moduleine größere Flexibilität in der Ablehnung bestimmter Accounts. Dies ermöglicht dem Administrator, das Modul an eine Liste von Benutzern zu verweisen, denen die Anmeldung nicht gestattet ist. Unten finden Sie ein Beispiel, wie das Modul für denvsftpd FTP-Server in der /etc/pam.d/vsftpd PAM-Konfigurationsdatei verwendet werden kann (das \ Zeichen am Ende der ersten Zeile im folgenden Beispiel ist nicht nötig, wenn die Direktive auf einer Zeile steht):

auth   required   /lib/security/pam_listfile.so   item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed

Dies weist PAM an, die Datei /etc/vsftpd.ftpusers zu konsultieren und allen hier aufgeführten Benutzern Zugang zum Service zu verbieten. Der Administrator kann den Namen dieser Datei ändern und separate Listen für jeden Service oder eine einzige zentrale Liste für die Zugriffsverweigerung für mehrere Services führen.

Wenn der Administrator den Zugang zu mehreren Services verbieten will, kann eine ähnliche Zeile zum PAM-Konfigurationsservice wie z.B. /etc/pam.d/pop und /etc/pam.d/imap für Mail Clients oder /etc/pam.d/ssh für SSH-Clients hinzugefügt werden.

Weitere Informationen zu PAM finden Sie im Kapitel Pluggable Authentication Modules (PAM) im Red Hat Enterprise Linux Referenzhandbuch.

4.4.3. Root-Zugang beschränken

Anstelle dass der Zugang zum Root-Benutzer vollständig verweigert wird, kann der Administrator Zugang nur über setuid-Programme wie z.B. su oder sudo gewähren.

4.4.3.1. Der Befehl su

Wenn Sie den Befehl su eingeben, wird der Benutzer nach dem Root-Passwort gefragt und erhält, nach der Authentifizierung, einen Root-Shell-Prompt.

Wenn über den Befehl su angemeldet, ist der Benutzer der Root-Benutzer und hat absoluten administrativen Zugang zum System. Zusätzlich dazu ist es dem Benutzer mit Root-Berechtigungen möglich, in einigen Fällen den Befehl su zu verwenden, um sich als ein anderer Benutzer im System anzumelden, ohne nach einem Passwort gefragt zu werden.

Da dieses Programm sehr mächtig ist, sollten Administratoren innerhalb eines Unternehmens den Zugang zu diesem Befehl beschränken.

Einer der einfachsten Wege ist es, Benutzer zur administrativen Gruppe mit dem Namen wheel hinzuzufügen. Hierzu geben Sie den folgenden Befehl als Root ein:

usermod -G wheel <username>

Ersetzen Sie in diesem Befehl <username> mit dem Benutzernamen, der zur wheel-Gruppe hinzugefügt werden soll.

Um für diesen Zweck das User Manager zu verwenden, klicken Sie auf die Schaltfläche Hauptmenü (im Panel) => Systemeinstellungen => Benutzer und Gruppen oder geben Sie den Befehl redhat-config-users an einem Shell-Prompt ein. Wählen Sie den Tab Benutzer wählen Sie den Benutzer aus der Benutzerliste aus und klicken Sie auf Eigenschaften aus dem Menü (oder wählen Sie Datei => Eigenschaften aus dem Pull-Down-Menü).

Wählen Sie dann den Tab Gruppen und klicken Sie auf die wheel-Gruppe, wie in Abbildung 4-2 abgebildet.

Abbildung 4-2. Das Gruppen-Panel

Öffnen Sie als nächstes die PAM-Konfigurationsdatei für su (/etc/pam.d/su) in einem Texteditor und entfernen Sie den Kommentar [#] aus der folgenden Zeile:

auth  required /lib/security/pam_wheel.so use_uid

Hierdurch können nur Mitglieder der administrativen Gruppe wheel das Programm verwenden.

AnmerkungHinweis
 

Der Root-Benutzer ist standardmäßig Teil der wheel-Gruppe.

4.4.3.2. Der Befehlsudo

Der Befehl sudo bietet eine weitere Methode, Benutzern administrativen Zugang zu geben. Wenn ein vertrauenswürdiger Benutzer einem administrativen Befehl den Befehl sudo voranstellt, wird dieser nach seinem Passwort gefragt. Nach der Authentifizierung und vorausgesetzt, dass der Befehl erlaubt ist, wird der administrative Befehl wie von einem Root-Benutzer ausgeführt.

Das Format des sudo-Befehls ist wie folgt:

sudo <command>

Im obigen Beispiel würde <command> durch einen Befehl, der normalerweise für den Root-Benutzer reserviert ist, wie z.B. mount, ersetzt.

WichtigWichtig
 

Alle, die den Befehl sudo ausführen, sollten sicherstellen, dass sie abgemeldet sind, bevor sie sich vom Computer entfernen, da sudoers den Befehl innerhalb von 5 Minuten nochmal ausführen können, ohne nach einem Passwort gefragt zu werden. Diese Einstellung kann in der Konfigurationsdatei /etc/sudoers geändert werden.

Der sudo-Befehl ermöglicht einen höheren Grad an Flexibilität. So können z.B. nur Benutzer, die in der Konfigurationsdatei /etc/sudoers aufgeführt sind, den Befehl sudo ausführen; dieser Befehl wird dann in der Shell des Benutzers ausgeführt, und nicht in der Root-Shell. Dies bedeutet, das die Root-Shell vollständig deaktiviert werden kann, wie in Abschnitt 4.4.2.1 gezeigt.

Der sudo-Befehl liefert auch einen umfangreichen Audit-Trail. Jede erfolgreiche Authentifizierung wird in die Datei /var/log/messages und der ausgeführte Befehl, sowie der Benutzername in die Datei /var/log/secure geschrieben.

Ein weiterer Vorteil des sudo-Befehls ist, dass ein Administrator verschiedenen Benutzern Zugang zu bestimmten Befehlen basierend auf deren Bedürfnissen geben kann.

Administratoren, die die sudo-Konfigurationsdatei /etc/sudoers bearbeiten wollen, sollten den Befehl visudo verwenden.

Um jemandem volle administrative Rechte zu geben, geben Sie visudo ein und fügen Sie eine Zeile ähnlich der folgenden in den Abschnitt für die Benutzerrechte ein:

juan ALL=(ALL) ALL

In diesem Beispiel kann dann der Benutzer juan den Befehl sudo von jedem Host aus verwenden und jeden Befehl ausführen.

Das untenstehende Beispiel zeigt die mögliche Granularität bei der Konfiguration von sudo:

%users  localhost=/sbin/shutdown -h now

In diesem Beispiel kann jeder Benutzer den Befehl /sbin/shutdown -h now ausführen, solange dieser von der Konsole aus eingegeben wird.

Die man-Seite zu sudoers enthält eine detaillierte Liste aller Optionen für diese Datei.