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:
- Es liest und analysiert /etc/sudoers, sucht den aufrufenden Benutzer und seine Berechtigungen,
- 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),
- Danach erstellt sudo einen untergeordneten Prozess, in dem setuid() aufgerufen wird, um zum Zielbenutzer zu wechseln
- 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:
- Wird verwendet, wenn ein Systemadministrator sudo-Benutzern nicht vertraut, dass sie über eine sichere PATH-Umgebungsvariable verfügen
- 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:
- Immer – immer belehren Sie einen Benutzer.
- einmal – belehrt einen Benutzer nur beim ersten Ausführen des sudo-Befehls (dieser wird verwendet, wenn kein Wert angegeben ist)
- 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.




