Questo articolo descrive la configurazione del server OpenVPN per abilitare l'autenticazione a due fattori con un bot di Telegram che invierà una richiesta di conferma durante la connessione.
OpenVPN è un noto server VPN gratuito e open source, ampiamente utilizzato per garantire l'accesso sicuro dei dipendenti alle risorse interne dell'organizzazione.
In genere, per l'autenticazione al server VPN viene utilizzata una combinazione di chiave e login/password dell'utente. Tuttavia, la password memorizzata sul client riduce il tutto a un fattore unico, non garantendo un adeguato livello di sicurezza. Un malintenzionato che ottiene accesso al computer del cliente ha accesso anche al server VPN. Questo è particolarmente critico per le connessioni da macchine con sistema operativo Windows.
L'uso di un secondo fattore riduce del 99% il rischio di accesso non autorizzato e non complica affatto il processo di connessione per gli utenti.
Faccio subito presente che per l'implementazione sarà necessario collegarsi a un server di autenticazione esterno multifactor.ru, dove si può utilizzare un piano gratuito per le proprie esigenze.
Il principio di funzionamento
- OpenVPN utilizza il plugin openvpn-plugin-auth-pam per l'autenticazione.
- Il plugin verifica la password dell'utente sul server e richiede il secondo fattore tramite il protocollo RADIUS al servizio di multifattore.
- Il multifattore invia tramite il bot di Telegram un messaggio all'utente per la conferma dell'accesso.
- L'utente conferma la richiesta di accesso nel chat di Telegram e si collega al VPN.
Installazione del server OpenVPN.
Ci sono numerosi articoli su Internet che descrivono il processo di installazione e configurazione di OpenVPN, quindi non li ripeteremo. Se hai bisogno di aiuto, alla fine dell'articolo ci sono alcuni link a materiali formativi.
Configurazione del multifattore.
Accedi alla , vai alla sezione 'Risorse' e crea un nuovo VPN.
Dopo la creazione, ti saranno disponibili due parametri: NAS-IDentifier e Shared Secret, saranno necessari per la configurazione successiva.

Nella sezione 'Gruppi', vai alle impostazioni del gruppo 'All users' e rimuovi il flag 'Tutte le risorse', affinché solo gli utenti di un determinato gruppo possano connettersi al server VPN.
Crea un nuovo gruppo "VPN users", disabilita tutti i metodi di autenticazione tranne Telegram e indica che gli utenti hanno accesso alla risorsa VPN creata.

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

Configurazione del server OpenVPN
Apri il file /etc/openvpn/server.conf e aggiungi il plugin per l'autenticazione tramite modulo PAM
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnIl plugin può trovarsi nella directory /usr/lib/openvpn/plugins/ o /usr/lib64/openvpn/plugins/ a seconda del tuo sistema.
Successivamente, è necessario installare il modulo pam_radius_auth
$ sudo yum install pam_radiusApri il file per modificarlo /etc/pam_radius.conf e specifica l'indirizzo del server RADIUS Multifactor
radius.multifactor.ru shared_secret 40dove:
- radius.multifactor.ru è l'indirizzo del server
- shared_secret — copialo dall'impostazione corrispondente delle configurazioni VPN
- 40 secondi — timeout per la richiesta con un ampio margine
Gli altri server devono essere rimossi o commentati (mettere un punto e virgola all'inizio della riga)
Successivamente, crea un file per il type di servizio openvpn
$ sudo vi /etc/pam.d/openvpne scrivi al suo interno
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authla 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 deve conoscerla).
- client_id — inserisci al posto di [NAS-Identifier] il parametro corrispondente delle configurazioni della risorsa VPN.
Tutti i possibili parametri sono descritti nella .
La seconda e terza riga includono la verifica del nome utente, della password e dei diritti dell'utente sul tuo server insieme al secondo fattore di autenticazione.
Riavvia OpenVPN
$ sudo systemctl restart openvpn@serverConfigurazione del client
Abilita nella configurazione del file del client la richiesta di nome utente e password
auth-user-passVerifica
Avvia il client per OpenVPN, connettiti al server, specifica nome utente e password. Dal bot di Telegram arriverà una richiesta di accesso con due pulsanti.

Un pulsante consente l'accesso, l'altro lo blocca.
Ora puoi tranquillamente salvare la password sul client; il secondo fattore proteggerà in modo affidabile il tuo server OpenVPN da accessi non autorizzati.
Se qualcosa non funziona
Controlla passo dopo passo che non hai trascurato nulla:
- Sul server con OpenVPN c'è un utente con password impostata
- L'accesso al server è aperto sulla porta UDP 1812 all'indirizzo radius.multifactor.ru
- I parametri NAS-Identifier e Shared Secret sono corretti
- Nel sistema Multifactor è stato registrato un utente con lo stesso nome utente e gli è stato fornito l'accesso al gruppo utenti VPN
- L'utente ha configurato il metodo di autenticazione tramite Telegram
Se non hai mai configurato OpenVPN, leggi .
La guida è stata realizzata con esempi su CentOS 7.
Fonte: habr.com
