Autenticazione a due fattori in OpenVPN con bot Telegram

L'articolo descrive la configurazione di un server OpenVPN per abilitare l'autenticazione a due fattori con un bot di Telegram che invierà una richiesta di conferma al momento della connessione.

OpenVPN è un noto server VPN open source gratuito, ampiamente utilizzato per organizzare l'accesso sicuro dei dipendenti alle risorse organizzative interne.

Come autenticazione per la connessione a un server VPN, viene solitamente utilizzata una combinazione di chiave e login/password dell'utente. Allo stesso tempo, la password memorizzata sul client trasforma l'intero set in un unico fattore che non fornisce il adeguato livello di sicurezza. Un utente malintenzionato, dopo aver ottenuto l'accesso al computer client, ottiene anche l'accesso al server VPN. Ciò è particolarmente vero per le connessioni da macchine che eseguono Windows.

L'utilizzo del secondo fattore riduce il rischio di accesso non autorizzato del 99% e non complica affatto il processo di connessione per gli utenti.

Faccio subito una prenotazione: per l'implementazione dovrai connettere un server di autenticazione di terze parti multifactor.ru, in cui potrai utilizzare una tariffa gratuita per le tue esigenze.

Come funziona

  1. OpenVPN utilizza il plugin openvpn-plugin-auth-pam per l'autenticazione
  2. Il plugin controlla la password dell'utente sul server e richiede il secondo fattore tramite il protocollo RADIUS nel servizio Multifactor
  3. Multifactor invia un messaggio all'utente tramite bot Telegram confermando l'accesso
  4. L'utente conferma la richiesta di accesso nella chat di Telegram e si connette alla VPN

Installazione di un server OpenVPN

Esistono molti articoli su Internet che descrivono il processo di installazione e configurazione di OpenVPN, quindi non li duplicheremo. Se hai bisogno di aiuto, alla fine dell'articolo sono presenti diversi collegamenti ai tutorial.

Impostazione del multifattore

Vai a Sistema di controllo multifattore, vai alla sezione "Risorse" e crea una nuova VPN.
Una volta creato, avrai due opzioni a tua disposizione: Identificatore NAS и Segreto condiviso, saranno necessari per la successiva configurazione.

Autenticazione a due fattori in OpenVPN con bot Telegram

Nella sezione "Gruppi", vai alle impostazioni del gruppo "Tutti gli utenti" e rimuovi il flag "Tutte le risorse" in modo che solo gli utenti di un determinato gruppo possano connettersi al server VPN.

Crea un nuovo gruppo "Utenti VPN", disabilita tutti i metodi di autenticazione tranne Telegram e indica che gli utenti hanno accesso alla risorsa VPN creata.

Autenticazione a due fattori in OpenVPN con bot Telegram

Nella sezione "Utenti", crea gli utenti che avranno accesso alla VPN, aggiungili al gruppo "Utenti VPN" e invia loro un collegamento per configurare il secondo fattore di autenticazione. L'accesso dell'utente deve corrispondere all'accesso sul server VPN.

Autenticazione a due fattori in OpenVPN con bot Telegram

Configurazione di un server OpenVPN

Apri il file /etc/openvpn/server.conf e aggiungi un plugin per l'autenticazione utilizzando il modulo PAM

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Il plugin può essere posizionato nella directory /usr/lib/openvpn/plugins/ o /usr/lib64/openvpn/plugins/ a seconda del sistema.

Successivamente è necessario installare il modulo pam_radius_auth

$ sudo yum install pam_radius

Apri il file per la modifica /etc/pam_radius.conf e specificare l'indirizzo del server RADIUS del Multifactor

radius.multifactor.ru   shared_secret   40

dove:

  • raggio.multifactor.ru — indirizzo del server
  • shared_secret: copia dal parametro delle impostazioni VPN corrispondente
  • 40 secondi - timeout per attendere una richiesta con un ampio margine

I server rimanenti devono essere cancellati o commentati (mettere un punto e virgola all'inizio)

Successivamente, crea un file per il tipo di servizio openvpn

$ sudo vi /etc/pam.d/openvpn

e scrivilo

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

La prima riga collega il modulo PAM pam_radius_auth con i parametri:

  • skip_passwd - disabilita la trasmissione della password dell'utente al server RADIUS Multifactor (non ha bisogno di conoscerla).
  • client_id: sostituisci [NAS-Identifier] con il parametro corrispondente dalle impostazioni delle risorse VPN.
    Tutti i possibili parametri sono descritti in documentazione del modulo.

La seconda e la terza riga includono la verifica del sistema di login, password e diritti utente sul tuo server insieme a un secondo fattore di autenticazione.

Riavvia OpenVPN

$ sudo systemctl restart openvpn@server

Configurazione del cliente

Includere una richiesta di accesso utente e password nel file di configurazione del client

auth-user-pass

Проверка

Avvia il client OpenVPN, connettiti al server, inserisci nome utente e password. Il bot di Telegram invierà una richiesta di accesso con due pulsanti

Autenticazione a due fattori in OpenVPN con bot Telegram

Un pulsante consente l'accesso, il secondo lo blocca.

Ora puoi salvare in sicurezza la tua password sul client; il secondo fattore proteggerà in modo affidabile il tuo server OpenVPN da accessi non autorizzati.

Se qualcosa non funziona

Controlla in sequenza di non aver tralasciato nulla:

  • C'è un utente sul server con OpenVPN con una password impostata
  • Il server ha accesso tramite la porta UDP 1812 all'indirizzo raggio.multifactor.ru
  • I parametri NAS-Identifier e Shared Secret sono specificati correttamente
  • Un utente con lo stesso login è stato creato nel sistema Multifactor e gli è stato concesso l'accesso al gruppo utenti VPN
  • L'utente ha configurato il metodo di autenticazione tramite Telegram

Se non hai mai configurato OpenVPN prima, leggi articolo esteso.

Le istruzioni sono realizzate con esempi su CentOS 7.

Fonte: habr.com

Aggiungi un commento