La guida completa per Master file Sudoers.

Harsha Koushik

Seguire

Apr 18, 2020 · 10 min di lettura

che Cosa è il File Sudoers?

Il file Sudoers è proprio come qualsiasi altro file sul sistema operativo Linux., Ma svolge un ruolo fondamentale nella gestione di ciò che un “Utente” o “Utenti in un gruppo” può fare sul sistema.

Perché il nome Sudoers?

La parola Sudo è l’abbreviazione del termine “Super User Do”. Come suggerisce chiaramente-è proprio come dire al Kernel / OS “non hai scelta, fallo e basta!”. Quindi gli utenti con il permesso Sudo sono chiamati come utenti Sudo. La gestione di tutti questi utenti sudo avviene attraverso un file chiamato come File Sudoers. Questo file vive anche nella directory / etc proprio come qualsiasi altro file di configurazione.,

Immagine-1. File Sudoers nella directory / etc. Sistema operativo: Kali Linux 2019.4

Perché Sudoers File?

Un utente normale su Linux avrà molte restrizioni nel sistema. Ad esempio, l’utente non sarà in grado di avviare un servizio, modificare un file di configurazione o eseguire uno script sul sistema per impostazione predefinita. Dal punto di vista della sicurezza questo sembra perfetto.,

Ma, prendiamo un esempio di — tu come amministratore di sistema devi gestire tutti gli utenti e i loro controlli. Hai un sito Web ospitato su Apache in uno dei tuoi server. Hai già un Web-Admin per gestirlo. Un utente dovrebbe essere creato per lui sul server Web. A questo Utente dovrebbe essere permesso di fare due cose che un utente normale non può:

  • Avviare / riavviare il servizio Apache nel caso in cui si fermi.
  • Modifica il file di configurazione di Apache.

Hai due opzioni utente per impostazione predefinita:

  1. Utente root che ha tutte le autorizzazioni sul sistema incluso Apache.,
  2. Un utente normale, che per impostazione predefinita non sarà in grado di avviare un Servizio o modificare alcun file di configurazione sul sistema.

Questo è quando un file sudoers ti sarà utile. Nel file Sudoers possiamo definire esattamente:

  • L’utente Web-Admin può solo avviare il servizio Apache&
  • Può solo modificare il file di configurazione di Apache.

Giocando con il file Sudoers

Abbastanza teoria, inizieremo a fare le cose reali ora. Spiegherò ogni sezione nel file Sudoers con alcuni esempi., Per impostazione predefinita, il file Sudoers sembra che questo —

Immagine-2. File Sudoers inedito. Sistema operativo: Kali Linux 2019.4

Principalmente possiamo vedere cinque sezioni nel file — le prime tre sezioni nel file sono relative agli ALIAS di Host, Utente e Cmnd., Parleremo di ALIAS più tardi, prima parliamo della sezione principale:

#User Privilege Specification

root ALL = (ALL:ALL) ALL

Nota: ‘#’ indica un commento nel file, il sistema operativo ignorerà questa riga durante l’esecuzione.,

Sintassi : Utente <spazio> OnHost = (Runas-Utente:Gruppo) <spazio> Comandi

Esempio: root ALL = (ALL:ALL) TUTTI

Leggere come Utente Root può Eseguire Qualsiasi Comando, come Qualsiasi Utente da Qualsiasi Gruppo di Qualsiasi Host.

→ Il primo ALL viene utilizzato per definire gli HOST. Possiamo definire Hostname / Indirizzo Ip invece di TUTTI. TUTTO significa qualsiasi host.

→ Secondo TUTTO: Terzo TUTTO è Utente: Gruppo., Invece di TUTTO possiamo definire Utente o Utente con il gruppo come User: Group. TUTTI: TUTTI significa Tutti gli utenti e Tutti i gruppi.

→ Ultimo TUTTO è il Comando. Invece di TUTTI, possiamo definire un comando o un insieme di comandi. TUTTI significa tutti i comandi.

Per dirla molto semplice, è “who where = (as_whom) what”.

Nota: la maggior parte delle persone comprende gli HOST come HOST remoti. È il NOME HOST LOCALE / INDIRIZZO IP., Il campo HOSTS sarà usato raramente, se vuoi saperne di più sugli HOST in Sudoers fai riferimento → https://www.sudo.ws/man/1.7.10/sudoers.man.html

Fondamentalmente possiamo permettere a un utente di fare qualcosa in due modi:

  1. Dargli direttamente il permesso di eseguire il comando modificando il permesso del file.
  2. Permettergli di eseguire il comando come un altro utente che ha già il permesso di eseguire questo comando.

Nel file Sudoers implementeremo quest’ultimo.,

Useremo un altro esempio per comprendere chiaramente i campi nella sintassi:

Esempio : sysadmin ALL = (root)/usr/bin /cat/etc/shadow

Leggi questo come utente — “sysadmin” può eseguire il comando “/usr/bin /cat/etc / shadow” come utente ROOT su tutti gli HOST.

Qui nell’esempio precedente, nella sezione dei comandi — ho aggiunto qualcosa di più di un comando, questo per mostrare la flessibilità del file Sudoers. La parte “/ usr / bin / cat ” è un eseguibile binario o un comando utilizzato per visualizzare il contenuto di un file., La parte “/ etc / shadow ” è un file riservato che memorizza le password, quindi significa che l’utente “amministratore di sistema” può eseguire solo “/usr/bin/cat” sul file “/etc/shadow”, se questo utente tenta di visualizzare il contenuto di qualsiasi altro file su cui non ha permessi di lettura, non sarà in grado di.,

la Sintassi del comando Sudo: sudo <comando>

Esempio: sudo cat /etc/shadow

Ora, se l’utente “amministratore di sistema” usa sudo prima di ogni comando, OS prima di chiedere a lui le Password degli Utenti, verifica la password e poi va a Sudoers file e controlla se si è permesso di eseguire questo comando come un utente qualsiasi. Se gli è permesso-successo, altrimenti riporterà una di queste due cose —

→ L’utente non è nel file Sudoers. Questo incidente verrà segnalato.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

Qui, l’utente webadmin può eseguire solo “cat/etc / shadow”. Ma ha provato a eseguire il comando ‘ cat ‘ su “/ etc / gshadow ” che non è permesso.

Poiché abbiamo abbastanza presa sui campi nella sintassi del file Sudoers, andiamo avanti e capiamo altre sezioni nel file. Tutte le altre sezioni dipenderanno dalla sezione principale che abbiamo già discusso.,

La sezione successiva è GROUP Section, che è

#Consenti ai membri del gruppo sudo di eseguire qualsiasi comando

%sudo ALL = (ALL:ALL) ALL

Il simbolo percentile ‘%’ è usato per rappresentare un gruppo nel file Sudoers. Tutti i campi e le loro funzionalità in questa sezione sono esattamente gli stessi discussi nella sezione precedente — la sezione utente. Possiamo assegnare gli stessi privilegi Sudo a un gruppo anziché a un utente specificando il nome del gruppo – % <nome del gruppo>., Quindi tutti i membri del gruppo erediteranno gli stessi privilegi dati al gruppo.

Per impostazione predefinita esiste un gruppo SUDO definito nel file Sudoers. Possiamo vedere che queste autorizzazioni sono esattamente le stesse autorizzazioni degli utenti ROOT nel file. Quindi, se un utente è un membro di questo gruppo SUDO, può eseguire tutti i comandi che un utente ROOT può eseguire.

Definiamo un gruppo personalizzato e comprendiamo più chiaramente la sintassi. Prendiamo lo stesso vecchio esempio di amministratore di sistema per farlo. Assumere il no. i dipendenti sono più ora, quindi gli amministratori di sistema sono 3 ora., Ognuno di questi ha bisogno delle stesse autorizzazioni esatte che avevamo dato al primo amministratore di sistema. Una cosa che possiamo fare per raggiungere questo obiettivo è avere tre voci per tutti e tre gli amministratori di sistema nel file Sudoers. Se andiamo con questo approccio, stiamo insultando le capacità di un file Sudoers.

La cosa migliore da fare è raggruppare tutti e tre gli amministratori di sistema in un gruppo denominato “SystemAdminGroup”., Definiremo le autorizzazioni necessarie per questo gruppo con-

%SystemAdminGroup ALL = (root)/usr/bin /cat/etc/shadow

Ora tutti e tre gli amministratori possono eseguire il Comando Privilegiato. Lo abbiamo fatto in una volta sola usando la definizione di gruppo.

File Sudoers è in grado di rendere l’intero processo più efficiente utilizzando varie funzionalità. Le prime tre sezioni-ALIAS sono utilizzati per raggiungere questo obiettivo., Come suggerisce già la parola, usiamo un ALIAS per qualcosa che possiamo usare in tutto il file, è proprio come una VARIABILE GLOBALE in uno script. In che modo questo rende il tutto più efficiente? Possiamo definire insieme di comandi, host e utenti in una riga, assegniamo questa riga a un nome ALIAS, questo alias verrà utilizzato quando e dove necessario senza definire tutti i comandi/host/utenti di nuovo.

Voglio includere un altro ALIAS che non è elencato nel file Sudoers per impostazione predefinita che è “Run_as ALIAS”., Ora abbiamo quattro ALIAS —

  1. ALIAS Utente come User_Alias
  2. Esegui Come ALIAS Runas_Alias
  3. Host ALIAS Host_Alias
  4. Comando ALIAS Cmnd_Alias

Nota : nome di Alias deve essere definito in lettere maiuscole e può contenere un numero, l’alfabeto e il carattere di sottolineatura (_). Nome alias deve iniziare con alfabeto.,3e”>Nome ALIAS> = <nome utente><nome utente> <nome utente>…

Esempio: User_Alias gli amministratori di sistema = john,tim,tom

Utilizzo: TUTTI gli amministratori di sistema = (root) /usr/bin/cat /etc/shadow

Se voglio un set di sudo definizione di autorizzazioni per gli utenti — john, tim e tom, non ho bisogno di definire tre volte, invece, sono in grado di definire un Alias e l’utilizzo di questo Nome Alias, mentre la delega di sudo, accesso ad essi.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., Non confondetevi qui, basta ricordare il maestro mantra-chi dove = (as_whom) cosa. Stiamo usando un alias qui per includere no. di utenti nel campo “as_whom”.

Immagine-6. Alias Runas nel file Sudoers. Sistema operativo: Kali Linux 2019.,4

Host ALIAS Syntax —

Usage: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow

Se ho bisogno di definire insieme di nomi host, indirizzi ip o intervallo di indirizzi ip su cui un utente è autorizzato a emettere i comandi privilegiati / Sudo, posso ottenere questo risultato usando l’alias Host. Ancora una volta, questa parte appartiene al campo “dove” nella frase principale.

Foto-7. Alias host nel file Sudoers., Sistema operativo: Kali Linux 2019.,iv id=”1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Questa parte appartiene al campo “cosa” nella frase principale.

Foto-8. Cmnd Alias nel file Sudoers. Sistema operativo: Kali Linux 2019.4

NOPASSWD Mode:

Questa è un’altra caratteristica speciale in Sudoers che permetterà a un Utente nel file Sudoers di eseguire un comando privilegiato senza inserire la password., Questo è molto utile quando si eseguono script automatici nel sistema come utente normale, lo script potrebbe dover eseguire un comando privilegiato. Ma sappiamo già cosa succede se un utente usa SUDO, dovrà inserire la sua password!

Ricorda che, anche se è uno script o un processo, dovrebbe essere eseguito COME UTENTE, non può essere eseguito da solo.

Tutti gli script automatizzati non sono abbastanza intelligenti da inserire la password quando richiesto. Ma è possibile inserire automaticamente la password. Per il momento non pensiamo agli script intelligenti., Quindi, per concludere, un comando privilegiato può essere utilizzato da un Utente senza inserire la password.

Esempio di uno script che necessita di NOPASSWD: Supervisor in Linux.Discuteremo di Supervisore in un altro articolo.

Sintassi : sysadmin ALL = (root) NOPASSWD:/usr/sbin/apache2

Esclusione dei parametri negli ALIAS

Possiamo anche aggiungere parametri che dovrebbero essere esclusi negli ALIAS. Ad esempio-

User_Alias EXCEPT_ROOT = ALL, !,root

sysadmin ALL = (EXCEPT_ROOT) /usr/sbin/apache2

Questo User_Alias può essere usato per assicurarsi che un UTENTE possa eseguire il comando specificato come “tutti gli utenti tranne ROOT”.

Questo tipo di esclusione può essere fatto in tutti gli ALIAS, non solo User_Alias. In qualsiasi ALIAS, la sintassi di esclusione rimane la stessa.

Gestire il file Sudoers con cura

Ormai devi aver capito cosa può fare un file Sudoers e quanto sia importante gestire il file con cura. Linux implementa già un meccanismo per assicurarsi che il file Sudoers sia gestito correttamente.,

Si raccomanda sempre DI NON MODIFICARE DIRETTAMENTE il file /etc/sudoers. C’è uno strumento chiamato “visudo”. Questo viene utilizzato per apportare modifiche in modo sicuro a un file sudoers. Quando si modifica il file sudoers usando visudo, visudo ha una funzionalità integrata per controllare la sintassi prima di salvare il file, se si commette un errore, punterà immediatamente la linea dove la sintassi non è corretta. Questa funzionalità di visudo impedirà di causare danni accidentali al file e al sistema.

Conclusione:

File Sudoers gioca sempre un ruolo importante nella gestione del controllo utente., Mentre ci sono molti modi per gestire e controllare ciò che un utente può e non può fare sul sistema, il metodo Sudoers sarà sempre efficiente e abbastanza robusto da gestire e controllare qualsiasi no. di utenti. Un altro metodo simile a questo che vale la pena menzionare è SUID e SGID. Parleremo di SUID e SGID in un altro articolo.