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

La necessità di fornire accesso remoto all'ambiente aziendale emerge sempre più spesso, indipendentemente dal fatto che siano i vostri utenti o partner ad aver bisogno di accedere a un particolare server nella vostra organizzazione.

Per questi scopi, la maggior parte delle aziende utilizza la tecnologia VPN, che ha dimostrato di essere un modo affidabile e protetto per fornire accesso alle risorse locali dell’organizzazione.

La mia azienda non ha fatto eccezione e noi, come molti altri, utilizziamo questa tecnologia. E, come molti altri, utilizziamo Cisco ASA 55xx come gateway di accesso remoto.

Con l'aumento del numero di utenti remoti, è necessario semplificare la procedura di rilascio delle credenziali. Ma allo stesso tempo, ciò deve essere fatto senza compromettere la sicurezza.

Per quanto ci riguarda, abbiamo trovato una soluzione utilizzando l'autenticazione a due fattori per la connessione tramite Cisco SSL VPN, utilizzando password monouso. E questa pubblicazione ti spiegherà come organizzare una soluzione del genere con tempi minimi e costi zero per il software necessario (a condizione che tu abbia già Cisco ASA nella tua infrastruttura).

Il mercato è pieno di soluzioni box per la generazione di password monouso, offrendo allo stesso tempo molte opzioni per ottenerle, sia inviando la password tramite SMS o utilizzando token, sia hardware che software (ad esempio, su un telefono cellulare). Ma il desiderio di risparmiare e il desiderio di risparmiare per il mio datore di lavoro, nell'attuale crisi, mi hanno costretto a trovare un modo gratuito per implementare un servizio per la generazione di password monouso. La quale, pur essendo gratuita, non è molto inferiore alle soluzioni commerciali (qui bisognerebbe prenotare, tenendo presente che di questo prodotto esiste anche una versione commerciale, ma abbiamo concordato che i nostri costi, in denaro, saranno pari a zero).

Quindi, avremo bisogno di:

- Un'immagine Linux con un set di strumenti integrato: multiOTP, FreeRADIUS e nginx, per accedere al server tramite web (http://download.multiotp.net/ - Ho utilizzato un'immagine già pronta per VMware)
— Server Active Directory
— Cisco ASA stesso (per comodità, utilizzo ASDM)
— Qualsiasi token software che supporti il ​​meccanismo TOTP (io, ad esempio, utilizzo Google Authenticator, ma andrà bene lo stesso FreeOTP)

Non entrerò nei dettagli di come si svolge l’immagine. Di conseguenza, riceverai Debian Linux con multiOTP e FreeRADIUS già installati, configurati per funzionare insieme e un'interfaccia web per l'amministrazione OTP.

Passaggio 1. Avviamo il sistema e lo configuriamo per la tua rete
Per impostazione predefinita, il sistema viene fornito con le credenziali root root. Penso che tutti abbiano indovinato che sarebbe una buona idea cambiare la password dell'utente root dopo il primo accesso. È inoltre necessario modificare le impostazioni di rete (per impostazione predefinita è '192.168.1.44' con il gateway '192.168.1.1'). Successivamente è possibile riavviare il sistema.

Creiamo un utente in Active Directory otp, con password La miaSuperPassword.

Passaggio 2. Configura la connessione e importa gli utenti di Active Directory
Per fare ciò, abbiamo bisogno dell'accesso alla console e direttamente al file multiotp.php, utilizzando il quale configureremo le impostazioni di connessione ad Active Directory.

Vai alla rubrica /usr/local/bin/multiotp/ ed eseguire a turno i seguenti comandi:

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

Determina se è necessario un PIN aggiuntivo (permanente) quando si inserisce un PIN monouso (0 o 1)

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

Determina se è richiesta una password di dominio quando si inserisce un PIN monouso (0 o 1)

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

Viene indicato il tipo di server LDAP (0 = server LDAP normale, nel nostro caso 1 = Active Directory)

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

Specifica il formato in cui presentare il nome utente (questo valore visualizzerà solo il nome, senza il dominio)

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

Stessa cosa, solo per un gruppo

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

Specifica un metodo per determinare se un utente appartiene a un gruppo

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

Dovrei utilizzare una connessione sicura al server LDAP (ovviamente sì!)

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

Porta per la connessione al server LDAP

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

L'indirizzo del tuo 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="[email protected]"

Specificare un utente che dispone dei diritti di ricerca in Active Directory

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

Specificare la password utente per connettersi ad Active Directory

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

Impostazione del timeout per la connessione ad Active Directory

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

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

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

Attivazione della configurazione della connessione Active Directory

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

Importiamo utenti da Active Directory

Passaggio 3. Genera un codice QR per il token
Tutto qui è estremamente semplice. Apri l'interfaccia web del server OTP nel browser, accedi (non dimenticare di cambiare la password predefinita per l'amministratore!) e fai clic sul pulsante "Stampa":

Vai a 2FA (autenticazione a due fattori per ASA SSL VPN)
Il risultato di questa azione sarà una pagina che contiene due codici QR. Ignoriamo coraggiosamente il primo (nonostante l'attraente scritta Google Authenticator / Authenticator / 2 Steps Authenticator), e ancora una volta scansioniamo coraggiosamente il secondo codice in un token software sul telefono:

Vai a 2FA (autenticazione a due fattori per ASA SSL VPN)
(sì, ho volutamente spoilerato il codice QR per renderlo illeggibile).

Dopo aver completato queste azioni, ogni trenta secondi inizierà a essere generata una password di sei cifre nella tua applicazione.

Per essere sicuro, puoi verificarlo nella stessa interfaccia:

Vai a 2FA (autenticazione a due fattori per ASA SSL VPN)
Inserendo il nome utente e la password monouso dall'applicazione sul telefono. Hai ricevuto una risposta positiva? Quindi andiamo avanti.

Passaggio 4. Configurazione e test aggiuntivi del funzionamento di FreeRADIUS
Come accennato in precedenza, multiOTP è già configurato per funzionare con FreeRADIUS, non resta che eseguire dei test e aggiungere informazioni sul nostro gateway VPN al file di configurazione di FreeRADIUS.

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

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

Inclusa una registrazione più dettagliata.

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

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

- per prova

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

- per il nostro gateway VPN.

Riavvia FreeRADIUS e prova ad accedere:

radtest username 100110 localhost 1812 testing321

dove nome utente = nome utente, 100110 = password fornitaci dall'applicazione del telefono, localhost = indirizzo del server RADIUS, 1812 — porta del server RADIUS, testing321 — Password del client del server RADIUS (che abbiamo specificato nella configurazione).

Il risultato di questo comando verrà visualizzato approssimativamente come segue:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Ora dobbiamo assicurarci che l'utente sia autenticato correttamente. Per fare ciò, esamineremo il log di multiotp stesso:

tail /var/log/multiotp/multiotp.log

E se l'ultima voce c'è:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Poi tutto è andato bene e possiamo completare

Passaggio 5: configurare Cisco ASA
Conveniamo che abbiamo già un gruppo configurato e criteri per l'accesso tramite VPN SLL, configurati insieme ad Active Directory, e dobbiamo aggiungere l'autenticazione a due fattori per questo profilo.

1. Aggiungi un nuovo gruppo di server AAA:

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

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

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

Vai a 2FA (autenticazione a due fattori per ASA SSL VPN)
5. linguetta Avanzato -> Secondario autenticazione, selezionare il gruppo di server creato in cui è registrato il server multiOTP. Tieni presente che il nome utente della sessione viene ereditato dal gruppo di server AAA primario:

Vai a 2FA (autenticazione a due fattori per ASA SSL VPN)
Applicare le impostazioni e

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

Vai a 2FA (autenticazione a due fattori per ASA SSL VPN)
Ecco! Quando ti connetti tramite il client VPN Cisco AnyConnect, ti verrà richiesta anche una seconda password monouso.

Spero che questo articolo possa aiutare qualcuno e che dia a qualcuno spunti di riflessione su come usarlo, gratis Server OTP, per altre attività. Condividi nei commenti se lo desideri.

Fonte: habr.com

Aggiungi un commento