Red Hat Enterprise Linux 3: Sicherheitshandbuch | ||
---|---|---|
Zurück | Kapitel 4. Workstation-Sicherheit | Nach vorne |
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.
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):
Fehlkonfigurationen — Benutzer mit root-Rechten, können ihre Computer falsch konfigurieren und benötigen dann Hilfe, oder schlimmer noch, können Sicherheitslöcher öffnen, ohne dies zu merken.
Unsichere Services — Benutzer mit Root-Berechtigungen können unsichere Services, wie zum Beispiel FTP oder Telnet auf ihrem Computer laufen lassen, und somit Benutzernamen und Passwörter einem Risiko aussetzen, da diese im Klartext über das Netzwerk verschickt werden.
E-Mail-Anhänge als Root ansehen — Wenn auch selten gibt es doch E-Mail-Viren, die Linux betreffen. Dies wird jedoch nur zum Problem, wenn sie als Root ausgeführt werden.
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:
Methode | Beschreibung | Betrifft | Betrifft nicht | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ändern der Root-Shell | Bearbeiten Sie die Datei /etc/passwd und ändern Sie die Shell von /bin/bash zu /sbin/nologin. |
|
| |||||||||||||||
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. |
|
| |||||||||||||||
Deaktivieren von SSH-Logins als Root | Bearbeiten Sie die Datei /etc/ssh/sshd_config und setzen Sie den PermitRootLogin Parameter auf no. |
|
| |||||||||||||||
Mit PAM den Root-Zugang zu Services einschränken | Bearbeiten 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. |
|
|
Tabelle 4-1. Methoden zum Deaktivieren des Root-Accounts
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.
![]() | Wichtig |
---|---|
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. |
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 |
![]() | Achtung |
---|---|
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. |
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 |
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.
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.
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.
Öffnen Sie als nächstes die PAM-Konfigurationsdatei für su (/etc/pam.d/su) in einem Texteditor und entfernen Sie den Kommentar
auth required /lib/security/pam_wheel.so use_uid |
Hierdurch können nur Mitglieder der administrativen Gruppe wheel das Programm verwenden.
![]() | Hinweis |
---|---|
Der Root-Benutzer ist standardmäßig Teil der wheel-Gruppe. |
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.
![]() | Wichtig |
---|---|
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.
Zurück | Zum Anfang | Nach vorne |
Passwortsicherheit | Nach oben | Verfügbare Netzwerkservices |