it-swarm.dev

Quanto è sicuro NOPASSWD in modalità Sudo senza password?

Su tutte le nostre scatole abbiamo accesso ssh tramite chiavi. Tutte le chiavi sono protette da password. In questo momento la modalità Sudo è non senza password. Poiché il numero di VM è in aumento nella nostra configurazione, esaminiamo l'utilizzo di Ansible .

Ansible stesso dice nel docs :

L'uso di Sudo senza password semplifica l'automazione delle cose, ma non è necessario.

Questo mi ha fatto pensare al Sudo senza password e ho trovato alcune domande/risposte qui. Tuttavia, non sono riuscito a trovare nulla sui problemi di sicurezza del Sudo senza password di per sé.

In futuro potrebbe accadere che l'utente Bob abbia una password diversa sulla macchina X rispetto a Y. Quando Bob è un sudoer, ciò crea problemi con Ansible per inserire una password Sudo per tutte le caselle. Dato che ssh è fatto tramite chiavi, le chiavi sono protette da password e tutti gli account utente hanno password (quindi su bob è impossibile senza password): come viene influenzata la sicurezza quando NOPASSWD è impostato nel file Sudo?

43
Jurian Sluiman

NOPASSWD non ha un impatto rilevante sulla sicurezza. Il suo effetto più ovvio è fornire protezione quando l'utente ha lasciato la propria postazione di lavoro incustodita: un utente malintenzionato con accesso fisico alla propria postazione di lavoro può quindi estrarre dati, eseguire azioni e impiantare malware con le autorizzazioni dell'utente, ma non elevare il suo accesso al root. Questa protezione è di utilità limitata poiché l'aggressore può creare un programma di tipo keylogger che registri la password dell'utente la prossima volta che la inserisce in un prompt Sudo o in uno screensaver.

Tuttavia, la richiesta della password innalza il livello dell'attaccante. In molti casi, la protezione da attacchi non sofisticati è utile, in particolare in scenari di workstation non presidiate in cui l'attacco è spesso un'opportunità e l'attaccante potrebbe non sapere come trovare e configurare malware discreti con breve preavviso. Inoltre, è più difficile nascondere malware quando non si hanno i permessi di root - non è possibile nascondersi da root se non si dispone di root.

Ci sono alcuni scenari realistici in cui la mancanza di una password protegge anche dagli 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), o accede ad essi da un dump di memoria di un agente chiave. Se viene rilevato un furto, questo è un segnale per indagare su attività recenti sull'account dell'utente e ciò significa che deve essere rilevato un malware piantato. Se l'attaccante avesse accesso solo a livello utente, qualsiasi cosa facesse lascerebbe tracce nei registri; se l'attaccante ha ottenuto la password dell'utente ed eseguito Sudo, tutti i log sono ora compromessi.

Non so se gli svantaggi di NOPASSWD bilancino gli aspetti positivi del tuo caso d'uso. Devi bilanciarlo con tutti gli altri fattori della tua situazione. Ad esempio, sembra che tu autorizzi 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 a Ansible che supporterebbero password diverse del Sudo? Hai preso in considerazione altri meccanismi di autenticazione?

Esistono due casi specifici per cui non desideri un Sudo senza password:

  1. Questo è un meccanismo di difesa contro gli utenti malintenzionati che ottengono l'accesso a un account amministrativo. Ciò può avvenire attraverso lo sfruttamento o a causa di un amministratore che lascia la sua workstation incustodita senza bloccare la sessione.
  2. Dover emettere nuovamente 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 TUTTO l'accesso al tuo strumento di automazione. Ora pensi a cosa deve fare effettivamente lo strumento? Ha davvero bisogno di tutti questi accessi? Probabilmente no.

Sudo è dotato di una funzione Nice che consente di configurare comandi specifici con il flag NOPASSWD all'interno del file sudoers:

username myhost = (root) NOPASSWD: /sbin/shutdown
username myhost = (root) NOPASSWD: /sbin/reboot
24
Lucas Kauffman

Una cosa non sembra che qualcuno 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 si esegue accidentalmente un programma o uno script dannoso come utente non root senza Sudo, anche se potrebbe comunque essere in grado di arrecare molti danni, tuttavia (salvo un exploit separato) non si otterranno privilegi di root. Quindi almeno non dovrai preoccuparti di un rootkit o altro. Ma con la modalità NOPASSWD, non hai quella protezione. Qualsiasi programma eseguito sotto il tuo utente sarà in grado di eseguire l'escalation al root invocando nuovamente se stesso con Sudo. Il malware deve ancora essere programmato in modo specifico per fare questo, e altrimenti non avrà accesso root, ma che dire del codice dannoso che lo fa?

2
flarn2006

Dato che ssh è fatto tramite chiavi, le chiavi sono protette da password e tutti gli account utente hanno password (quindi su bob è impossibile senza una password)

Cerchiamo di essere chiari qui. Le password utilizzate per proteggere le chiavi SSH e le password degli account utente NON SONO GLI STESSI.

NOPASSWD consente semplicemente all'utente di eseguire comandi come un altro utente senza inserire la sua password. Ciò non influisce sul fatto che l'utente deve inserire la propria password durante l'inserimento di SSH nel sistema.

1
user10211

Ansible può usare varie cose per l'automazione: come Sudo con una password Sudo o NOPASSWD. Oppure usa su, suexec, doas o altro.

Oggi parliamo di:

become: yes
become_user:root
become_method: Sudo

Basta tenere presente che idealmente rispondere dovrebbe essere usato per l'automazione (come codice), non per un uso interattivo. Gli utenti umani potrebbero comunque utilizzare le password, per inciso potrebbero inciampare nelle politiche di scadenza.

Ansible Tower e AWX possono archiviare tutti i tipi di credenziali crittografate e delegare il loro utilizzo per lavori specifici, senza perdite di chiavi o password.

Un'alternativa è usare chiavi ssh temporanee (firmate). Hashicorp Vault può gestirli

1
bbaassssiiee

Ci sono pro e contro nel far inserire all'utente una password per accedere a Sudo.

Pro: migliore protezione se qualcuno ottiene l'accesso a un account amministratore. ad esempio attraverso un terminale sbloccato o una sorta di exploit.

Contro: l'utente sta inserendo una password in testo semplice che è crittografata in transito, ma poi decifrata prima che raggiunga la shell dell'utente. Qualcuno potrebbe ad esempio manomettere lo script bashrc per eseguire un keylogger. A seconda della configurazione e delle abitudini degli utenti che potrebbero consentire l'uso della password per l'accesso diretto all'account degli utenti su questa macchina e forse anche su altre macchine. Le persone riutilizzano le password troppo spesso.

0
mc0e