Mikrotik OpenVPN 2FA con FreeRadius e Google Authenticator

Mikrotik OpenVPN 2FA
5
(2)

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

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
image 92

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

Per non perderti i nuovi post entra nel canale Telegram e WhatsApp

Se riscontri errori nell’articolo segnalalo tramite il modulo Contatti

Ti è stato utile questo post?

Clicca sulla stella per votare!

Voto medio 5 / 5. Numero voti: 2

Nessun voto finora! Sii il primo a valutare questo post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *