Autenticazione chiave SSH, ma ancora bisogno di password per sudo?

30

SSH con autenticazione della chiave pubblica-privata viene abilitato di default con la maggior parte delle distribuzioni Linux. Questo è ottimo perché quando creo account per utenti remoti non devo inviare loro informazioni sensibili (password).

Tuttavia, questo processo diventa inutile quando questi utenti devono eseguire sudo - il server sta ancora chiedendo le proprie password. Ciò significa che ho ancora bisogno di generare password per questi utenti e capire come ottenerli in modo sicuro.

Conosco il parametro sudoers e NOPASSWORD . Tuttavia, mi sento a disagio permettendoglielo. Vorrei ancora una sorta di autenticazione prima che gli utenti possano eseguire comandi sudo .

Mentre facevo qualche ricerca su questo argomento ho trovato il pam_ssh_agent_auth progetto, che dalla mia comprensione abilita la stessa autenticazione a chiave pubblica / privata usata per le connessioni ssh ma per il comando sudo .

Sembra che con questo modulo sul posto possiamo avere account completamente privi di password.

Perché questo modulo o processo simile non fa parte delle configurazioni di distribuzione Linux standard? C'è qualche avvertenza sulla sicurezza che mi manca perché non è più ampiamente adottato? Perché sudo con password è considerato più sicuro di chiave sudo pubblica / privata ?

    
posta Mxx 10.11.2014 - 23:21
fonte

4 risposte

13

Sto provando un approccio diverso che non richiede la creazione e la gestione delle password: ho impostato l'autenticazione basata su chiave con la chiave pubblica dell'utente, l'autenticazione disabilitata basata su password per ssh e impostare gli account utente con un vuoto ma scaduto password ( passwd -de ). In questo modo gli utenti vengono spinti al loro primo accesso e possono scegliere le proprie password.

Mi sento un po 'a disagio per la password vuota ma, per quanto posso dire, va bene finché l'autenticazione della password per ssh è disabilitata e non ci sono altri servizi in esecuzione che richiedono l'autenticazione (IMAP o qualcosa del genere). Qualche opinione su questo?

    
risposta data 25.03.2015 - 11:40
fonte
6

A mio parere, sudo per gli amministratori del server è un po 'eccessivo. Se le persone effettuano l'accesso e dispongono dell'accesso root (tramite qualche meccanismo), in genere eseguono le attività, dove useranno sudo per > 90% delle volte. Lo scopo di sudo è di fornire agli account che sono registrati una separazione tra le applicazioni non attendibili e le attività simili a quelle degli amministratori e informare gli utenti che stanno cambiando il sistema (e devono stare attenti). Per i desktop, entrambi si applicano. Per i server, tuttavia, la maggior parte delle attività richiede già sudo, quindi entrambi i punti diventano deboli. sudo ha alcuni vantaggi con il suo controllo a grana fine, ma per fare affidamento sulle sue capacità di registrazione, è necessario impostare la registrazione remota, altrimenti le persone con accesso root possono falsificare i registri precedenti.

Is there some security caveat I'm missing why this is not more widely adopted?

pam_ssh_agent_auth richiede l'inoltro di ssh-agent per funzionare su ssh. Tuttavia, è un po 'inutile usarlo, poiché ogni processo (non cgrouped) in esecuzione con l'account dell'utente potrebbe utilizzare l'agente per eseguire comandi come root. Ciò consente a tutti questi processi di eseguire sudo che è esattamente ciò che fa il parametro NOPASSWORD .

Il mio consiglio è di avere NOPASSWORD e di essere soddisfatto. Dà ancora alle persone la sensazione di "ora cambio il sistema", ma non ha fastidiose password.

Se vuoi ancora avere le password, puoi inviarle per e-mail in chiaro, ma richiederle di essere modificate la prima volta che vengono utilizzate. Un utente malintenzionato avrebbe bisogno sia dell'email sia della chiave privata dell'utente per avere successo. Se hanno già accesso alla chiave privata, potrebbero fare alcune cose brutte a .bashrc e ottenere l'accesso la prossima volta che l'utente ottiene sudo con una password che l'utente malintenzionato non ha bisogno di sapere.

    
risposta data 11.11.2014 - 02:41
fonte
6

Suggerisco di evitare persino l'installazione di sudo sui tuoi sistemi: si tratta di un vettore di attacco aggiuntivo che solitamente non giustifica il fatto di averlo. Ho scritto un articolo sull'uso sudo (errato) se sei interessato a saperne di più sull'argomento: link

Oggetto: la domanda originale - se hai bisogno di un comando privilegiato per essere eseguito da utenti non privilegiati, puoi usare il trucco seguente:

  1. genera una chiave SSH passphrase-less
  2. antepone la parte pubblica a quanto segue: from="127.0.0.1",command="your_desired_command_here",no-pty,no-port-forwarding,no-agent-forwarding (puoi anche limitare ulteriormente la sessione SSH, vedi "man sshd"). Nota che la chiave deve essere separata da questa intestazione da un carattere di spazio.
  3. installa quella chiave pubblica per l'account privilegiato ~ / .ssh / authorized_keys
  4. fornire all'utente la chiave privata (o creare uno script che semplicemente SSH in oltre l'interfaccia di loopback sull'account privilegiato utilizzando la chiave privata)

Ad esempio, se l'account privilegiato è r_service (creato con useradd -om -u0 -g0 -d /root/service -s /bin/bash r_service ) la chiamata a quel comando privilegiato da un account non privilegiato sarebbe qualcosa di simile:

$ ssh -i ~/.ssh/privileged_command r_service@0

In questo modo concederai ai tuoi utenti di eseguire quel comando privilegiato senza compromettere il modello di sicurezza.

    
risposta data 18.07.2015 - 14:13
fonte
1

L'autenticazione SSH e i privilegi di sicurezza sono due cose diverse, quindi non c'è motivo di averlo come caratteristica predefinita. Tuttavia, apre un altro vettore per l'attacco (c'è un CVE ) e dal mio punto di vista rende più facile per gli utenti per abusarne, che è male.

Per quanto riguarda le password, un modo è di inviare una password di breve durata all'utente e chiedergli di cambiarla dopo l'accesso iniziale. Oppure permetti loro di "registrare" il loro account e funzionano solo con l'hash. Ci sono pro e contro in ogni approccio, ma un buon posto per l'ispirazione sono i servizi commerciali e gratuiti di account Shell.

    
risposta data 11.11.2014 - 00:17
fonte

Leggi altre domande sui tag