NOPASSWD
non ha un grande impatto sulla sicurezza. Il suo effetto più ovvio è quello di fornire protezione quando l'utente ha lasciato la sua postazione di lavoro incustodita:un utente malintenzionato con accesso fisico alla sua postazione di lavoro può quindi estrarre dati, eseguire azioni e installare malware con le autorizzazioni dell'utente, ma non elevare il suo accesso a root. Questa protezione è di utilità limitata perché l'attaccante può installare un programma di tipo keylogger che registra la password dell'utente la volta successiva che la inserisce al prompt sudo o in uno screensaver.
Tuttavia, richiedere la password alza il livello per l'attaccante. In molti casi, la protezione contro aggressori non sofisticati è utile, in particolare in scenari di workstation non presidiate in cui l'attacco è spesso un'opportunità e l'aggressore potrebbe non sapere come trovare e configurare malware discreti con breve preavviso. Inoltre è più difficile nascondere il malware quando non si dispone dei permessi di root:non è possibile nascondersi da root se non si dispone di root.
Esistono alcuni scenari realistici in cui la mancanza di una password protegge anche da aggressori sofisticati. Ad esempio, un laptop rubato:il laptop dell'utente viene rubato, completo di chiavi SSH private; o il ladro riesce a indovinare la password per il file chiave (forse con la forza bruta), oppure ottiene l'accesso da un dump della memoria di un agente chiave. Se viene rilevato il furto, questo è un segnale per indagare sulle attività recenti sull'account di quell'utente e ciò significa che dovrebbe essere rilevato un malware installato. Se l'aggressore disponeva solo dell'accesso a livello di utente, qualsiasi cosa facesse lascerà tracce nei log; se l'attaccante ha ottenuto la password dell'utente ed ha eseguito sudo, tutti i log sono ora compromessi.
Non so se gli aspetti negativi di NOPASSWD
bilancia i lati positivi per il tuo caso d'uso. Devi bilanciarlo con tutti gli altri fattori della tua situazione. Ad esempio, sembra che tu consenta ma non imponga di avere password diverse. Puoi invece utilizzare un database di account centralizzato? Di quanto contenimento hai bisogno tra i tuoi sistemi? Stai prendendo in considerazione alternative ad Ansible che supportino diverse password sudo? Hai preso in considerazione altri meccanismi di autenticazione?
Ci sono due casi specifici per cui non vuoi sudo senza password:
- Si tratta di un meccanismo di difesa contro utenti malintenzionati che ottengono l'accesso a un account amministrativo. Ciò può essere dovuto allo sfruttamento o al fatto che un amministratore ha lasciato la sua workstation incustodita senza bloccare la sua sessione.
- Dover reimmettere la password quando si utilizza sudo offre agli utenti impulsivi il tempo di pensarci due volte prima di eseguire effettivamente l'azione.
Informazioni sull'automazione:
Sono d'accordo che puoi farlo senza password, ma non richiedendo la password sudo stai effettivamente dando a TUTTO l'accesso al tuo strumento di automazione. Ora pensa a cosa è effettivamente richiesto lo strumento? Ha davvero bisogno di tutti questi accessi? Probabilmente no.
Sudo ha una bella caratteristica che ti permette di configurare comandi specifici con il NOPASSWD
flag all'interno del file sudoers:
username myhost = (root) NOPASSWD: /sbin/shutdown
username myhost = (root) NOPASSWD: /sbin/reboot
Una cosa che non sembra che nessuno abbia sottolineato per qualche motivo (correggimi se sbaglio) è che consente a qualsiasi programma che esegui di elevare all'accesso root senza che tu lo sappia. Normalmente, se esegui accidentalmente un programma o uno script dannoso come utente non root senza sudo, sebbene possa ancora essere in grado di causare molti danni, (salvo un exploit separato) non avrà comunque i privilegi di root. Quindi almeno non dovrai preoccuparti di un rootkit o altro. Ma con la modalità NOPASSWD, non hai quella protezione. Qualsiasi programma che viene eseguito sotto il tuo utente sarà in grado di passare a root richiamando se stesso con sudo. Il malware deve ancora essere programmato in modo specifico per farlo e altrimenti non avrà accesso root, ma che dire del codice dannoso che lo fa?