Website-Suche

10 nützliche Sudoers-Konfigurationen zum Festlegen von „sudo“ unter Linux


Unter Linux und anderen Unix-ähnlichen Betriebssystemen kann nur der Root-Benutzer alle Befehle ausführen und bestimmte kritische Vorgänge auf dem System ausführen, z. B. installieren und aktualisieren, Pakete entfernen, Benutzer und Gruppen erstellen und wichtige Systeme ändern Konfigurationsdateien usw.

Allerdings kann ein Systemadministrator, der die Rolle des Root-Benutzers übernimmt, anderen normalen Systembenutzern mithilfe des Befehls sudo und einiger Konfigurationen gestatten, einige Befehle auszuführen und eine Reihe wichtiger Systemvorgänge auszuführen, einschließlich der oben genannten.

Alternativ kann der Systemadministrator das Root-Benutzerkennwort weitergeben (was keine empfohlene Methode ist), sodass normale Systembenutzer über den Befehl su Zugriff auf das Root-Benutzerkonto haben.

sudo ermöglicht einem berechtigten Benutzer, einen Befehl als Root (oder ein anderer Benutzer) auszuführen, wie in der Sicherheitsrichtlinie festgelegt:

  1. Es liest und analysiert /etc/sudoers, sucht nach dem aufrufenden Benutzer und seinen Berechtigungen,
  2. fordert dann den aufrufenden Benutzer zur Eingabe eines Passworts auf (normalerweise das Passwort des Benutzers, es kann aber auch das Passwort des Zielbenutzers sein. Oder es kann mit dem Tag NOPASSWD übersprungen werden).
  3. Danach erstellt sudo einen untergeordneten Prozess, in dem es setuid() aufruft, um zum Zielbenutzer zu wechseln
  4. Als nächstes führt es eine Shell oder den Befehl aus, der im obigen untergeordneten Prozess als Argumente angegeben wurde.

Nachfolgend finden Sie zehn /etc/sudoers-Dateikonfigurationen, um das Verhalten des sudo-Befehls mithilfe von Standardeinstellungen-Einträgen zu ändern.

sudo cat /etc/sudoers
#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Arten von Standardeinträgen

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Im Rahmen dieses Leitfadens beschränken wir uns auf die erste Art von Standardeinstellungen in den folgenden Formularen. Parameter können Flags, Ganzzahlwerte, Zeichenfolgen oder Listen sein.

Beachten Sie, dass Flags implizit boolesch sind und mit dem Operator '!' deaktiviert werden können. Listen haben außerdem zwei zusätzliche Zuweisungsoperatoren: += (zur Liste hinzufügen) und -= (aus der Liste entfernen).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Legen Sie einen sicheren Pfad fest

Dies ist der Pfad, der für jeden mit sudo ausgeführten Befehl verwendet wird. Er hat zwei Bedeutungen:

  1. Wird verwendet, wenn ein Systemadministrator nicht darauf vertraut, dass Sudo-Benutzer über eine sichere PATH-Umgebungsvariable verfügen
  2. Um „Root-Pfad“ und „Benutzerpfad“ zu trennen, sind nur Benutzer, die durch exempt_group definiert sind, von dieser Einstellung nicht betroffen.

Um es festzulegen, fügen Sie die Zeile hinzu:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Aktivieren Sie sudo für die TTY-Benutzeranmeldesitzung

Damit sudo von einem echten tty aufgerufen werden kann, jedoch nicht über Methoden wie cron- oder cgi-bin-Skripte, fügen Sie die Zeile hinzu:

Defaults  requiretty   

3. Führen Sie den Sudo-Befehl mit einem pty aus

In einigen Fällen können Angreifer mit sudo ein Schadprogramm (z. B. einen Virus oder eine Malware) ausführen, wodurch wiederum ein Hintergrundprozess abgezweigt wird, der auf dem Endgerät des Benutzers verbleibt, selbst wenn die Ausführung des Hauptprogramms abgeschlossen ist.

Um ein solches Szenario zu vermeiden, können Sie sudo mithilfe des Parameters use_pty so konfigurieren, dass andere Befehle nur von einem psuedo-pty ausgeführt werden, unabhängig davon, ob die E/A-Protokollierung aktiviert ist oder nicht folgt:

Defaults  use_pty

4. Erstellen Sie eine Sudo-Protokolldatei

Standardmäßig protokolliert sudo über syslog(3). Um jedoch eine benutzerdefinierte Protokolldatei anzugeben, verwenden Sie den Parameter logfile wie folgt:

Defaults  logfile="/var/log/sudo.log"

Um den Hostnamen und das vierstellige Jahr in der benutzerdefinierten Protokolldatei zu protokollieren, verwenden Sie die Parameter log_host bzw. log_year wie folgt:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Unten finden Sie ein Beispiel für eine benutzerdefinierte Sudo-Protokolldatei:

5. Protokollieren Sie die Eingabe/Ausgabe des Sudo-Befehls

Die Parameter log_input und log_output ermöglichen es sudo, einen Befehl in Pseudo-TTY auszuführen und alle Benutzereingaben und alle an den Bildschirm gesendeten Ausgaben zu protokollieren.

Das Standard-E/A-Protokollverzeichnis ist /var/log/sudo-io. Wenn eine Sitzungssequenznummer vorhanden ist, wird diese in diesem Verzeichnis gespeichert. Sie können ein benutzerdefiniertes Verzeichnis über den Parameter iolog_dir angeben.

Defaults   log_input, log_output

Es werden einige Escape-Sequenzen unterstützt, z. B. %{seq}, die zu einer monoton steigenden Basis-36-Sequenznummer erweitert werden, z. B. 000001, wobei alle zwei Ziffern zur Bildung eines neuen Verzeichnisses verwendet werden, z. B. 00/00/01 wie im folgenden Beispiel:

cd /var/log/sudo-io/
ls
cd  00/00/01
ls
cat log

Sie können die restlichen Dateien in diesem Verzeichnis mit dem Befehl cat anzeigen.

6. Vortrag für Sudo-Benutzer

Um Sudo-Benutzer über die Passwortnutzung im System zu unterrichten, verwenden Sie den Parameter lecture wie unten.

Es gibt 3 mögliche Werte:

  1. immer – immer einen Benutzer belehren.
  2. Einmal – belehren Sie einen Benutzer nur, wenn er zum ersten Mal den Sudo-Befehl ausführt (dies wird verwendet, wenn kein Wert angegeben ist).
  3. niemals – niemals den Benutzer belehren.
 
Defaults  lecture="always"

Darüber hinaus können Sie mit dem Parameter lecture_file eine benutzerdefinierte Vorlesungsdatei festlegen. Geben Sie die entsprechende Nachricht in die Datei ein:

Defaults  lecture_file="/path/to/file"

7. Benutzerdefinierte Nachricht anzeigen, wenn Sie ein falsches Sudo-Passwort eingeben

Wenn ein Benutzer ein falsches Passwort eingibt, wird eine bestimmte Meldung in der Befehlszeile angezeigt. Die Standardnachricht lautet „Entschuldigung, versuchen Sie es erneut“. Sie können die Nachricht mithilfe des Parameters badpass_message wie folgt ändern:

Defaults  badpass_message="Password is wrong, please try again"

8. Erhöhen Sie das Limit für sudo-Passwortversuche

Der Parameter passwd_tries wird verwendet, um anzugeben, wie oft ein Benutzer versuchen kann, ein Passwort einzugeben.

Der Standardwert ist 3:

Defaults   passwd_tries=5 

Um mit dem Parameter passwd_timeout ein Passwort-Timeout festzulegen (Standard ist 5 Minuten), fügen Sie die folgende Zeile hinzu:

Defaults   passwd_timeout=2

9. Lassen Sie sich von Sudo beleidigen, wenn Sie ein falsches Passwort eingeben

Falls ein Benutzer ein falsches Passwort eingibt, zeigt sudo Beleidigungen auf dem Terminal mit dem Parameter „insults“ an. Dadurch wird der Parameter badpass_message automatisch deaktiviert.

Defaults  insults 

Weiterlesen: Lassen Sie sich von Sudo beleidigen, wenn Sie ein falsches Passwort eingeben

10. Erfahren Sie mehr über Sudo-Konfigurationen

Darüber hinaus können Sie weitere sudo-Befehlskonfigurationen erfahren, indem Sie Folgendes lesen: Unterschied zwischen su und sudo und So konfigurieren Sie sudo unter Linux.

Das ist es! Über den Kommentarbereich unten können Sie andere nützliche sudo-Befehlskonfigurationen oder Tricks und Tipps mit Linux-Benutzern teilen.