10 nützliche Sudoers-Konfigurationen für die Einstellung von ‘sudo’ in Linux

In Linux und anderen Unix-ähnlichen Betriebssystemen kann nur der Root-Benutzer alle Befehle ausführen und bestimmte kritische Operationen am System durchführen, wie z. B. Pakete installieren und aktualisieren, Pakete entfernen, Benutzer und Gruppen erstellen, wichtige Systemkonfigurationsdateien ändern und so weiter.

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

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

Sudo ermöglicht einem berechtigten Benutzer die Ausführung eines Befehls als Root (oder eines anderen Benutzers), wie in der Sicherheitsrichtlinie angegeben:

  1. Es liest und analysiert /etc/sudoers, sucht den aufrufenden Benutzer und seine Berechtigungen,
  2. dann fordert es den aufrufenden Benutzer zur Eingabe eines Passworts auf (normalerweise das Passwort des Benutzers, kann jedoch auch das Passwort des Zielbenutzers sein. Oder es kann mit dem NOPASSWD-Tag übersprungen werden),
  3. nachdem das geschehen ist, erstellt sudo einen Kindprozess, in dem es setuid() aufruft, um zum Zielbenutzer zu wechseln
  4. dann führt es eine Shell oder den als Argumente angegebenen Befehl im obigen Kindprozess aus.

Unten sind zehn /etc/sudoers Dateikonfigurationen zur Änderung des Verhaltens des sudo Befehls unter Verwendung von Defaults Einträgen.

$ sudo cat /etc/sudoers
/etc/sudoers File
#
# 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 Defaults-Einträ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 den ersten Typ von Defaults in den folgenden Formen konzentrieren. Parameter können Flags, Ganzzahlen, Zeichenfolgen oder Listen sein.

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 der Liste entfernen).

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

1. Einen sicheren PATH setzen

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 sudo-Benutzern nicht vertraut, eine sichere PATH-Umgebungsvariable zu haben
  2. Um „Root-Pfad“ und „Benutzerpfad“ zu trennen, sind nur Benutzer, die durch exempt_group definiert sind, von dieser Einstellung nicht betroffen.

Um ihn zu setzen, fügen Sie die Zeile hinzu:

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

2. Sudo bei TTY-Benutzeranmeldung aktivieren

Um sudo zu ermöglichen, von einer echten tty aufgerufen zu werden, aber nicht über Methoden wie cron oder cgi-bin Skripte, fügen Sie die Zeile hinzu:

Defaults  requiretty   

3. Sudo-Befehl unter Verwendung eines pty ausführen

A few times, attackers can run a malicious program (such as a virus or malware) using sudo, which would again fork a background process that remains on the user’s terminal device even when the main program has finished executing.

Um ein solches Szenario zu vermeiden, können Sie sudo konfigurieren, um andere Befehle nur von einem Pseudo-pty unter Verwendung des Parameters use_pty auszuführen, unabhängig davon, ob die I/O-Protokollierung aktiviert ist oder nicht, wie folgt:

Defaults  use_pty

4. Ein Sudo-Protokolldatei erstellen

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 Hostnamen und das vierstellige Jahr in der benutzerdefinierten Protokolldatei zu protokollieren, verwenden Sie die Parameter log_host und log_year wie folgt:

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

Hier ist ein Beispiel für eine benutzerdefinierte sudo-Protokolldatei:

Create Custom Sudo Log File

5. Protokollieren von Sudo-Befehlseingabe/-ausgabe

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

Das Standard-I/O-Protokollverzeichnis ist /var/log/sudo-io, und wenn es eine Sitzungssequenznummer gibt, wird sie 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 steigenden Basis-36-Sequenznummer ausdehnt, wie z.B. 000001, wobei jeweils 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
Log sudo Input Output

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

6. Vortrag für Sudo-Benutzer

Um Sudo-Benutzer über die Verwendung von Passwörtern im System zu belehren, verwenden Sie den Parameter lecture wie unten beschrieben.

Es hat 3 mögliche Werte:

  1. always – immer einen Benutzer belehren.
  2. einmal – nur dem Benutzer das erste Mal erklären, wenn er den sudo-Befehl ausführt (dies wird verwendet, wenn kein Wert angegeben ist)
  3. niemals – dem Benutzer niemals erklären.
 
Defaults  lecture="always"

Zusätzlich können Sie eine benutzerdefinierte Erklärungsdatei mit dem lecture_file-Parameter festlegen, geben Sie die entsprechende Nachricht in der Datei ein:

Defaults  lecture_file="/path/to/file"
Lecture Sudo Users

7. Zeigen Sie eine benutzerdefinierte Nachricht an, wenn Sie das falsche sudo-Passwort eingeben

Wenn ein Benutzer ein falsches Passwort eingibt, wird eine bestimmte Nachricht auf der Befehlszeile angezeigt. Die Standardnachricht lautet „Entschuldigung, versuchen Sie es erneut„, Sie können die Nachricht mit dem badpass_message-Parameter wie folgt ändern:

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

8. Erhöhen Sie das sudo-Passwort-Versuchslimit

Der Parameter passwd_tries wird verwendet, um die Anzahl der Versuche festzulegen, die ein Benutzer hat, um ein Passwort einzugeben.

Der Standardwert beträgt 3:

Defaults   passwd_tries=5 
Increase Sudo Password Attempts

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

Defaults   passwd_timeout=2

9. Lassen Sie Sudo Sie beleidigen, wenn Sie das falsche Passwort eingeben

Falls ein Benutzer ein falsches Passwort eingibt, zeigt sudo Beleidigungen auf dem Terminal mit dem Beleidigungsparameter an. Dies schaltet automatisch den badpass_message-Parameter aus.

Defaults  insults 
Let’s Sudo Insult You When Enter Wrong Password

Weitere Informationen: Lassen Sie Sudo Sie beleidigen, wenn Sie das falsche Passwort eingeben

10. Erfahren Sie mehr über Sudo-Konfigurationen

Du kannst weitere nützliche sudo-Befehlskonfigurationen durch Lesen von: Unterschied zwischen su und sudo und wie man sudo in Linux konfiguriert erfahren.

Das war’s! Du kannst anderen Linux-Benutzern dort draußen über den Kommentarbereich weitere nützliche sudo-Befehlskonfigurationen oder Tricks und Tipps mit Linux mitteilen.

Source:
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/