Come usare il server ssh con PAM ma non autorizzare la password auth?


13

Molti tutorial ti dicono di configurare il tuo server ssh in questo modo:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no 

ma con questa configurazione non è possibile utilizzare PAM, poiché ho intenzione di utilizzare 2 Factor Auth con Google Authenticator (OTP Onetime Password) ho bisogno di PAM.

Quindi, come configurare un nuovo demone debian jessie ssh, se voglio impedire il login con la normale password ma permetto ancora di usare PAM.

forse la domanda esatta è come configurare pam per non consentire le password?

Dettagli sull'autenticazione PAM

La disabilitazione dell'autenticazione con password basata su PAM è piuttosto intuitiva. È necessario praticamente su tutte le distribuzioni GNU / Linux (con la notevole eccezione di Slackware), insieme a FreeBSD. Se non stai attento, puoi impostare PasswordAuthentication su 'no' e comunque accedere con una sola password tramite l'autenticazione PAM. Si scopre che è necessario impostare "ChallengeResponseAuthentication" su "no" per disabilitare veramente l'autenticazione PAM. Le pagine man di FreeBSD hanno questo da dire, che può aiutare a chiarire un po 'la situazione:

Notare che se ChallengeResponseAuthentication è 'yes' e la politica di autenticazione PAM per sshd include pam_unix (8), l'autenticazione della password sarà consentita attraverso il meccanismo di risposta alla sfida indipendentemente dal valore di PasswordAuthentication.

http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html

Risposte:


23

forse la domanda esatta è come configurare pam per non consentire le password?

Corretta. Ti sei già imbattuto nel fatto che l'impostazione UsePAM noè generalmente un cattivo consiglio. Non solo impedisce qualsiasi forma di autenticazione basata su PAM, ma disabilita accounte sessionmoduli. Controllo degli accessi e configurazione della sessione sono buone cose.

Innanzitutto, costruiamo un elenco di requisiti:

  • OTP via pam_google_authenticator.so. Questo richiede UsePAM yese ChallengeResponseAuthentication yes. Dopotutto, stai chiedendo loro una credenziale!
  • Nessun'altra forma di autenticazione tramite password tramite PAM. Ciò significa disabilitare qualsiasi authmodulo che potrebbe eventualmente consentire la trasmissione di una password tramite keyboard-interactiveaccessi. (che dobbiamo lasciare abilitati per OTP)
  • Autenticazione basata su chiave. Abbiamo bisogno di richiedere l' publickeyautenticazione, e forse gssapi-with-micse hai Kerberos configurato.

Normalmente, l'autenticazione con una chiave salta completamente l'autenticazione basata su PAM. Questo ci avrebbe fermato nelle nostre tracce con le versioni precedenti di openssh, ma Debian 8 (jessie) supporta la AuthenticationMethodsdirettiva. Questo ci consente di richiedere più metodi di autenticazione, ma funziona solo con i client che implementano SSHv2.


config sshd

Di seguito sono riportate le righe che suggerisco /etc/ssh/sshd_config. Assicurati di avere un modo per accedere a questo sistema senza sshdnel caso in cui rompa qualcosa!

# Require local root only
PermitRootLogin no

# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes

# Not needed for OTP logins
PasswordAuthentication no

# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no


# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive

# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive

Non dimenticare di ricaricare sshduna volta apportate queste modifiche.

Config PAM

Dobbiamo ancora configurare PAM. Supponendo un'installazione pulita di Debian 8 (per la tua domanda):

  • Commento @include common-authdi /etc/pam.d/sshd.
  • Rivedere /etc/pam.d/sshde confermare che non authsono presenti righe che iniziano con . Non dovrebbe esserci se si tratta di un'installazione pulita, ma è meglio essere sicuri.
  • Aggiungi una authvoce per pam_google_authenticator.so.

Ricorda che le password locali funzionano ancora.

Non abbiamo apportato modifiche che potrebbero influire sugli accessi tramite una console locale o impedire agli utenti di utilizzare le password per aggiornare i loro privilegi tramite sudo.Questo non rientrava nell'ambito della domanda. Se decidi di andare oltre, ricorda che a root dovrebbe essere sempre permesso di accedere localmente tramite password. In caso contrario, rischi di bloccarti accidentalmente fuori dal sistema.


non l'ho ancora testato ma sembra logico e con 5 voti penso di poterlo accettare.
c33s

Mi sono messo alla prova. se si desidera disabilitare completamente la password, è necessario impostare anche ChallengeResponseAuthentication no. vedi blog.tankywoo.com/linux/2013/09/14/…
anonimo

@anonymous Consultare la domanda del PO e il primo punto. La disabilitazione ChallengeResponseAuthenticationinterrompe il metodo di autenticazione interattivo da tastiera, necessario per i moduli di autenticazione PAM che gestiscono OTP. (desiderato dall'OP) La disabilitazione di CRA può essere eseguita in sicurezza solo se nello stack sono presenti zero moduli PAM authche devono essere attivati. Se PasswordAuthenticatione GSSAPIAuthenticationsono disabilitati, una password non sarà accettata a meno che PAM non abbia un modulo di autorizzazione abilitato che lo richiede.
Andrew B,

(detto questo, è ancora un ottimo collegamento)
Andrew B

0

per impedire la richiesta della password

commenta questa riga

#auth       substack     password-auth

in /etc/pam.d/sshd

e assicurati di non avere nullok alla fine di questa riga, a meno che non andrà bene autenticarsi via ssh senza usare OTP

auth required pam_google_authenticator.so
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.