Autenticazione a due fattori in OpenVPN con un bot di Telegram

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

  1. OpenVPN utilizza il plugin openvpn-plugin-auth-pam per l'autenticazione.
  2. Il plugin verifica la password dell'utente sul server e richiede il secondo fattore tramite il protocollo RADIUS al servizio di multifattore.
  3. Il multifattore invia tramite il bot di Telegram un messaggio all'utente per la conferma dell'accesso.
  4. 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 sistema di gestione multifattore., 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.

Autenticazione a due fattori in OpenVPN con un bot di Telegram

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.

Autenticazione a due fattori in OpenVPN con un bot di Telegram

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.

Autenticazione a due fattori in OpenVPN con un bot di Telegram

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 openvpn

Il 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_radius

Apri il file per modificarlo /etc/pam_radius.conf e specifica l'indirizzo del server RADIUS Multifactor

radius.multifactor.ru shared_secret 40

dove:

  • 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/openvpn

e scrivi al suo interno

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 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 documentazione del modulo.

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@server

Configurazione del client

Abilita nella configurazione del file del client la richiesta di nome utente e password

auth-user-pass

Verifica

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.

Autenticazione a due fattori in OpenVPN con un bot di Telegram

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 un articolo dettagliato.

La guida è stata realizzata con esempi su CentOS 7.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster