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.