10 Configurazioni sudoers utili per impostare ‘sudo’ in Linux

Nei sistemi operativi Linux e in altri sistemi simili a Unix, solo l’utente root può eseguire tutti i comandi e svolgere determinate operazioni critiche sul sistema come installare e aggiornare, rimuovere pacchetti, creare utenti e gruppi, modificare importanti file di configurazione di sistema e così via.

Tuttavia, un amministratore di sistema che assume il ruolo di utente root può permettere ad altri normali utenti di sistema, con l’aiuto del comando sudo e alcune configurazioni, di eseguire alcuni comandi così come svolgere una serie di operazioni vitali di sistema tra cui quelle menzionate in precedenza.

In alternativa, l’amministratore di sistema può condividere la password dell’utente root (che non è un metodo consigliato) in modo che i normali utenti di sistema abbiano accesso 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 policy di sicurezza:

  1. Legge e analizza /etc/sudoers, cerca l’utente che ha invocato il comando e i suoi permessi,
  2. poi chiede all’utente che ha invocato il comando una password (di solito la password dell’utente, ma può anche essere la password dell’utente di destinazione. Oppure può essere saltata con il tag NOPASSWD),
  3. dopodiché sudo crea un processo figlio in cui chiama setuid() per passare all’utente di destinazione
  4. successivamente, esegue una shell o il comando fornito come argomenti nel processo figlio sopra.

Di seguito sono riportate dieci configurazioni del file /etc/sudoers per modificare il comportamento del comando sudo utilizzando le voci Defaults.

$ 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

Tipi di voci Defaults

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

Per gli scopi di questa guida, ci concentreremo sul primo tipo di Defaults nelle forme riportate di seguito. I parametri possono essere flag, valori interi, stringhe o liste.

Si dovrebbe notare che i flag sono booleani impliciti e possono essere disattivati utilizzando l’operatore '!', e le liste hanno due operatori di assegnazione aggiuntivi, += (aggiungi alla lista) e -= (rimuovi dalla lista).

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

1. Imposta un PATH sicuro

Questo è il percorso utilizzato per ogni comando eseguito con sudo, ha due importanze:

  1. Utilizzato quando un amministratore di sistema non si fida degli utenti sudo di avere una variabile d’ambiente PATH sicura
  2. Per separare il “percorso root” e il “percorso utente”, solo gli utenti definiti da exempt_group non sono influenzati 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 su sessione utente di login TTY

Per abilitare sudo da invocare da un vero tty ma non attraverso metodi come cron o cgi-bin script, aggiungi la riga:

Defaults  requiretty   

3. Esegui il comando sudo utilizzando un pty

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.

Per evitare una tale situazione, puoi configurare sudo per eseguire altri comandi solo da un pseudo-pty utilizzando il parametro use_pty, indipendentemente dal fatto che l’I/O logging sia attivato o meno come segue:

Defaults  use_pty

4. Crea un file di log sudo

Per impostazione predefinita, sudo registra tramite syslog(3). Tuttavia, per specificare un file di log personalizzato, utilizzare il parametro del file di log come segue:

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

Per registrare l’hostname e l’anno a quattro cifre nel file di log personalizzato, utilizzare rispettivamente i parametri log_host e log_year come segue:

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

Ecco un esempio di un file di log sudo personalizzato:

Create Custom Sudo Log File

5. Registra l’Input/Output del Comando Sudo

I parametri log_input e log_output consentono a sudo di eseguire un comando in pseudo-tty e registrare tutto l’input dell’utente e tutto l’output inviato allo schermo rispettivamente.

La directory predefinita per il log I/O è /var/log/sudo-io, e se c’è un numero di sequenza della sessione, viene memorizzato in questa directory. È possibile specificare una directory personalizzata tramite il parametro iolog_dir.

Defaults   log_input, log_output

Alcune sequenze di escape sono supportate come %{seq} che si espande in un numero di sequenza base-36 in aumento monotono, 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
Log sudo Input Output

È possibile visualizzare il resto dei file in quella directory utilizzando il comando cat.

6. Lezione agli Utenti Sudo

Per dare una lezione agli utenti sudo sull’uso delle password nel sistema, utilizzare il parametro lecture come segue.

Ha 3 valori possibili:

  1. always – dare sempre una lezione a un utente.
  2. Una volta – dare una lezione all’utente solo la prima volta che esegue il comando sudo (questo viene utilizzato quando non viene specificato alcun valore)
  3. Mai – non dare mai lezioni all’utente.
 
Defaults  lecture="always"

Inoltre, puoi impostare un file di lezione personalizzato con il parametro lecture_file, digitando il messaggio appropriato nel file:

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

7. Mostra un Messaggio Personalizzato Quando Inserisci una Password Sudo Errata

Quando un utente inserisce una password errata, compare un determinato messaggio sulla riga di comando. Il messaggio predefinito è “scusa, riprova“, puoi modificare il messaggio utilizzando il parametro badpass_message nel seguente modo:

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

8. Aumenta il Limite di Tentativi della Password Sudo

Il parametro passwd_tries viene utilizzato per specificare il numero di volte che un utente può provare a inserire una password.

Il valore predefinito è 3:

Defaults   passwd_tries=5 
Increase Sudo Password Attempts

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. Fai Sì che Sudo Ti Insulti Quando Inserisci una Password Errata

Se un utente digita una password errata, sudo mostrerà degli insulti sul terminale con il parametro degli insulti. Questo disattiverà automaticamente il parametro badpass_message.

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

Leggi Altro: Fai Sì che Sudo Ti Insulti Quando Inserisci una Password Errata

10. Scopri Altre Configurazioni di Sudo

Puoi imparare ulteriori configurazioni del comando sudo leggendo: Differenza tra su e sudo e Come Configurare sudo in Linux.

Ecco! Puoi condividere altre utili configurazioni del comando sudo o trucchi e suggerimenti con gli utenti Linux attraverso la sezione commenti qui sotto.

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