Non è sicuro avere un utente sensibile con sudo senza password?


10

Sono nuovo di Ansible. La maggior parte delle guide di provisioning VPS che ho visto finora fanno questo:

  1. disabilita il root dal login
  2. creare un nuovo utente che può accedere solo con ssh(non con password)
  3. aggiungere il nuovo utente al wheelgruppo, con autorizzazione sudo senza password

Capisco (1) e (2), ma non (3).

Sicuramente senza password sudoè come accedere come root? Capisco il vantaggio (convenienza), ma non è altamente insicuro?

Mi rendo conto che gli amministratori gestiscono le loro reti in vari modi, e quindi si potrebbe dire che è "soggettivo", ma questa è una pratica MOLTO comune, è persino mostrata in vari documenti ufficiali rispondenti e nelle guide pubblicate dalle società di hosting. Va contro il buon senso. Qual è la logica alla base?


1
Ansible è progettato per automatizzare le attività amministrative, quindi generalmente necessita di un accesso di livello superiore (root), quindi "sudo senza password". Se ti serve solo per eseguire un sottoinsieme dei comandi disponibili sul tuo sistema, puoi bloccarlo solo su quei comandi con una configurazione sudo più dettagliata. Sudo senza password non significa necessariamente l'accesso a tutto ciò che root può fare (anche se questo diventa difficile da applicare quando ti rendi conto che l'utente può potenzialmente modificare la tua configurazione sudo tramite sudo per darsi un maggiore controllo ...).
David Spillett,

@DavidSpillett Mi stavo chiedendo a questo proposito - cioè definire quali comandi sudo consentire nel file sudoers ... ma ho letto da qualche parte che Ansible fa tutto interpretando tramite comandi complessi di Python e che quell'approccio diventerebbe molto veloce.
Lonix,

Risposte:


18

Se l'account del servizio può eseguire sudo senza password, è necessario proteggere l'accesso a tale account.

Avere l'account non ha una password e usare solo le chiavi ssh per accedere ad essa, lo fa, a condizione che sia possibile proteggere anche la chiave privata ssh.


Quindi sono "una specie di" giusto nel sentirmi turbato da questa convenzione - eppure, questa è la convenzione per rispondere, per necessità / pragmatismo.
Lonix,

Quindi stai dicendo che essenzialmente "trasferisco" la sicurezza di base dal VPS al mio sistema locale, che contiene la chiave ssh dell'account ansible? Nel qual caso, il punto debole non è il VPS stesso, piuttosto, sono io! E devo essere più vigile nel proteggere quella chiave ssh, in cambio della comodità che mi dà l'automazione sensibile.
Lonix,

6
La chiave ssh, passphrase protetta con ssh-agent, è una credenziale ragionevolmente buona.
John Mahowald,

@lonix Tutti i sistemi protetti richiedono credenziali. I sistemi protetti sono al massimo sicuri quanto le misure messe in atto per proteggere queste credenziali, dal momento che avere quelle dà il 100% di accesso ad esse. Quindi sì, non puoi aspettarti di proteggere il tuo VPS se non proteggi correttamente la tua chiave SSH (o la password di root o altro). Il fatto che configuri sudo senza password non significa nulla da questo punto di vista, abilitare sudo con password non cambia il fatto che è essenziale proteggere la chiave SSH.
Giacomo Alzetta,

@GiacomoAlzetta Lo so, ciò che intendevo sopra è che la responsabilità viene spostata dal telecomando al computer locale. Poiché l'escalation sudo viene eseguita senza password, il punto debole diventa locale.
lonix,

4

Il nuovo utente creato in (2) può accedere solo con la chiave SSH, senza password. La chiave SSH consente l'accesso indiretto alla radice. Quindi questo equivale a consentire solo l'accesso root con una chiave.

Poiché l'account non ha una password, non è possibile sudorichiedere una password. Inoltre Ansible deve essere in grado di eseguire comandi. Avere una password aggiuntiva da fornire nello stesso posto della chiave non aumenterebbe la sicurezza.


2

Il problema è che ansible è per gli amministratori e l'automazione, quindi se è necessario inserire una password per eseguire uno script non è proprio il modo migliore. Inoltre, non è sicuro archiviare la password per sudo in un file o database e risponderlo ogni volta che esegue il playbook. Quindi la combinazione di sudo senza password e l'autenticazione con ssh Keys è il metodo migliore per garantire sicurezza e senza problemi corretti eseguendo il playbook. Anche tu un amministratore e sai cosa stai programmando nel playbook. Quindi il playbook non può distruggere i tuoi server.


I playbook possono distruggere i tuoi sistemi, ma se usi solo chiavi di ambiente di test separate, ciò non distruggerà gli host di produzione.
John Mahowald,

Esatto, si spera sia un prerequisito quando si lavora su sistemi produttivi.
NicoKlaus,

1
Ansible ha 'ansible-vault' e plugin / moduli / librerie che consentono la memorizzazione di segreti in molti sistemi di archiviazione segreti di terze parti come bitwarden, hashicorp vault, keepass, ecc.
Zoredache,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.