PAM - Limitare l'utilizzo del comando su

su consente a chi lo invoca di diventare un altro utente, cambiando i propri ID e GID. Per default questo comando e' impostato con il bit SUID attivo e permesso di esecuzione per tutti gli utenti. In questo modo chiunque, conoscendo le rispettive password, e' in grado di “impersonare” un altro utente, persino root.
Un primo metodo molto brutale per limitarne l'utilizzo,potrebbe essere quello di togliere il bit SUID a /bin/su, in modo che nessuno, ad eccezione di root, possa usare tale comando. E' una soluzione possibile, ma impedirebbe ad esempio di vietare i login diretti all'utente root, perche' poi non sarebbe piu' possibile cambiare ID  tramite su. D'altro canto e' innegabile il fatto che i permessi di default associati al comando siano troppo generosi.
Una buona alternativa a questi estremi potrebbe essere quella di consentire l'utilizzo del comando su esclusivamente ad un insieme ristretto di utenti selezionati.
Un possibile scenario potrebbe essere quello in cui esistano due gruppi sys_operators e administrators. Agli utenti appartenenti al primo gruppo deve essere concesso l'utilizzo del comando su, ma senza la possibilita' di diventare root, a differenza degli appartenenti ad administrators.
Una scelta del genere puo' risultare sensata nel caso ci sia la necessita' di avere piu' amministratori di sistema per la macchina in questione.
Per impedire l'utilizzo a chiunque del comando su, sono stati rimossi i permessi di lettura ed esecuzione a tutti gli utenti con chmod 750 /bin/su, ed impostato il bit SUID con chmod u+s /bin/su, ed infine cambiato il gruppo associato al file con chgrp sys_operators /bin/su.
In questo modo, i semplici utenti non avranno i privilegi per eseguire questo comando, mentre i membri di sys_operators potranno utilizzare su,  potendo pero' impersonare anche root.
Per fare in modo che solo gli utenti del gruppo administrators possano utilizzare su per diventare root, si puo' ricorrere al modulo pam_wheel. Esso consente infatti di specificare uno specifico gruppo (per default il gruppo wheel) ai cui membri sia consentito di assumere ID 0.
A tale scopo e' stato modificato il file /etc/pam.d/su aggiungendo la linea :

    auth    required    pam_wheel.so group=administrators

In questo modo se un utente del solo gruppo sys_operators dovesse cercare di eseguire su per diventare root il sistema risponderebbe con il messaggio su: permission denied, anche nel caso la password inserita per l'utente root fosse risultata corretta. Provando invece ad impersonare un altro utente il comando funzionera' correttamente.
Invocando invece su con un utente che appartenga al gruppo administrators, la procedura dovrebbe essere eseguita con con successo, consentendo accedere come utente root.
NOTA: per via dei permessi impostati a /bin/su, e' fondamentale che gli utenti del gruppo administrators, vengano aggiunti anche a sys_operators, poiche' in caso contrario non avrebbero il permesso di esecuzione per tale comando.

Privacy Policy