Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)

La necessità di fornire accesso remoto all'ambiente aziendale si fa sempre più frequente, sia che si tratti dei propri utenti che dei partner che necessitano di accesso a uno o all'altro server della vostra organizzazione.

A questo scopo, la maggior parte delle aziende utilizza la tecnologia VPN, consolidata come un modo sicuro e affidabile per fornire accesso alle risorse locali dell'organizzazione.

La mia azienda non fa eccezione e, come molte altre, utilizziamo questa tecnologia. E, come molte altre, usiamo come gateway per l'accesso remoto — Cisco ASA 55xx.

Con l'aumentare del numero di utenti remoti, emerge la necessità di semplificare la procedura di assegnazione delle credenziali. Ma nel contempo è fondamentale farlo senza compromettere la sicurezza.

Abbiamo trovato una soluzione nell'implementazione dell'autenticazione a due fattori per le connessioni tramite Cisco SSL. VPN, con l'uso di password usa e getta. Questo articolo spiegherà come organizzare una simile soluzione con il minimo investimento di tempo e senza costi per il software necessario (a condizione che Cisco ASA sia già presente nella vostra infrastruttura).

Il mercato è ricco di soluzioni pronte all'uso per la generazione di password usa e getta, offrendo diverse modalità di ricezione, che si tratti di inviare la password via SMS o di utilizzare token, sia hardware che software (ad esempio sul cellulare). Tuttavia, la ricerca di modalità economiche e il desiderio di risparmiare per il proprio datore di lavoro, in un contesto di crisi attuale, mi hanno spinto a trovare un modo gratuito per implementare un servizio di generazione di password usa e getta. Questo servizio, nonostante sia gratuito, è paragonabile a soluzioni commerciali (va notato che questo prodotto ha anche una versione commerciale, ma abbiamo concordato che non avremo costi monetari).

Perciò, avremo bisogno di:

— Un'immagine di Linux con un insieme integrato di strumenti: multiOTP, FreeRADIUS e nginx, per l'accesso al server via web (http://download.multiotp.net/ — ho utilizzato un'immagine predefinita per VMware)
— Server Active Directory
— Cisco ASA (uso ASDM per comodità)
— Qualsiasi token software che supporti il meccanismo TOTP (ad esempio, utilizzo Google Authenticator, ma va bene anche FreeOTP)

Non entrerò nei dettagli del deployment dell'immagine. Alla fine, riceverete un Debian Linux con multiOTP e FreeRADIUS già installati, configurati per lavorare insieme e un'interfaccia web per l'amministrazione OTP.

Passo 1. Iniziamo il sistema e configuriamo la nostra rete
Di default, il sistema viene fornito con le credenziali root root. Suppongo che tutti abbiano capito che sarebbe opportuno cambiare la password per l'utente root dopo il primo accesso. È anche necessario modificare le impostazioni di rete (di default è ‘192.168.1.44’ con gateway ‘192.168.1.1’). Dopo, è possibile riavviare il sistema.

Creiamo un utente in Active Directory otp, con la password MySuperPassword.

Passo 2. Configuriamo la connessione e importiamo gli utenti di Active Directory
A tal fine, avremo bisogno di accesso alla console e, in particolare, del file multiotp.php, tramite il quale configureremo i parametri di connessione ad Active Directory.

Passiamo alla directory /usr/local/bin/multiotp/ ed eseguiamo le seguenti comandi uno alla volta:

./multiotp.php -config default-request-prefix-pin=0

Determina se è necessaria la presenza di un PIN aggiuntivo (permanente) durante l'inserimento del PIN monouso (0 o 1)

./multiotp.php -config default-request-ldap-pwd=0

Determina se è necessario inserire la password del dominio durante l'inserimento del PIN monouso (0 o 1)

./multiotp.php -config ldap-server-type=1

Specifica il tipo di server LDAP (0 = server LDAP standard, in questo caso 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Indica in quale formato presentare il nome utente (questo valore mostrerà solo il nome, senza dominio)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Lo stesso, ma per il gruppo

./multiotp.php -config ldap-group-attribute="memberOf"

Indica il metodo per determinare l'appartenenza dell'utente al gruppo

./multiotp.php -config ldap-ssl=1

Utilizzare una connessione sicura al server LDAP (certo, sì!)

./multiotp.php -config ldap-port=636

Porta per connettersi al server LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

Indirizzo del server Active Directory

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Indichiamo da dove iniziare la ricerca degli utenti nel dominio

./multiotp.php -config ldap-bind-dn="otp@domain.local"

Specifichiamo un utente che ha i diritti di ricerca in Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Impostiamo la password dell'utente per connetterci ad Active Directory

./multiotp.php -config ldap-network-timeout=10

Impostiamo il timeout per la connessione ad Active Directory

./multiotp.php -config ldap-time-limit=30

Impostiamo un limite di tempo per l'operazione di importazione degli utenti

./multiotp.php -config ldap-activated=1

Attiviamo la configurazione per la connessione ad Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Importiamo gli utenti da Active Directory

Passo 3. Generiamo il codice QR per il token
Qui tutto è molto semplice. Apriamo l'interfaccia web del server OTP nel browser, efacciamo il login (non dimenticate di cambiare la password predefinita per l'amministratore!) e premiamo il pulsante «Print»:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
Il risultato di questa azione sarà una pagina con due codici QR. Possiamo ignorare il primo (nonostante l'appeal della scritta Google Authenticator / Authenticator / 2 Steps Authenticator), e possiamo scansionare in tutta sicurezza il secondo codice nel token software sul telefono:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
(sì, ho intenzionalmente rovinato il codice QR per renderlo illeggibile).

Dopo aver completato queste azioni, nell'applicazione, ogni trenta secondi, inizierà a generarsi una password di sei cifre.

Per maggiore sicurezza, è possibile effettuare un controllo nella stessa interfaccia:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
Inserisci il nome utente e la password monouso dall'app sul telefono. Hai ricevuto una risposta positiva? Bene, passiamo avanti.

Passo 4. Configuriamo e testiamo il funzionamento di FreeRADIUS
Come accennato in precedenza, multiOTP è già configurato per lavorare con FreeRADIUS, bisogna solo eseguire dei test e aggiungere nel file di configurazione di FreeRADIUS le informazioni sul nostro gateway VPN.

Torniamo alla console del server, nella directory /usr/local/bin/multiotp/, inseriamo:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Attivando così un logging più dettagliato.

Nel file di configurazione dei client FreeRADIUS (/etc/freeradius/clinets.conf) commentiamo tutte le righe relative a localhost e aggiungiamo due voci:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

— per il test

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

— per il nostro gateway VPN.

Riavviamo FreeRADIUS e proviamo ad autenticarci:

radtest username 100110 localhost 1812 testing321

dove username = nome utente, 100110 = password fornita dall'app sul telefono, localhost = indirizzo del server RADIUS, 1812 = porta del server RADIUS, testing321 — password del client del server RADIUS (quella che abbiamo indicato nel config).

Il risultato di questo comando sarà un output simile al seguente:

Invio della richiesta di accesso con id 44 a 127.0.0.1 sulla porta 1812
        Nome utente = "username"
        Password utente = "100110"
        Indirizzo IP NAS = 127.0.1.1
        Porta NAS = 1812
        Autenticatore messaggio = 0x00000000000000000000000000000000
rad_recv: pacchetto Access-Accept da host 127.0.0.1 porta 1812, id=44, lunghezza=20

Ora dobbiamo assicurarci che l'utente sia stato autenticato con successo. Per fare ciò, daremo un'occhiata al log di multiotp:

tail /var/log/multiotp/multiotp.log

E se l'ultima registrazione lì sarà:

2016-09-01 08:58:17     notice  username  User    OK: Utente username autenticato con successo da 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accettato da 127.0.0.1

Tutto è andato a buon fine e possiamo eseguire

Passo 5. Configurazione di Cisco ASA
Assumiamo di avere già configurato un gruppo e politiche per l'accesso tramite SSL VPN, impostati in modo collegato ad Active Directory, e dobbiamo aggiungere l'autenticazione a due fattori per questo profilo.

1. Aggiungiamo un nuovo gruppo server AAA:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
2. Aggiungiamo il nostro server multiOTP al gruppo:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
3. Modifichiamo il profilo di connessione, impostando come server di autenticazione principale il gruppo di server Active Directory:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
4. Nella scheda Avanzate -> Autenticazione scegliamo anche il gruppo di server Active Directory:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
5. Nella scheda Avanzate -> Secondario autenticazione selezioniamo il gruppo di server creato in cui è configurato il server multiOTP. Nota che il nome utente della sessione deriva dal gruppo principale dei server AAA:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
Applichiamo le impostazioni e

Passo 6, l'ultimo
Controlliamo se la nostra autenticazione a due fattori per SLL VPN funziona:

Vai a 2FA (Autenticazione a due fattori per ASA SSL VPN)
Voilà! Quando ci si collega tramite il client Cisco AnyConnect VPN verrà richiesto anche il secondo codice, quello usa e getta.

Spero che questo articolo possa aiutare qualcuno e che possa fornire spunti su come utilizzare questo gratuito server OTP per altri scopi. Condividete nei commenti se avete voglia.

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