Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)

Behovet av att tillhandahålla fjärråtkomst till en företagsmiljö dyker upp allt oftare, oavsett om det är dina användare eller partners som behöver åtkomst till en viss server i din organisation.

För dessa ändamål använder de flesta företag VPN-teknik, vilket har visat sig vara ett tillförlitligt skyddat sätt att ge tillgång till organisationens lokala resurser.

Mitt företag var inget undantag, och vi, som många andra, använder denna teknik. Och som många andra använder vi Cisco ASA 55xx som en fjärråtkomstgateway.

När antalet fjärranvändare ökar finns det ett behov av att förenkla förfarandet för att utfärda autentiseringsuppgifter. Men samtidigt måste detta göras utan att kompromissa med säkerheten.

För oss själva hittade vi en lösning genom att använda tvåfaktorsautentisering för att ansluta via Cisco SSL VPN, med engångslösenord. Och den här publikationen kommer att berätta hur du organiserar en sådan lösning med minimal tid och noll kostnader för nödvändig programvara (förutsatt att du redan har Cisco ASA i din infrastruktur).

Marknaden är full av boxade lösningar för att generera engångslösenord, samtidigt som den erbjuder många alternativ för att få dem, vare sig det är att skicka lösenordet via SMS eller använda tokens, både hårdvara och mjukvara (till exempel på en mobiltelefon). Men viljan att spara pengar och viljan att spara pengar för min arbetsgivare, i den nuvarande krisen, tvingade mig att hitta ett gratis sätt att implementera en tjänst för att generera engångslösenord. Vilket, även om det är gratis, inte är mycket sämre än kommersiella lösningar (här bör vi göra en reservation och notera att denna produkt också har en kommersiell version, men vi kom överens om att våra kostnader, i pengar, kommer att vara noll).

Så vi behöver:

- En Linux-avbildning med en inbyggd uppsättning verktyg - multiOTP, FreeRADIUS och nginx, för åtkomst till servern via webben (http://download.multiotp.net/ - Jag använde en färdig bild för VMware)
— Active Directory Server
— Cisco ASA själv (för bekvämlighets skull använder jag ASDM)
— Alla programvarutoken som stöder TOTP-mekanismen (jag använder till exempel Google Authenticator, men samma FreeOTP kommer att göra)

Jag kommer inte gå in på detaljer om hur bilden utvecklas. Som ett resultat kommer du att få Debian Linux med multiOTP och FreeRADIUS redan installerade, konfigurerade för att fungera tillsammans och ett webbgränssnitt för OTP-administration.

Steg 1. Vi initierar systemet och konfigurerar det för ditt nätverk
Som standard kommer systemet med root root-referenser. Jag tror att alla gissade att det skulle vara en bra idé att ändra root-användarlösenordet efter den första inloggningen. Du måste också ändra nätverksinställningarna (som standard är det '192.168.1.44' med gatewayen '192.168.1.1'). Efteråt kan du starta om systemet.

Låt oss skapa en användare i Active Directory otp, med lösenord MySuperPassword.

Steg 2. Konfigurera anslutningen och importera Active Directory-användare
För att göra detta behöver vi tillgång till konsolen och direkt till filen multiotp.php, med hjälp av vilken vi kommer att konfigurera anslutningsinställningar till Active Directory.

Gå till katalogen /usr/local/bin/multiotp/ och kör följande kommandon i tur och ordning:

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

Bestämmer om ett extra (permanent) stift krävs vid inmatning av ett engångsstift (0 eller 1)

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

Avgör om ett domänlösenord krävs när du anger en engångspinkod (0 eller 1)

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

Typen av LDAP-server anges (0 = vanlig LDAP-server, i vårt fall 1 = Active Directory)

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

Anger formatet som användarnamnet ska presenteras i (det här värdet visar endast namnet, utan domänen)

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

Samma sak, bara för en grupp

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

Anger en metod för att avgöra om en användare tillhör en grupp

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

Ska jag använda en säker anslutning till LDAP-servern (naturligtvis, ja!)

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

Port för anslutning till LDAP-servern

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

Din Active Directory-serveradress

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

Vi anger var du ska börja söka efter användare på domänen

./multiotp.php -config ldap-bind-dn="[email protected]"

Ange en användare som har sökrättigheter i Active Directory

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

Ange användarlösenordet för att ansluta till Active Directory

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

Ställa in timeout för anslutning till Active Directory

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

Vi sätter en tidsgräns för användarimporten

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

Aktiverar Active Directory-anslutningskonfigurationen

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

Vi importerar användare från Active Directory

Steg 3. Generera en QR-kod för token
Allt här är extremt enkelt. Öppna webbgränssnittet för OTP-servern i webbläsaren, logga in (glöm inte att ändra standardlösenordet för administratören!) och klicka på knappen "Skriv ut":

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
Resultatet av denna åtgärd blir en sida som innehåller två QR-koder. Vi ignorerar djärvt den första av dem (trots den attraktiva inskriptionen Google Authenticator / Authenticator / 2 Steps Authenticator), och återigen skannar vi djärvt den andra koden till en mjukvarutoken på telefonen:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
(ja, jag förstörde medvetet QR-koden för att göra den oläslig).

När du har slutfört dessa åtgärder kommer ett sexsiffrigt lösenord att börja genereras i din applikation var trettionde sekund.

För att vara säker kan du kontrollera det i samma gränssnitt:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
Genom att ange ditt användarnamn och engångslösenord från applikationen på din telefon. Fick du ett positivt svar? Så vi går vidare.

Steg 4. Ytterligare konfiguration och testning av FreeRADIUS-drift
Som jag nämnde ovan är multiOTP redan konfigurerat för att fungera med FreeRADIUS, allt som återstår är att köra tester och lägga till information om vår VPN-gateway till FreeRADIUS-konfigurationsfilen.

Vi återvänder till serverkonsolen, till katalogen /usr/local/bin/multiotp/, stiga på:

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

Inklusive mer detaljerad loggning.

I FreeRADIUS-klientens konfigurationsfil (/etc/freeeradius/clinets.conf) kommentera alla rader relaterade till lokalvärd och lägg till två poster:

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

- för test

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

— för vår VPN-gateway.

Starta om FreeRADIUS och försök logga in:

radtest username 100110 localhost 1812 testing321

där Användarnamn = användarnamn, 100110 = lösenord som vi fått av applikationen på telefonen, lokalvärd = RADIUS-serveradress, 1812 — RADIUS-serverport, testing321 — RADIUS-serverklientlösenord (som vi angav i konfigurationen).

Resultatet av detta kommando kommer att matas ut ungefär som följer:

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

Nu måste vi se till att användaren har autentiserats. För att göra detta kommer vi att titta på själva loggen för multiotp:

tail /var/log/multiotp/multiotp.log

Och om den sista posten finns:

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

Sedan gick allt bra och vi kan fullfölja

Steg 5: Konfigurera Cisco ASA
Låt oss komma överens om att vi redan har en konfigurerad grupp och policyer för åtkomst via SLL VPN, konfigurerade i samband med Active Directory, och vi måste lägga till tvåfaktorsautentisering för denna profil.

1. Lägg till en ny AAA-servergrupp:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
2. Lägg till vår multiOTP-server i gruppen:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
3. Regel anslutningsprofil, ange Active Directory-servergruppen som huvudverifieringsserver:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
4. I fliken Avancerat -> Autentisering Vi väljer även Active Directory-servergruppen:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
5. I fliken Avancerat -> Sekundärt autentisering, välj den skapade servergruppen där multiOTP-servern är registrerad. Observera att användarnamnet för sessionen ärvs från den primära AAA-servergruppen:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
Tillämpa inställningarna och

Steg 6, aka det sista
Låt oss kontrollera om tvåfaktorsautentisering fungerar för SLL VPN:

Gå till 2FA (tvåfaktorsautentisering för ASA SSL VPN)
Voila! När du ansluter via Cisco AnyConnect VPN Client kommer du också att bli ombedd att ange ett andra engångslösenord.

Jag hoppas att den här artikeln kommer att hjälpa någon, och att den kommer att ge någon tankeställare om hur man använder detta, fri OTP-server, för andra uppgifter. Dela i kommentarerna om du vill.

Källa: will.com

Lägg en kommentar