GNU/Linux >> Linux Esercitazione >  >> Linux

Proteggi Linux con il file Sudoers

In Linux, il file sudoers è il punto in cui concedi agli utenti privilegi elevati. Per impostazione predefinita, solo l'utente root ha questi privilegi. Ma, in alcuni casi, potrebbe essere necessario che anche gli utenti normali dispongano di privilegi elevati.

Non sei un lettore? Guarda questo video tutorial correlato! Non vedi il video? Assicurati che il blocco degli annunci sia disattivato.

Il file sudoers è principalmente per la gestione degli amministratori di sistema e può essere un po' scoraggiante per i nuovi arrivati. Non lasciare che questo ti scoraggi! Con pazienza e attenzione ai dettagli, chiunque può imparare a gestire il file sudoers in modo efficace.

Questa guida ti insegnerà come modificare i sudoer e dare agli utenti privilegi elevati in modo sicuro. Imparerai anche alcune best practice da tenere a mente quando lavori con i sudoer. Non andare da nessuna parte; preparati a portare la gestione dei privilegi degli utenti Linux a un livello superiore!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri continuare, assicurati di avere un sistema Linux con un normale account utente che puoi utilizzare. Questa guida utilizza un sistema Ubuntu 20.04, ma dovrebbe funzionare anche qualsiasi altra distribuzione Linux.

Panoramica del file Linux Sudoers

Il file sudoers risiede in /etc/sudoers, un file di testo normale contenente le politiche sui privilegi che un utente ottiene quando esegue il comando sudo. Prima di andare oltre, è essenziale familiarizzare con i contenuti e le sezioni predefiniti del file sudoers.

Lo screenshot seguente mostra il contenuto del file sudoers predefinito su Ubuntu 20.04. Il contenuto predefinito del file sudoers può differire tra le distribuzioni Linux.

Quello che segue è un rapido riassunto delle sezioni nel file sudoers.

Sezione Default

  • Defaults env_reset - Executing commands with sudo creates a new environment with minimal or default environment variables. In most Linux distros, sudo will load the environment variable in the /etc/environment file.
  • Defaults mail_badpass:questa riga attiva l'invio di un'e-mail alla radice quando un utente inserisce una password errata con sudo.
  • Defaults secure_path - This line defines the PATH environment variable that sudo uses instead of the user’s PATH environment.

privilegi sudo utente e gruppo

Questa riga definisce i privilegi sudo per utenti o membri di gruppi specifici.

Nota:la % all'inizio indica che la norma si applica ai membri del gruppo.

  • Il primo campo definisce che la sua politica si applica al root utente e i membri del admin e sudo gruppi.
  • Il primo ALL significa che la regola si applica a tutti gli host.
  • Il secondo ALL consente il root account per eseguire comandi come qualsiasi utente.
  • Il terzo ALL consente il root account per eseguire comandi come qualsiasi gruppo.
  • L'ultimo ALL significa che questa politica si applica ai comandi di comando.

Includi direttive

Alla fine del file, vedrai una riga che sembra un commento ma non lo è. Le righe che iniziano con #include e #includedir sono chiamate direttive include.

#includedir /etc/sudoers.d – Questa riga dice a sudo di cercare in /etc/sudoers.d directory per eventuali file di configurazione aggiuntivi.

Modificare il file Sudoers con lo strumento giusto

Il file sudoers è un semplice file di testo che puoi aprire con il tuo editor di testo preferito, ma non è consigliabile farlo. Come mai? Poiché i contenuti del file sudoers seguono una sintassi specifica, un normale editor di testo non ha protezioni per impedirti di rovinare il file sudoers.

Una configurazione errata può portare a problemi di sicurezza; peggio, ogni utente potrebbe perdere la possibilità di elevare i propri privilegi.

Qual è lo strumento corretto? — visudo . Questo strumento apre il file sudoers nell'editor di testo predefinito. Inoltre, visudo impedisce la modifica simultanea ed esegue il controllo degli errori prima di uscire.

In Ubuntu 20.04, l'editor predefinito è vim , ma puoi impostare un editor alternativo, come nano , se preferisci.

1. Apri una sessione terminale o SSH nella tua macchina Linux.

2. Esegui il comando seguente per elencare gli editor di testo disponibili sul tuo computer.

sudo update-alternatives --config editor

Come puoi vedere, l'attuale editor predefinito è la selezione 5, che è vim. Supponiamo che tu preferisca mantenere l'impostazione predefinita, premi Invio. Se preferisci un altro editor, premi il numero di selezione corrispondente, ad esempio 0 per nano, e premi Invio.

3. Ora, esegui il comando seguente per aprire il file sudoers nell'editor predefinito.

sudo visudo

Se il file sudoers è aperto in un'altra sessione, vedrai l'errore seguente e visudo ti impedirà di aprire il file. In questo modo, nessun utente può apportare modifiche in conflitto contemporaneamente.

visudo:/etc/sudoers occupato, riprova più tardi

4. Una volta aperto il file sudoers, causa deliberatamente un errore di sintassi eliminando l'ultima istanza di ALL, quindi salva ed esci dall'editor.

5. visudo will warn you that there’s a syntax error and asks, “What now?”. At this point, you have three options.

  • Digita e e premere Invio per modificare nuovamente il file. Questa opzione ti consente di correggere nuovamente il file sudoers nell'editor.
  • Digita x e premi Invio per annullare le modifiche ed uscire da visudo .
  • Digitare Q, premere Invio per ignorare l'errore, salvare il file sudoers ed uscire da visudo. Non scegliere questa opzione se non sei sicuro delle conseguenze.

In questo esempio, premi x per annullare le modifiche e conservare il vecchio contenuto del file sudoers.

Come puoi vedere, sarebbe difficile rovinare il file sudoers con visudo permanentemente.

Concessione di privilegi specifici

Apportare modifiche direttamente al file sudoers è fattibile ma può diventare ingestibile man mano che le politiche e le regole crescono. L'alternativa migliore consiste nell'utilizzare invece le direttive include. In questo modo, puoi creare più file di configurazione contenenti diversi criteri e regole personalizzate.

Si supponga di voler dare a un gruppo di utenti l'esecuzione di comandi di rete specifici come root. Per farlo, dovresti creare un file nella directory /etc/sudoers.d contenente le regole personalizzate per quel gruppo.

1. Innanzitutto, crea il gruppo che desideri che sarà l'obiettivo della regola personalizzata. In questo esempio, il nome del gruppo è netadmin.

sudo addgroup netadmin

2. Successivamente, crea un account utente normale e rendilo membro del gruppo netadmin.

sudo adduser ata
sudo usermod -aG netadmin ata
id ata

3. Ora crea un nuovo file sudoers chiamato /etc/sudoers.d/networking e aprilo con visudo.

sudo visudo -f /etc/sudoers.d/networking

4. Copia e incolla le seguenti righe nella rete file.

Cmnd_Alias     CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias     SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias     NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Le righe Cmnd_Alias ​​creano alias per i comandi. In questo esempio, assegni l'alias CAPTURE per il comando tcpdump e SERVERS per i comandi apache2ctl e htpasswd. Pensa a queste righe come a un raggruppamento di comandi e a un nome collettivo.

L'ultima riga specifica che i membri del gruppo netadmin possono eseguire qualsiasi comando nell'alias NETALL come root. Questa riga deve essere successiva alle righe Cmnd_Alias.

5. Per testare i privilegi sudo dell'account ata, passa all'account utente ata.

su - ata

6. Ora, esegui uno dei comandi a cui l'utente ha accesso sudo, come tcpdump.

sudo tcpdump -c 5

Come puoi vedere di seguito, il comando sudo dovrebbe funzionare perché l'account ha accesso per eseguirlo.

7. Quindi, verifica e conferma che l'account non può eseguire altri comandi che non sono nella regola personalizzata, come lshw.

sudo lshw

Di conseguenza, il tentativo sudo non riesce perché il tuo account non ha il privilegio per eseguire il comando come root.

8. Infine, torna al tuo account eseguendo il comando seguente.

exit

Miglioramento della sicurezza utilizzando l'opzione passwd_tries

Non puoi permettere a nessuno di provare a inserire una password sbagliata con sudo tutte le volte che vogliono:sarebbe un invito aperto per attacchi di forza bruta o spray di password. Come misura preventiva, devi impostare il numero massimo di tentativi aggiungendo l'opzione passwd_tries all'interno del file sudoers.

1. Innanzitutto, apri il file sudoers personalizzato con visudo.

sudo visudo -f /etc/sudoers.d/networking

2. Aggiungi la riga sottostante alla fine del file sudoers. Questa riga consentirà fino a quattro tentativi di sudo password errati prima di impedire ulteriori tentativi.

Defaults passwd_tries=4

I file sudoers personalizzati ora dovrebbero avere lo stesso aspetto dello screenshot qui sotto. Assicurati di salvare il file e di uscire dall'editor.

3. Ora, passa all'account utente ata ed esegui nuovamente il comando tcpdump come root. Ma questa volta, inserisci una password errata fino al termine della richiesta della password.

sudo tcpdump

Dopo il quarto tentativo con una password errata, vedi che sudo ti impedisce di inserire un'altra password per la quinta volta.

Conclusione

In questo tutorial, hai appreso le basi del file sudoers predefinito. Hai creato regole personalizzate in un file sudoers separato per la concessione di privilegi personalizzati. La creazione e l'applicazione di regole personalizzate è più sicura rispetto all'aggiunta di utenti al sudo gruppo.

Hai anche imparato come applicare l'opzione passwd_tries per specificare quanti tentativi di password errate un utente può effettuare prima che sudo termini il tentativo di autenticazione. Puoi aumentare il controllo granulare quali utenti hanno accesso a quali comandi.

Non fermarti qui! Puoi fare molto di più con il file sudoers, come aggiungere un file di lezione per rendere più piccante l'esperienza sudo dell'utente. Grazie per aver letto e divertiti a proteggere il tuo sistema Linux!


Linux
  1. Trova file e directory su Linux con il comando find

  2. Controlla lo stato del file su Linux con il comando stat

  3. Iniziare con il comando tac di Linux

  4. Esempi essenziali del comando file in Linux

  5. Permessi dei file in Linux con esempio

Introduzione al file system Linux

Comando Tail Linux con esempi

Comando Linux WC con esempi

Come proteggere i server Linux con SE Linux

Il file host su Linux

Utilizzo del comando Linux mv con esempi