Website-Suche

10 nützliche sudoers-Konfigurationen zum Setzen von 'sudo' in 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, Entfernen von Paketen, Erstellen von Benutzern und Gruppen, Ändern wichtiger Systemkonfigurationsdateien und so weiter.

Ein Systemadministrator, der die Rolle des Root-Benutzers übernimmt, kann jedoch anderen normalen Systembenutzern mit Hilfe des Befehls sudo und einiger Konfigurationen erlauben, einige Befehle auszuführen sowie eine Reihe wichtiger Systemoperationen durchzuführen, einschließlich der oben erwähnten.

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

sudo ermöglicht es einem autorisierten Benutzer, einen Befehl als root (oder ein anderer Benutzer) auszuführen, wie in der Sicherheitsrichtlinie angegeben:

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

Im Folgenden finden Sie zehn /etc/sudoers-Dateikonfigurationen, um das Verhalten des sudo-Befehls mithilfe von Standardeinträ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

Für den Umfang dieses Leitfadens werden wir uns auf die erste Art von Standardeinstellungen in den folgenden Formularen beschränken. Bei den Parametern kann es sich um Flags, ganzzahlige Werte, Zeichenfolgen oder Listen handeln.

Sie sollten beachten, dass Flags implizit boolesch sind und mit dem Operator '!' deaktiviert werden können, und Listen haben zwei zusätzliche Zuweisungsoperatoren, += (zur Liste hinzufügen) und -= (aus 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 Befehl verwendet wird, der mit sudo ausgeführt wird, er hat zwei Bedeutungen:

  1. Wird verwendet, wenn ein Systemadministrator sudo-Benutzern nicht vertraut, dass sie über eine sichere PATH-Umgebungsvariable verfügen
  2. Um "Root-Pfad" und "Benutzerpfad" zu trennen, sind nur Benutzer, die von exempt_group definiert wurden, 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 in der TTY-Benutzeranmeldesitzung

Um zu ermöglichen, dass sudo von einem echten tty aus aufgerufen werden kann, aber 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 ein bösartiges Programm (z. B. einen Virus oder eine Malware) mithilfe von sudo ausführen, wodurch wiederum ein Hintergrundprozess geforkt wird, der auch dann auf dem Endgerät des Benutzers verbleibt, wenn die Ausführung des Hauptprogramms abgeschlossen ist.

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

Defaults  use_pty

4. Erstellen Sie eine Sudo-Protokolldatei

Standardmäßig meldet sich sudo über syslog(3) an. 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"

Im Folgenden finden Sie ein Beispiel für eine benutzerdefinierte sudo-Protokolldatei:

5. Protokollieren Sie die Ein-/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 Ausgaben, die rezeptiv an den Bildschirm gesendet werden, zu protokollieren.

Das Standardverzeichnis für das E/A-Protokoll ist /var/log/sudo-io, und 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, wie z. B. %{seq}, die sich zu einer monoton ansteigenden Sequenznummer zur Basis 36 erweitert, wie z. B. 000001, bei der alle zwei Ziffern verwendet werden, um ein neues Verzeichnis zu bilden, 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. Vorlesung Sudo-Benutzer

Um sudo-Benutzer über die Verwendung von Passwörtern auf dem System zu unterrichten, verwenden Sie den lecture-Parameter wie folgt.

Es gibt 3 mögliche Werte:

  1. Immer – immer belehren Sie einen Benutzer.
  2. einmal – belehrt einen Benutzer nur beim ersten Ausführen des sudo-Befehls (dieser wird verwendet, wenn kein Wert angegeben ist)
  3. Niemals – belehren Sie niemals den Benutzer.
 
Defaults  lecture="always"

Darüber hinaus können Sie mit dem Parameter lecture_file eine benutzerdefinierte Lektionsdatei festlegen und die entsprechende Meldung in die Datei eingeben:

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 auf der Befehlszeile angezeigt. Die Standardmeldung lautet "Entschuldigung, versuchen Sie es erneut", Sie können die Nachricht mit dem Parameter 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 Kennwort einzugeben.

Der Standardwert ist 3:

Defaults   passwd_tries=5 

Um ein Passwort-Timeout (Standard ist 5 Minuten) mit passwd_timeout Parameter festzulegen, 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 

Lesen Sie mehr: 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 lesen, indem Sie lesen: Unterschied zwischen su und sudo und So konfigurieren Sie sudo unter Linux.

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

Verwandte Artikel: