Alle Linux-Benutzer dürften heutzutage mit sudo vertraut sein Befehl (steht für „Superuser do“). Wir müssen sudo populär machen, indem wir Benutzer dazu erzwingen, anstatt sie zu ermutigen, su zu verwenden, um Root-Rechte für die Ausführung von Verwaltungsaufgaben zu erhalten. Aber es gibt noch viel mehr, was Sie über sudo wissen müssen. Mit Hilfe von sudo können Sie Befehle ganz einfach als jeder andere Benutzer ausführen, nicht nur als Root-Benutzer! Wenn sudo nicht korrekt verwaltet wird, ist es fast noch schlimmer, als einfach Root-Anmeldeinformationen zu teilen, da es ein falsches Sicherheitsgefühl vermittelt. Sehen wir uns einige der Best Practices an, um den Systemzugriff mit sudo zu steuern und gleichzeitig Benutzern zu ermöglichen, produktiv zu sein. Machen Sie sich mit der Verwendung von sudo vertraut und befolgen Sie diese Best Practices, dann können Sie sich entspannen und jeden Bissen Ihres Sandwichs genießen.
Hinweis:Sie müssen das verwenden visudo Befehl zum Bearbeiten der Datei /etc/sudoers. Seien Sie vorsichtig beim Bearbeiten!
1. Benutzern mit sudo keinen unbegrenzten Zugriff gewähren
Konfigurieren Sie sudo nicht so, dass Benutzer zu root oder einem anderen Konto wechseln können. Versuchen Sie stattdessen, sudo so zu konfigurieren, dass Benutzer bestimmte Befehle als die Benutzer ausführen können, als die sie arbeiten müssen.
Zum Beispiel:Ein Benutzer muss eine Software installieren. Erlauben Sie ihnen, nur RPM oder APT oder YUM als Root auszuführen, ohne auch nur zum Root-Benutzer zu wechseln, wie unten gezeigt:
peter ALL =(ALL) PASSWD : /usr/bin/apt-get, /usr/bin/yum, /bin/rpm
Dies würde peter erlauben sudo apt-get, sudo yum und sudo rpm ohne Passwort ausführen, aber keine anderen Befehle zulassen!
2. Gewähren Sie einem sudo-Benutzer nicht ALLE Root-Rechte
Verwenden Sie nicht ALL, während Sie einem sudo-Benutzer Zugriffsberechtigungen erteilen. Dies ist einer der häufigsten Fehler, den Administratoren begehen würden. Dadurch können Benutzer den Befehl su verwenden, um sich selbst permanente Root-Privilegien zu gewähren, wodurch die Befehlsprotokollierungsfunktionen von sudo umgangen werden.
peter ALL=(ALL:ALL) ALL
Ein besserer Weg ist, Zugriff auf bestimmte Programmdateien zu gewähren, zB für:Benutzer peter würde Zugriff auf alle Programmdateien in den Verzeichnissen /sbin/ und /usr/sbin erhalten, plus den Befehl /opt/oracle/check.pl.
Hinweis:Ein abschließender Schrägstrich (/) ist erforderlich, um einen Verzeichnisspeicherort anzugeben
peter ALL=(ALL) PASSWD: /sbin/, /usr/sbin, /opt/oracle/check.pl
3. Gewähren Sie Root-Berechtigungen keinen uneingeschränkten passwortlosen Zugriff
Stellen Sie sich zum Beispiel vor, ein Eindringling verschafft sich Zugriff auf ein Benutzerkonto, das passwortlosen sudo-Zugriff auf Root-Rechte hat. Er konnte Dinge tun, an die Sie nicht einmal denken konnten! Gewähren Sie einem Benutzer stattdessen Zugriff auf Root-Rechte mit Passwörtern (sein eigenes Passwort).
peter ALL=(ALL) PASSWD:ALL
Dies würde dem Benutzer peter erlauben jedes Mal, wenn er sudo verwendet, um Root-Rechte zu erlangen, ein Passwort einzugeben.
4. Verwenden Sie die include-Direktive für bestimmte sudo-Konfigurationen
In Umgebungen großer Unternehmen ist es immer besser, zusätzlich zu lokalen Konfigurationen spezifische sudo-Konfigurationen basierend auf Anwendungen beizubehalten. Zum Beispiel:Wenn Sie denselben Satz von Anweisungen für die Verwaltung von Apache und MySQL einbinden möchten, können Sie dies in eine separate sudo.mysql aufteilen Datei und verwenden Sie eine include-Direktive, um sie aus der Haupt-sudoers-Datei aufzurufen.
#include /etc/sudo.mysql
5. Gewähren Sie Sudo-Zugriff eher Gruppen als einzelnen Benutzern
Zum Beispiel:Haben Sie eine Administratorgruppe mit Administratorrechten, die die Installation und Aktualisierung von Paketen verwaltet. Auf diese Weise ist es nicht erforderlich, die sudoers-Datei jedes Mal zu bearbeiten, wenn Sie einen neuen Benutzer hinzufügen/entfernen. Stellen Sie einfach sicher, dass Benutzer ordnungsgemäß verwaltet und der Administratorgruppe hinzugefügt/aus ihr entfernt werden.
%admin ALL=(ALL) ALL
Dies erlaubt Personen in der Gruppe admin um alle Befehle auszuführen.
6. Legen Sie ein angemessenes Zeitlimit für sudo
festSudo verwendet die Zeitstempelfunktion, um zu wissen, wann der letzte Sudo-Befehl vom Benutzer ausgeführt wurde. Während dieses Zeitraums kann der Benutzer den Befehl erneut ausführen, ohne auch nur zur Eingabe des Kennworts (des eigenen Kennworts des Benutzers) aufgefordert zu werden. Standardmäßig merkt sich sudo Ihr Passwort für 15 Minuten. Sobald es abgelaufen ist, wird der Benutzer erneut zur Eingabe des Kennworts aufgefordert, um den Befehl erneut auszuführen. Wenn Sie den Standardwert ändern möchten, geben Sie einfach einen Eintrag in sudoers ein. Um beispielsweise den Zeitüberschreitungswert für alle Benutzer bei allen von ihm ausgeführten Befehlen auf 5 Minuten festzulegen, könnten Sie Folgendes verwenden:
Defaults timestamp_timeout=x
wobei x der Timeout-Ablauf in Minuten ist. Wenn Sie 0 (Null) angeben, werden Sie immer nach dem Passwort gefragt. Wenn Sie einen negativen Wert angeben, läuft das Timeout nie ab. Z.B. Standardmäßig timestamp_timeout=5
Wenn Sie für einen bestimmten Benutzer (Peter) festlegen müssen, fügen Sie einfach den folgenden Eintrag in die Sudoers-Datei ein:
Defaults:peter timestamp_timeout=5
Diese Funktion funktioniert nicht, wenn Sie NOPASSWD im Benutzereintrag in sudoers haben.
7. Sperren Sie den Pfad für Binärdateien mit der Anweisung secure_path in sudo
Eine bewährte Vorgehensweise besteht darin, Benutzer auf bestimmte Bereiche zu beschränken und so sicherzustellen, dass Benutzer keine Befehle außerhalb des sicheren_Pfads ausführen können. Verwenden Sie die folgende Direktive in sudoers und geben Sie den secure_path an :
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8. Jede Sudo-Aktivität in einer separaten Datei protokollieren
Standardmäßig werden sudo-Befehle zusammen mit anderen Systemmeldungen in einer Protokolldatei protokolliert. Dies ist für Server nicht akzeptabel, da es eine Reihe von Benutzern geben würde. Konfigurieren Sie sudo so, dass es über eine eigene Protokolldatei verfügt, um einen einfachen Einblick in die Verwendung von sudo und die Aktivitäten der sudoer zu erhalten. Dies hilft natürlich auch dabei, fehlgeschlagene Sudo-Ereignisse im Auge zu behalten.
Defaults logfile=/var/log/sudo.log
Wenn Sie noch mehr haben, fügen Sie bitte die Kommentare unten hinzu.