10 utili configurazioni dei sudoer per impostare "sudo" in Linux
In Linux e in altri sistemi operativi simili a Unix, solo l'utente root può eseguire tutti i comandi ed eseguire determinate operazioni critiche sul sistema come installazione e aggiornamento, rimozione di pacchetti, creazione di utenti e gruppi, modifica di sistemi importanti file di configurazione e così via.
Tuttavia, un amministratore di sistema che assume il ruolo di utente root può consentire ad altri normali utenti del sistema con l'aiuto del comando sudo e alcune configurazioni di eseguire alcuni comandi nonché di eseguire una serie di operazioni vitali del sistema, comprese quelle menzionate sopra.
In alternativa, l'amministratore di sistema può condividere la password dell'utente root (che non è un metodo consigliato) in modo che i normali utenti del sistema possano accedere all'account utente root tramite il comando su.
sudo consente a un utente autorizzato di eseguire un comando come root (o un altro utente), come specificato dalla politica di sicurezza:
- Legge e analizza /etc/sudoers, cerca l'utente invocante e i suoi permessi,
- quindi richiede all'utente chiamante una password (normalmente la password dell'utente, ma può anche essere la password dell'utente di destinazione. Oppure può essere saltata con il tag NOPASSWD),
- successivamente, sudo crea un processo figlio in cui chiama setuid() per passare all'utente di destinazione
- successivamente, esegue una shell o il comando fornito come argomento nel processo figlio sopra.
Di seguito sono riportate dieci configurazioni di file /etc/sudoers per modificare il comportamento del comando sudo utilizzando le voci Defaults.
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
Tipi di voci predefinite
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
Ai fini di questa guida, azzereremo il primo tipo di Predefiniti nei moduli seguenti. I parametri possono essere flag, valori interi, stringhe o elenchi.
Tieni presente che i flag sono implicitamente booleani e possono essere disattivati utilizzando l'operatore '!'
e che gli elenchi hanno due operatori di assegnazione aggiuntivi, +=
(aggiungi alla lista) e -=
(rimuovi dall'elenco).
Defaults parameter
OR
Defaults parameter=value
OR
Defaults parameter -=value
Defaults parameter +=value
OR
Defaults !parameter
1. Imposta un PERCORSO sicuro
Questo è il percorso utilizzato per ogni comando eseguito con sudo, ha due importanza:
- Utilizzato quando un amministratore di sistema non si fida degli utenti sudo per avere una variabile di ambiente PATH sicura
- Per separare il "percorso root" e il "percorso utente", solo gli utenti definiti da exempt_group non sono interessati da questa impostazione.
Per impostarlo, aggiungi la riga:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2. Abilita sudo nella sessione di accesso utente TTY
Per consentire l'invocazione di sudo da una vera tty ma non tramite metodi come script cron o cgi-bin, aggiungi la riga:
Defaults requiretty
3. Esegui il comando Sudo utilizzando un pty
Alcune volte, gli aggressori possono eseguire un programma dannoso (come un virus o un malware) utilizzando sudo, che ancora una volta biforcherebbe un processo in background che rimane sul dispositivo terminale dell’utente anche quando il programma principale ha terminato l’esecuzione.
Per evitare uno scenario del genere, puoi configurare sudo per eseguire altri comandi solo da uno psuedo-pty utilizzando il parametro use_pty
, indipendentemente dal fatto che la registrazione I/O sia attivata o meno come segue:
Defaults use_pty
4. Crea un file di registro Sudo
Per impostazione predefinita, sudo registra tramite syslog(3). Tuttavia, per specificare un file di registro personalizzato, utilizzare il parametro logfile in questo modo:
Defaults logfile="/var/log/sudo.log"
Per registrare il nome host e l'anno a quattro cifre nel file di registro personalizzato, utilizzare rispettivamente i parametri log_host e log_year come segue:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
Di seguito è riportato un esempio di file di registro sudo personalizzato:
5. Registra input/output del comando Sudo
I parametri log_input e log_output consentono a sudo di eseguire un comando in pseudo-tty e registrare in modo ricettivo tutti gli input dell'utente e tutti gli output inviati allo schermo.
La directory di registro I/O predefinita è /var/log/sudo-io e, se è presente un numero di sequenza della sessione, viene archiviato in questa directory. È possibile specificare una directory personalizzata tramite il parametro iolog_dir.
Defaults log_input, log_output
Sono supportate alcune sequenze di escape come %{seq}
che si espande in un numero di sequenza base 36 monotonicamente crescente, come 000001, dove ogni due cifre vengono utilizzate per formare una nuova directory, ad es. 00/00/01 come nell'esempio seguente:
cd /var/log/sudo-io/
ls
cd 00/00/01
ls
cat log
Puoi visualizzare il resto dei file in quella directory usando il comando cat.
6. Lezione Utenti Sudo
Per dare lezioni agli utenti sudo sull'utilizzo della password nel sistema, utilizzare il parametro lecture come di seguito.
Ha 3 possibili valori:
- sempre – impartisci sempre lezioni a un utente.
- once – impartisce lezioni a un utente solo la prima volta che esegue il comando sudo (viene utilizzato quando non viene specificato alcun valore)
- mai – mai dare lezioni all’utente.
Defaults lecture="always"
Inoltre, puoi impostare un file di lezione personalizzato con il parametro lecture_file, digita il messaggio appropriato nel file:
Defaults lecture_file="/path/to/file"
7. Mostra un messaggio personalizzato quando inserisci una password sudo errata
Quando un utente inserisce una password errata, sulla riga di comando viene visualizzato un determinato messaggio. Il messaggio predefinito è "scusa, riprova", puoi modificare il messaggio utilizzando il parametro badpass_message come segue:
Defaults badpass_message="Password is wrong, please try again"
8. Aumenta il limite di tentativi di password sudo
Il parametro passwd_tries viene utilizzato per specificare il numero di volte in cui un utente può provare a inserire una password.
Il valore predefinito è 3:
Defaults passwd_tries=5
Per impostare un timeout della password (il valore predefinito è 5 minuti) utilizzando il parametro passwd_timeout, aggiungi la riga seguente:
Defaults passwd_timeout=2
9. Lascia che Sudo ti insulti quando inserisci una password sbagliata
Nel caso in cui un utente digiti una password errata, sudo visualizzerà gli insulti sul terminale con il parametro insulti. Ciò disattiverà automaticamente il parametro badpass_message.
Defaults insults
Leggi di più: lascia che Sudo ti insulti quando inserisci una password errata
10. Ulteriori informazioni sulle configurazioni Sudo
Inoltre, puoi saperne di più sulle configurazioni dei comandi sudo leggendo: Differenza tra su e sudo e Come configurare sudo in Linux.
Questo è tutto! Puoi condividere altre utili configurazioni dei comandi sudo o trucchi e suggerimenti con gli utenti Linux tramite la sezione commenti qui sotto.