GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 nützliche Sudoer-Konfigurationen zum Einstellen von „sudo“ in Linux

In Linux und anderen Unix-ähnlichen Betriebssystemen nur die root Der Benutzer kann alle Befehle ausführen und bestimmte kritische Vorgänge auf dem System ausführen, wie z. B. Installieren und Aktualisieren, Pakete entfernen, Benutzer und Gruppen erstellen, wichtige Systemkonfigurationsdateien ändern und so weiter.

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

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

sudo erlaubt einem berechtigten Benutzer, einen Befehl als root (oder ein anderer Benutzer) auszuführen, wie in der Sicherheitsrichtlinie angegeben:

  1. Es liest und parst /etc/sudoers , sucht den aufrufenden Benutzer und seine Berechtigungen,
  2. fragt dann den aufrufenden Benutzer nach einem Passwort (normalerweise das Passwort des Benutzers, aber es kann auch das Passwort des Zielbenutzers sein. Oder es kann mit dem NOPASSWD-Tag ü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 oben als Argumente im untergeordneten Prozess angegeben wurde.

Unten sind zehn /etc/sudoers Dateikonfigurationen, um das Verhalten von sudo zu ändern Befehl mit Standards Einträge.

$ sudo cat /etc/sudoers
/etc/sudoers-Datei
#
# 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
[email protected]_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 beschränken wir uns auf den ersten Typ von Standardeinstellungen in den unten stehenden Formularen. Parameter können Flags, Integer-Werte, Strings oder Listen sein.

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

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

1. Legen Sie einen sicheren PATH 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 zutraut, eine sichere PATH-Umgebungsvariable zu haben
  2. Um „Stammpfad“ und „Benutzerpfad“ zu trennen, nur Benutzer, die durch exempt_group definiert sind sind von dieser Einstellung nicht betroffen.

Fügen Sie dazu die Zeile hinzu:

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

2. Sudo bei TTY-Benutzeranmeldesitzung aktivieren

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

Defaults  requiretty   

3. Sudo-Befehl mit einem pty ausführen

Ein paar Mal können Angreifer ein bösartiges Programm (z. B. einen Virus oder eine Malware) mit sudo ausführen, was wiederum einen Hintergrundprozess forken würde, 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 so konfigurieren, dass andere Befehle nur von einem psuedo-pty ausgeführt werden mit use_pty Parameter, ob die E/A-Protokollierung aktiviert ist oder nicht, wie 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 Protokolldateiparameter wie folgt:

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

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

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

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

5. Eingabe/Ausgabe des Sudo-Befehls protokollieren

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

Das standardmäßige E/A-Protokollverzeichnis ist /var/log/sudo-io , und wenn eine Sitzungssequenznummer vorhanden ist, wird sie in diesem Verzeichnis gespeichert. Sie können ein benutzerdefiniertes Verzeichnis über iolog_dir angeben Parameter.

Defaults   log_input, log_output

Es werden einige Escape-Sequenzen unterstützt, wie z. B. %{seq} die zu einer monoton steigenden Basis-36-Sequenznummer erweitert wird, wie z. B. 000001, wobei alle zwei Ziffern verwendet werden, um ein neues Verzeichnis zu bilden, z. 00.00.01 wie im folgenden Beispiel:

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

Sie können den Rest der Dateien in diesem Verzeichnis mit dem cat-Befehl anzeigen.

6. Vortrag Sudo-Benutzer

Verwenden Sie die Vorlesung, um sudo-Benutzer über die Verwendung von Passwörtern auf dem System zu unterrichten Parameter wie unten.

Es hat 3 mögliche Werte:

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

Zusätzlich können Sie mit lecture_file eine benutzerdefinierte Vorlesungsdatei erstellen Parameter, 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 “, können Sie die Nachricht mit badpass_message ändern Parameter wie folgt:

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 

So legen Sie mit passwd_timeout ein Passwort-Timeout fest (standardmäßig 5 Minuten). Parameter, 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 Beleidigungsparameter an. Dadurch wird die badpass_message automatisch deaktiviert Parameter.

Defaults  insults 

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

10. Weitere Informationen zu Sudo-Konfigurationen

Darüber hinaus können Sie mehr über sudo erfahren Befehlskonfigurationen durch Lesen:Unterschied zwischen su und sudo und So konfigurieren Sie sudo in Linux.

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


Linux
  1. Führen Sie Container unter Linux ohne sudo in Podman aus

  2. So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

  3. Installieren und Einrichten von Grafana unter Linux

  4. 11 Beste CAD-Software für Linux

  5. So erstellen Sie einen Sudo-Benutzer in Rocky Linux 8

Einige nützliche Tools für Linux-Systemadministratoren

So aktivieren Sie passwortloses Sudo für Benutzer in Linux

So fügen Sie Benutzer zu Sudoern oder Sudo-Gruppen unter Rocky Linux 8 hinzu

Anleitung zum Einrichten eines SFTP-Servers unter Linux

Linux – Benutzer zur Sudoers-Liste hinzufügen

Zeitzoneneinstellung in Linux