L'articolo descrive la configurazione di un server OpenVPN per l'attivazione dell'autenticazione a due fattori tramite un bot di Telegram, che invia una richiesta di conferma durante la connessione.
OpenVPN è un noto server VPN gratuito e open source, ampiamente utilizzato per fornire accesso sicuro ai dipendenti alle risorse interne dell'organizzazione.
Di norma, per l'autenticazione alla connessione al server VPN si utilizza una combinazione di chiave e nome utente/password. Tuttavia, la password salvata sul client riduce il tutto a un unico fattore, non garantendo un adeguato livello di sicurezza. Un malintenzionato, avendo accesso al computer del cliente, otterrebbe anche l'accesso al server VPN. Questo è particolarmente rilevante 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.
Voglio precisare che per l'implementazione è necessaria la connessione a un server di autenticazione esterno multifactor.ru, che offre un piano gratuito per i propri scopi.
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 nel servizio Multifactor.
- Il servizio Multifactor invia un messaggio all'utente tramite il bot di Telegram per confermare l'accesso.
- L'utente conferma in chat Telegram la richiesta di accesso e si connette al VPN.
Installazione del server OpenVPN.
In internet ci sono molteplici articoli 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 collegamenti a materiali didattici.
Configurazione del Multifactor.
Accedi al , vai alla sezione "Risorse" e crea un nuovo VPN.
Dopo la creazione, ti saranno disponibili due parametri: NAS-Identificatore e Shared Secret, che saranno necessari per la configurazione successiva.

Nella sezione "Gruppi", vai alle impostazioni del gruppo "All users" e deseleziona l'opzione "Tutte le risorse", in modo che 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 specifica che gli utenti hanno accesso alla risorsa VPN creata.

Nella sezione "Utenti" crea gli utenti che avranno accesso al VPN, aggiungili al gruppo "VPN users" e invia loro un link per configurare il secondo fattore di autenticazione. Il nome utente deve corrispondere a quello del server VPN.

Configurazione del server OpenVPN.
Aprite il file /etc/openvpn/server.conf e aggiungi il plugin per l'autenticazione tramite il 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 per modifica il file /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 deve essere copiato dal relativo parametro delle impostazioni VPN.
- 40 secondi è il timeout di attesa della richiesta con ampio margine.
Gli altri server devono essere eliminati o commentati (aggiungere un punto e virgola all'inizio).
Successivamente, crea un file per il service-type openvpn.
$ sudo vi /etc/pam.d/openvpne scrivi in esso
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 disattiva l'invio della password dell'utente al server RADIUS Multifactor (non deve saperlo).
- client_id inserisci al posto di [NAS-Identifier] il parametro corrispondente delle impostazioni della risorsa VPN.
Tutti i parametri possibili sono descritti nella .
Le seconde e terze righe abilitano il controllo di sistema del nome utente, della password e dei diritti utente sul tuo server, insieme al secondo fattore di autenticazione.
Riavvia OpenVPN.
$ sudo systemctl restart openvpn@serverConfigurazione del client
Abilita nel file di configurazione del client la richiesta di nome utente e password.
auth-user-passVerifica
Avvia il client OpenVPN, connettiti al server, specifica il nome utente e la password. Riceverai una richiesta di accesso dal bot di Telegram con due pulsanti.

Un pulsante consente l'accesso, l'altro lo blocca.
Ora puoi tranquillamente salvare la password sul client, il secondo fattore proteggerà il tuo server OpenVPN da accessi non autorizzati.
Se qualcosa non funziona.
Controlla sequenzialmente se hai trascurato qualcosa:
- Sul server OpenVPN c'è un utente con password impostata.
- Il server ha accesso aperto sulla porta UDP 1812 all'indirizzo radius.multifactor.ru.
- I parametri NAS-Identifier e Shared Secret sono stati specificati correttamente.
- Un utente con lo stesso nome utente è stato registrato 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, leggi .
La guida è realizzata con esempi su CentOS 7.
Fonte: habr.com
