Gå til 2FA (Two Factor Authentication for ASA SSL VPN)

Behovet for at give fjernadgang til et virksomhedsmiljø opstår oftere og oftere, uanset om det er dine brugere eller partnere, der har brug for adgang til en bestemt server i din organisation.

Til disse formål bruger de fleste virksomheder VPN-teknologi, som har vist sig at være en pålideligt beskyttet måde at give adgang til organisationens lokale ressourcer.

Mit firma er ingen undtagelse, og vi, som mange andre, bruger denne teknologi. Og som mange andre bruger vi Cisco ASA 55xx som en fjernadgangsgateway.

Med en stigning i antallet af fjernbrugere er der behov for at lette proceduren for udstedelse af legitimationsoplysninger. Men det skal samtidig ske uden at gå på kompromis med sikkerheden.

For os selv fandt vi en løsning i at bruge to-faktor-autentificering til at oprette forbindelse via Cisco SSL VPN ved at bruge engangsadgangskoder. Og denne publikation vil fortælle dig, hvordan du organiserer en sådan løsning med minimal tid og nul omkostninger til den nødvendige software (forudsat at du allerede har Cisco ASA i din infrastruktur).

Markedet er fyldt med boksløsninger til generering af engangskodeord, samtidig med at det tilbyder en masse muligheder for at få dem, det være sig at sende adgangskoden via SMS eller bruge tokens, både hardware og software (for eksempel på en mobiltelefon). Men ønsket om at spare penge og ønsket om at spare penge for min arbejdsgiver, i den nuværende krise, tvang mig til at finde en gratis måde at implementere en service til generering af engangskodeord. Hvilket, selv om det er gratis, ikke er meget ringere end kommercielle løsninger (her bør vi tage et forbehold, idet vi bemærker, at dette produkt også har en kommerciel version, men vi blev enige om, at vores omkostninger i penge vil være nul).

Så vi skal bruge:

- Et Linux-image med et indbygget sæt værktøjer - multiOTP, FreeRADIUS og nginx, til at få adgang til serveren via nettet (http://download.multiotp.net/ - Jeg brugte et færdiglavet billede til VMware)
— Active Directory Server
- Faktisk Cisco ASA (jeg bruger for nemheds skyld ASDM)
- Ethvert softwaretoken, der understøtter TOTP-mekanismen (jeg bruger f.eks. Google Authenticator, men det samme FreeOTP vil gøre)

Jeg vil ikke gå i detaljer om, hvordan billedet udfolder sig. Som et resultat vil du modtage Debian Linux med multiOTP og FreeRADIUS allerede installeret, konfigureret til at arbejde sammen og en webgrænseflade til OTP-administration.

Trin 1. Vi starter systemet og konfigurerer det til dit netværk
Som standard leveres systemet med root root-legitimationsoplysninger. Jeg tror, ​​alle gættede, at det ville være rart at ændre adgangskoden til root-brugeren efter det første login. Du skal også ændre netværksindstillingerne (standarden er '192.168.1.44' med gatewayen '192.168.1.1'). Derefter kan du genstarte systemet.

Lad os oprette en bruger i Active Directory OTP, med adgangskode MySuperPassword.

Trin 2. Konfigurer forbindelsen og importer Active Directory-brugere
For at gøre dette skal vi have adgang til konsollen og direkte filen multiotp.php, hvorved vi konfigurerer indstillingerne for at oprette forbindelse til Active Directory.

Gå til biblioteket /usr/local/bin/multiotp/ og udfør følgende kommandoer efter tur:

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

Bestemmer, om der kræves en ekstra (permanent) pin, når du indtaster en engangspin (0 eller 1)

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

Bestemmer, om der kræves en domæneadgangskode, når du indtaster en engangspinkode (0 eller 1)

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

Typen af ​​LDAP-server er angivet (0 = almindelig LDAP-server, i vores tilfælde 1 = Active Directory)

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

Angiver det format, som brugernavnet skal præsenteres i (denne værdi viser kun navnet uden domænet)

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

Det samme, kun for en gruppe

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

Angiver en metode til at bestemme, om en bruger tilhører en gruppe

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

Om der skal bruges en sikker forbindelse til LDAP-serveren (ja, selvfølgelig!)

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

Port til tilslutning til LDAP-serveren

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

Adressen på din Active Directory-server

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

Vi angiver, hvor du skal begynde at søge efter brugere på domænet

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

Angiv en bruger, der har søgerettigheder i Active Directory

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

Angiv brugeradgangskoden for at oprette forbindelse til Active Directory

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

Indstilling af timeout for tilslutning til Active Directory

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

Vi sætter en tidsgrænse for brugerimporten

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

Aktivering af Active Directory-forbindelseskonfigurationen

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

Vi importerer brugere fra Active Directory

Trin 3. Generer en QR-kode til tokenet
Alt her er ekstremt enkelt. Åbn OTP-serverens webgrænseflade i browseren, log ind (glem ikke at ændre standardadgangskoden for administratoren!), og klik på knappen "Udskriv":

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
Resultatet af denne handling bliver en side, der indeholder to QR-koder. Vi ignorerer dristigt den første af dem (på trods af den attraktive inskription Google Authenticator / Authenticator / 2 Steps Authenticator), og scanner igen modigt den anden kode ind i et softwaretoken på telefonen:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
(ja, jeg har bevidst ødelagt QR-koden for at gøre den ulæselig).

Efter at have udført disse handlinger i din applikation, vil der hvert tredive sekund blive genereret en sekscifret adgangskode.

For troskab kan du kontrollere, i den samme grænseflade:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
Indtastning af brugernavn og engangsadgangskode fra applikationen på telefonen. Har du fået et positivt svar? Så vi går videre.

Trin 4. Konfigurer og test FreeRADIUS
Som jeg nævnte ovenfor, er multiOTP allerede konfigureret til at arbejde med FreeRADIUS, alt der er tilbage er at køre test og tilføje information om vores VPN-gateway til FreeRADIUS-konfigurationsfilen.

Vi vender tilbage til serverkonsollen, til biblioteket /usr/local/bin/multiotp/, gå ind:

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

Inklusive dermed mere detaljeret logning.

I FreeRADIUS-klientens konfigurationsfil (/etc/freeeradius/clinets.conf) kommentere alle linjer relateret til localhost og tilføj to poster:

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

- til prøven

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

- til vores VPN-gateway.

Genstart FreeRADIUS og prøv at logge ind:

radtest username 100110 localhost 1812 testing321

где brugernavn = brugernavn, 100110 = adgangskode givet til os af applikationen på telefonen, localhost = RADIUS-serveradresse, 1812 — RADIUS-serverport, testing321 — RADIUS-serverklientadgangskode (som vi specificerede i konfigurationen).

Resultatet af denne kommando vil blive outputtet omtrent som følger:

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 skal vi sikre os, at brugeren er blevet godkendt. For at gøre dette vil vi se på selve loggen for multiotp:

tail /var/log/multiotp/multiotp.log

Og hvis den sidste post er:

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

Så gik alt godt, og vi kan gennemføre

Trin 5 Konfigurer Cisco ASA
Lad os blive enige om, at vi allerede har en konfigureret gruppe og politikker for adgang via SLL VPN, konfigureret i forbindelse med Active Directory, og vi skal tilføje to-faktor-godkendelse for denne profil.

1. Tilføj en ny AAA-servergruppe:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
2. Tilføj vores multiOTP-server til gruppen:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
3. Herske forbindelsesprofil, indstille gruppen af ​​Active Directory-servere som den primære godkendelsesserver:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
4. I fanen Avanceret -> Godkendelse vælg også en gruppe af Active Directory-servere:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
5. I fanen Avanceret -> Sekundær autentificering vælg den oprettede servergruppe, hvori multiOTP-serveren er registreret. Bemærk, at sessionsbrugernavnet er arvet fra den primære AAA-servergruppe:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
Anvend indstillingerne og

Trin 6, også det sidste
Tjek, om to-faktor-godkendelse til SLL VPN fungerer for os:

Gå til 2FA (Two Factor Authentication for ASA SSL VPN)
Voila! Når du opretter forbindelse via Cisco AnyConnect VPN Client, bliver du også bedt om en anden engangsadgangskode.

Jeg håber, at denne artikel vil hjælpe nogen, og at den vil give nogen stof til eftertanke om, hvordan man bruger dette, gratis OTP-server, til andre opgaver. Del i kommentarerne, hvis du ønsker det.

Kilde: www.habr.com

Tilføj en kommentar