In un precedente articolo abbiamo visto come configurare un router Mikrotik come server OpenVPN. In questa guida vedremo come aumentare il livello di sicurezza aggiungendo al server Mikrotik OpenVPN 2FA con Google Authenticator e FreeRadius.
Premessa
- è necessario disporre di un IP Pubblico statico o dinamico
- nel caso di IP Pubblico dinamico deve esserci un servizio DDNS configurato e funzionante(scopri come fare by foisfabio.it)
- è necessario disporre di una macchina con Linux per installare il server FreeRadius. Nella guida useremo Ubuntu 22.04
- avere installata l’app Google Authenticator su uno Smartphone
Contenuti
Dispositivi utilizzati
- Mikrotik hap AX3 con RouterOS 7.14.1
- macchina con Ubuntu 22.04
- PC Windows come client OpenVPN
- Smartphone con app Google Authenticator
Diagramma di rete
Installazione Freeradius su Ubuntu 22.04
Installazione pacchetti freeRadius e Google Authenticator
Colleghiamoci alla nostra macchina Ubuntu tramite ssh e diamo i comandi:
apt-get update
apt-get install freeradius libpam-google-authenticator -y
Configurazione FreeRadius
Editiamo il file /etc/freeradius/3.0/radiusd.conf e modifichiamo l’utente/gruppo di default da freerad a root
Diamo il comando:
nano /etc/freeradius/3.0/radiusd.conf
modifichiamo il valori come da esempio seguente e salviamo.
Apriamo il file /etc/freeradius/3.0/users e commentiamo le righe come da esempio sotto aggiungendo il carattere #
#DEFAULT Framed-Protocol == PPP
# Framed-Protocol = PPP,
# Framed-Compression = Van-Jacobson-TCP-IP
#
# Default for CSLIP: dynamic IP address, SLIP mode, VJ-compression.
#
#DEFAULT Hint == "CSLIP"
# Framed-Protocol = SLIP,
# Framed-Compression = Van-Jacobson-TCP-IP
#
# Default for SLIP: dynamic IP address, SLIP mode.
#
#DEFAULT Hint == "SLIP"
# Framed-Protocol = SLIP
Aggiungiamo alla fine del file il contenuto seguente rispettando la formattazione.
Adeguare l’indirizzo IP con quello del proprio router Mikrotik
DEFAULT Group == "radius-disabled", Auth-Type := Reject
Reply-Message = "Your account has been disabled."
DEFAULT Auth-Type := PAM
MikroTik-Group := "write"
DEFAULT Auth-Type := Pam, NAS-IP-Address == 192.168.150.1
Service-Type = Framed-User,
Framed-Protocol = PPP,
MikroTik-Group := "write"
Salviamo le modifiche e chiudiamo il file /etc/freeradius/3.0/users.
Editiamo ora il file /etc/freeradius/3.0/sites-enabled/default per abilitare l’autenticazione tramite il modulo PAM.
Cerchiamo la sezione seguente
#
# Pluggable Authentication Modules.
#pam
e modifichiamola come segue:
#
# Pluggable Authentication Modules.
pam
Per finire creiamo un collegamento per rendere attivo il modulo PAM con il comando:
ln -sf /etc/freeradius/3.0/mods-available/pam /etc/freeradius/3.0/mods-enabled/pam
Editiamo ora il file clients con il comando nano /etc/freeradius/3.0/clients.conf
Aggiungiamo alla file del file:
client Mikrotik {
ipaddr = 192.168.150.1
secret = 123456789
nas_type = other
}
Sostituite:
- ipaddr – IP del vostro Mikrotik
- secret – Vostra password
Modifichiamo il file radiusd con il comando nano /etc/pam.d/radiusd e commentiamo le voci presenti, in questo modo:
#@include common-auth
#@include common-account
#@include common-password
#@include common-session
ed aggiungiamo le seguenti righe:
auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass
In tal modo il file dovrà avere questo contenuto:
Aggiunta utenti FreeRadius per autenticazione 2FA con Google Authenticator
Creiamo adesso il nostro primo utente che potrà accedere alla rete aziendale tramite OpenVPN ed autenticazione 2FA con Google Authenticator.
Per creare l’utente dobbiamo aggiungerlo con il comando adduser NOMEUTENTE
Configureremo quindi un utente:
- Nome: laptop
- Password: 123456
Abbiamo appena creato un utente di sistema che potrebbe quindi accedere al nostro server FreeRadius tramite SSH.
Dal momento che non ci interessa permettere l’accesso in ssh al server, disabilitiamo la shell per l’utente appena creato con il comando:
usermod -s /sbin/nologin laptop
Generazione token Google Authenticator
Dobbiamo ora generare il token per l’utente laptop e registrarlo sull’App Google Authenticator.
Da terminale e con utente root, diamo i comandi:
su laptop
google-authenticator --time-based --disallow-reuse --force --rate-limit=3 --rate-time=30 --window-size=3
Verrà generato un QR code. Aprite l’app Google Authenticator sullo Smartphone e scansionate il QR Code.
Verrà aggiunto all’App l’account che genererà l’OTP necessario all’accesso tramite OpenVPN
Configurazione server Mikrotik OpenVPN 2FA
Per procedere alla configurazione del server OpenVPN puoi consultare questo articolo tralasciando le sezioni:
- Creazione utente OpenVPN Mikrotik
- Configuriamo un client Windows con OpenVPN
Diversamente dalla guida sopra citata, in questo scenario l’autenticazione avverrà completamente tramite il server FreeRadius e Google Authenticator, pertanto non è necessario creare gli utenti sul Mikrotik.
Configurazione Radius nel Mikrotik
Affinchè il nostro router Mikrotik dialoghi con il server FreeRadius e quindi possa inoltrare le richieste di autenticazione, è necessario configurare ed abilitare l’autenticazione tramite server Radius.
Rechiamoci sulla voce Radius e clicchiamo su “+”
Configuriamo la sezione del RADIUS server come segue:
- Service: ppp
- Address: 192.168.150.2
- Secret: 123456789
- clicchiamo su Apply e poi su OK
In seguito clicchiamo sulla voce Incoming e selezioniamo Accept.
Per finire clicchiamo su Apply e poi su OK
Abilitazione account Radius per sessioni PPP
Per concludere la configurazione lato Mikrotik abbiamo bisogno di abilitare l’autenticazione Radius per le sessioni PPP.
A tal proposito rechiamoci nel menù PPP –> Secrets e clicchiamo sulla voce PPP Authentication&Accounting
Spuntiamo le caselle:
- Use Radius
- Accounting
- per terminare clicchiamo su Apply e poi su OK
Configuriamo un client Windows con OpenVPN
Scarichiamo il client OpenVPN Connect per Windows da questo link ed installiamolo.
Una volta installato clicchiamo 2 volte sul file del profilo OVPN che abbiamo creato precedentemente o trasciniamolo dentro OpenVPN Connect, clicchiamo su OK alla richiesta di importazione del profilo e continuiamo la configurazione con i dati:
- Profile Name – Assegniamo un nome al profilo
- Username – laptop
- Private Key Password – 1234567890 (spuntare Save Private Key password se volete che questa non venga più richiesta)
- cliccare su CONNECT
Al prompt di richiesta della password occorre inserire la password dell’utente laptop creata precedentemente sul server FreeRadius ed in aggiunta il token temporale generato dall’App Google Autheticator
Ad esempio: 123456+631489
La password sarà quindi: 123456631489
Per terminare clicchiamo su OK e se la procedura è andata a buon fine il nostro client OpenVPN dovrebbe darci come stato CONNECTED
Se l’articolo è stato di tuo gradimento esprimi il tuo voto