Come utilizzare Google Authenticator con il server OpenVPN su Ubuntu 12.04


9

Ho un sistema OpenVPN funzionante su Ubuntu 12.04 e vorrei aggiungere Google Authenticator per una maggiore sicurezza.

Questa è la mia attuale configurazione di openvpn:

dev tun
proto udp
porta 1096
ca ubuserv04-ca.crt
cert ubuserv04.crt
chiave ubuserv04.key
dh dh1024.pem
server 10.10.0.0 255.255.255.0
push "redirect-gateway def1"
push "route 192.168.0.0 255.255.255.0"
push "opzione dhcp DNS 8.8.8.8"
push "opzione dhcp DNS 8.8.4.4"
galleggiante
log-append /var/log/openvpn-otp-1096-status.log

(Questa è solo una configurazione di prova, so che dovrei cambiarne alcuni aspetti, ma per ora funziona.)

Sul client ho:

dev tun
cliente
proto udp
my.server.fqdn 1096 remoto
resolv-retry infinite
ca ubuserv04-ca.crt
cert user1.crt
chiave user1.key
verbo 3

L'impostazione sopra funziona bene: nessun errore, veloce, stabile.

Ho provato diversi howtos per far funzionare Google Authenticator ma finisco sempre per risolvere i problemi collaterali in quegli articoli. Non voglio eseguire l'autenticazione con il database utente / password locale del server, ma solo il sistema che ho già installato e Google Authenticator.

Ho Google Authenticator in esecuzione; L'ho installato usando apt-get install libpam-google-authenticator e l'ho usato prima per autenticare le sessioni ssh. Funzionava bene ma ora l'ho disabilitato perché è solo un server di prova e quel particolare test è stato completato.

Si prega di essere specifici. So che dovrei aggiungere un plugin alla configurazione ovpn del mio server e che dovrei aggiungere qualcosa a /etc/pam.d/openvpn ma che cosa esattamente?

Qualsiasi aiuto sarebbe molto apprezzato!

/ informazioni extra

Ho seguito questo articolo: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu Invece di compilare dal sorgente ho installato Google Authenticator con apt -get installa libpam-google-authenticator. Ho anche letto, ma non utilizzato in questo caso, questi articoli: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ e http : //zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . E ho letto su PAM, come suggerito;)

Ora, ecco alcuni sviluppi interessanti.

/etc/pam.d/openvpn ha questo:

account [success = 2 new_authtok_reqd = done default = ignore] pam_unix.so 
account [success = 1 new_authtok_reqd = done default = ignore] pam_winbind.so 
requisito account pam_deny.so
account richiesto pam_permit.so
autenticazione obbligatoria pam_google_authenticator.so

Come da howto ho copiato l'originale da /etc/pam.d/common-account e ho aggiunto l'ultima riga. Ora, se commento l'ultima riga, la connessione OpenVPN ha esito positivo. Se tuttavia l'ultima riga non viene commentata, /var/log/auth.log registra questo:

Impossibile aprire la PAM (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: simbolo indefinito: pam_get_item
PAM aggiunta modulo difettoso: pam_google_authenticator.so

e /var/log/openvpn-otp-1096.log registra questo:

PLUGIN_CALL: funzione plug-in PLUGIN_AUTH_USER_PASS_VERIFY non riuscita con stato 1: /usr/lib/openvpn/openvpn-auth-pam.so
Errore di autenticazione TLS: verifica autenticazione nome utente / password non riuscita per peer
e-utilizzo del contesto SSL / TLS
AUTH-PAM: BACKGROUND: autenticazione utente "martin" non riuscita: il modulo è sconosciuto

Il problema sembra essere tra PAM e Google Authenticator.

Google elenca i problemi con altri plugin, ma non riesco davvero a trovare informazioni riguardanti Google Authenticator in particolare.


"Ho provato diversi howtos per far funzionare Google Authenticator" Potresti collegarti ad alcuni di questi? È piuttosto vago ciò che hai provato esattamente e sarebbe triste se altri utenti trovassero approcci che hai già provato. A proposito, libpam-google-authenticatorè per l'autenticazione utilizzando Google Authenticator in PAM. Questo non è di alcuna utilità in OpenVPN poiché si utilizzano certificati lì. Ti suggerisco di leggere cos'è PAM: capirai che non ha nulla a che fare con OpenVPN nel tuo caso.
gertvdijk,

@ "Questo non è utile in OpenVPN poiché si utilizzano certificati lì." Va bene. Puoi utilizzare certificati e una password una tantum da Google Authenticator tramite PAM come secondo fattore di autenticazione in OpenVPN.
Maledetto terminal,

Aggiunta di informazioni extra alla domanda originale. Non sono sicuro se lo sto facendo bene ...
Forkbeard,

@gertvdijk: capisco che è ridondante, ma vorrei usare entrambi i certificati e una password singola. Mi sembra più sicuro quindi utilizzare entrambi i metodi singolarmente.
Forkbeard,

Hm, sembra essere un bug in Google Authenticator. Costruirlo con LDFLAGS = "- lpam" dovrebbe aiutare ma non sono sicuro di come farlo, l'esempio su Howtoforge (link nella domanda originale) non funziona, l'URL restituisce un 404.
Forkbeard,

Risposte:


2

Ok, Google è mio amico.

L'ho fatto:

# apt-get purge libpam-google-authenticator
# download https://code.google.com/p/google-authenticator/downloads/list
# apt-get install libpam-dev

Aggiungi questo a Makefile, subito dopo la licenza:

LDFLAGS = "- LpAm"

Poi

# rendere
# make install
# service openvpn restart

Inoltre, assicurati che /home/username/.google_authenticator non abbia alcun diritto tranne i diritti di lettura per l'utente che lo utilizzerà.

Ora devo inserire il mio nome utente che è il mio nome utente locale sul server (il mio account di shell) come nome utente OpenVPN e il codice a 6 cifre di Google Authenticator come password.

Ora funziona.

Grazie a tutti per il vostro tempo :)

(Come posso contrassegnare questo post come risolto? Devo solo modificare il titolo dell'argomento?)


2

Se si desidera solo l'autenticazione OTP per OpenVPN, è disponibile un plug-in OpenVPN OTP nativo. È compatibile con le chiavi segrete di Google Authenticator. Tutti i segreti sono memorizzati in un singolo file di testo e non è necessario configurare PAM o creare directory utente.

Dai un'occhiata: https://github.com/evgeny-gridasov/openvpn-otp


Grazie per la tua risposta, egridasov. Dal momento che ho un setup funzionante ora non lo proverò ma potrei provarlo su un altro sistema. Il reneg-sec 0 bit che trovo particolarmente utile, mi sono rotto la testa su come ottenere la connessione per non cadere dopo 3600 secondi
Forkbeard
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.