Come installare sudo 1.9 e utilizzare il nuovo strumento di policy

Il sistema sudo sta per subire alcuni cambiamenti radicali. Scopri come iniziare a lavorare con il nuovo sistema di politica dei criteri, per rendere sudo ancora più potente.

Il sistema sudo su Linux è un modo incredibile di controllare chi può svolgere compiti di amministrazione e questo strumento ha funzionato bene per molto tempo. Tuttavia, come è, sudo ha sofferto sotto il peso di molte critiche. Uno dei maggiori problemi è il controllo granulare. Ad esempio, se si dà a un utente il diritto di usare sudo su un sistema, può sempre emettere il comando:

sudo rm -rf /

Il comando sopra cancellerà tutto sul tuo sistema. Ogni, cosa.

Ho eseguito questo comando sui sistemi solo per vedere cosa succede ed è una cosa straordinaria da vedere: guardare tutto svanire su un computer.

Naturalmente, nelle moderne distribuzioni Linux, l'esecuzione del comando sopra genererà un avviso, indicando che il comando è pericoloso per operare ricorsivamente su /.

Tuttavia, ti spiega anche come aggirare il fail-safe, usando l'opzione --no-preserv-root. Quindi, anche con l'avvertimento, sudo consentirà la distruzione all'ingrosso di una macchina.

Fino a sudo 1.9.

Con sudo 1.9, il sistema riceve una serie di miglioramenti. Uno di questi miglioramenti è l'approvazione dei comandi just in time, che consente ai plug-in di terze parti di contribuire a migliorare la sicurezza, tramite criteri.

Voglio dimostrare come utilizzare il nuovo sistema di policy, il che rende abbastanza facile controllare quali comandi gli utenti possono eseguire con sudo.

Di cosa avrai bisogno

Lo dimostrerò su Ubuntu 18.04. Al momento, sudo 1.9 può essere installato in Ubuntu 20.04, ma il sistema di plugin non funziona. Per questo motivo, rimarremo fedeli alla precedente versione di LTS.

Sudo 1.9 è installabile su altre distribuzioni, ma l'unico su cui l'ho provato è Ubuntu 18.04.

Come installare sudo 1.9

La prima cosa che devi fare è installare sudo 1.9. Tuttavia, prima di farlo, ti consiglio vivamente di assicurarti di avere accesso all'account di root. Se non lo fai, potresti finire con un sistema sudo rotto. È probabile che lo farai in un ambiente di test, quindi fornire all'utente root una password su Ubuntu dovrebbe andare bene. Per fare ciò, aprire una finestra di terminale ed emettere il comando:

sudo passwd root

Ti verrà richiesto di inserire e verificare la nuova password.

Ora, tornando alla finestra del terminale, scarica i file .deb necessari con i seguenti comandi:

wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo_1.9.0-1_ubu1804_amd64.deb
wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo-ldap_1.9.0-1_ubu1804_amd64.deb
wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo-logsrvd_1.9.0-1_ubu1804_amd64.deb
wget https://www.sudo.ws/sudo/dist/packages/1.9.0/sudo-python_1.9.0-1_ubu1804_amd64.deb

Installa questi pacchetti con il comando:

sudo dpkg -i * .deb

Una volta completata l'installazione, sei pronto per il test.

Come testare il plugin Python

Quello che faremo è testare il nuovo modulo python che impedirà a tutti gli utenti (non root) di eseguire qualsiasi comando diverso da id. Questo è incredibilmente limitante, ma ti mostra la potenza del nuovo sistema.

Per fare ciò, cambiare prima all'utente root con il comando:

su

Crea una nuova politica con il comando:

nano /root/policy.py

In quel file, incolla quanto segue:

import sudo
classe SudoPolicyPlugin (sudo.Plugin):
    def check_policy (self, argv, env_add):
        cmd = argv [0] # il primo argomento è il nome del comando
        if cmd! = "id": # Esempio per un semplice rifiuto:
            sudo.log_error ("Non puoi eseguire questo comando!")
            ritorna sudo.RC.REJECT
        command_info_out = (# comando di configurazione da eseguire
            "command = / usr / bin / id", # Percorso assoluto del comando
            "runas_uid = 0", # L'ID utente
            "runas_gid = 0") # L'ID gruppo
        return (sudo.RC.ACCEPT, command_info_out, argv, env_add)

Salva e chiudi il file.

La parte importante del codice sopra è:

if cmd! = "id": # Esempio per un semplice rifiuto:
sudo.log_error ("Non puoi eseguire questo comando!")
return sudo.RC.REJECT

Ciò dice effettivamente se un comando non è id, stampa l'errore "Non ti è permesso eseguire questo comando!" Infine, utilizza RC.REJECT per rifiutare qualunque comando non sia id.

Ora dobbiamo abilitare questa politica. Apri il file di configurazione sudo con il comando:

nano /etc/sudo.conf

In quel file, individua questa sezione:

Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so

Commenta la prima riga e aggiungi la nuova riga, così sarà simile:

#Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so
Plugin python_policy python_plugin.so ModulePath = / root / policy.py ClassName = SudoPolicyPlugin

Salva e chiudi il file.

Come testare la nuova politica

Ora è necessario aprire un nuovo terminale o SSH nella macchina con una nuova istanza. Una volta fatto, emetti il ​​comando:

sudo ls

Vedrai quindi che non ti è più permesso eseguire il comando.

Tuttavia, se si emette il comando id, vedrai che funziona.

Conclusione

Ed è così che usi il nuovo sistema di policy in sudo 1.9. Questo cambiamento sta evolvendo per un comando sudo vicino a te, quindi assicurati di aggiornarti sull'utilizzo prima che venga rilasciato sulla tua distribuzione Linux preferita.


Author

L'autore

Dario Fadda alias {Nuke}

Da sempre appassionato di informatica e del mondo open-source nel 2003 ho fondato il portale Spcnet.it per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo dei computers, con particolare attenzione alle tematiche di Sicurezza informatica, Malware e Ransomware, ma anche guide di Programmazione e utili suggerimenti per tutte le fasce di interesse.
Dal 2006 sono membro del Gulch (Gruppo Utenti Linux Cagliari), con cui cerco di dare il mio contributo attivo per eventi e LinuxDay.
Su Twitter segnalo e condivido nuovi Phishing pericolosi con approfondimenti sul Bank Security.

Ho ideato Hacker Alert per effettuare ricerche di vulnerabilità e phishing in tempo reale.

Praticamente per tutto ciò che scopro e che è degno di nota ne condivido il codice sorgente su Git Hub.
Per tutto il resto c'è Dario Fadda .it che contiene "quasi" tutto di me.

Currently there are no comments, so be the first!
intopic.it