Gå til 2FA (tofaktorautentisering for ASA SSL VPN)

Behovet for å gi ekstern tilgang til et bedriftsmiljø dukker opp stadig oftere, uansett om det er dine brukere eller partnere som trenger tilgang til en bestemt server i din organisasjon.

For disse formålene bruker de fleste bedrifter VPN-teknologi, som har vist seg å være en pålitelig beskyttet måte å gi tilgang til organisasjonens lokale ressurser.

Firmaet mitt var intet unntak, og vi, som mange andre, bruker denne teknologien. Og, som mange andre, bruker vi Cisco ASA 55xx som en ekstern tilgangsport.

Etter hvert som antallet eksterne brukere øker, er det behov for å forenkle prosedyren for utstedelse av legitimasjon. Men samtidig skal dette gjøres uten at det går ut over sikkerheten.

For oss selv fant vi en løsning ved å bruke tofaktorautentisering for tilkobling via Cisco SSL VPN, ved å bruke engangspassord. Og denne publikasjonen vil fortelle deg hvordan du organiserer en slik løsning med minimal tid og null kostnader for nødvendig programvare (forutsatt at du allerede har Cisco ASA i din infrastruktur).

Markedet er fylt med boksløsninger for å generere engangspassord, samtidig som det tilbyr mange muligheter for å få dem, enten det er å sende passordet via SMS eller bruke tokens, både maskinvare og programvare (for eksempel på en mobiltelefon). Men ønsket om å spare penger og ønsket om å spare penger for min arbeidsgiver, i den nåværende krisen, tvang meg til å finne en gratis måte å implementere en tjeneste for generering av engangspassord. Som, selv om det er gratis, ikke er mye dårligere enn kommersielle løsninger (her bør vi ta en reservasjon, og merk at dette produktet også har en kommersiell versjon, men vi ble enige om at kostnadene våre, i penger, vil være null).

Så, vi trenger:

- Linux-bilde med et innebygd sett med verktøy - multiOTP, FreeRADIUS og nginx, for tilgang til serveren via nettet (http://download.multiotp.net/ - Jeg brukte et ferdiglagd bilde for VMware)
— Active Directory Server
— Cisco ASA selv (for enkelhets skyld bruker jeg ASDM)
— Enhver programvaretoken som støtter TOTP-mekanismen (jeg bruker for eksempel Google Authenticator, men det samme FreeOTP vil gjøre)

Jeg vil ikke gå inn på detaljer om hvordan bildet utfolder seg. Som et resultat vil du motta Debian Linux med multiOTP og FreeRADIUS allerede installert, konfigurert til å fungere sammen, og et nettgrensesnitt for OTP-administrasjon.

Trinn 1. Vi starter systemet og konfigurerer det for ditt nettverk
Som standard kommer systemet med root root-legitimasjon. Jeg tror alle gjettet at det ville være en god idé å endre root-brukerpassordet etter første pålogging. Du må også endre nettverksinnstillingene (som standard er det '192.168.1.44' med gatewayen '192.168.1.1'). Etterpå kan du starte systemet på nytt.

La oss opprette en bruker i Active Directory otp, med passord MySuperPassword.

Trinn 2. Sett opp tilkoblingen og importer Active Directory-brukere
For å gjøre dette trenger vi tilgang til konsollen, og direkte til filen multiotp.php, hvor vi vil konfigurere tilkoblingsinnstillinger til Active Directory.

Gå til katalogen /usr/local/bin/multiotp/ og utfør følgende kommandoer etter tur:

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

Bestemmer om en ekstra (permanent) pin er nødvendig når du legger inn en engangspinne (0 eller 1)

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

Bestemmer om et domenepassord kreves når du skriver inn en engangs-pin (0 eller 1)

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

Typen LDAP-server er angitt (0 = vanlig LDAP-server, i vårt tilfelle 1 = Active Directory)

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

Angir formatet som brukernavnet skal presenteres i (denne verdien viser bare navnet, uten domenet)

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

Samme, bare for en gruppe

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

Angir en metode for å bestemme om en bruker tilhører en gruppe

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

Bør jeg bruke en sikker tilkobling til LDAP-serveren (selvfølgelig - ja!)

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

Port for tilkobling til LDAP-serveren

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

Active Directory-serveradressen din

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

Vi angir hvor du skal begynne å søke etter brukere i domenet

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

Angi en bruker som har søkerettigheter i Active Directory

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

Angi brukerpassordet for å koble til Active Directory

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

Stille inn tidsavbrudd for tilkobling til Active Directory

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

Vi setter en tidsbegrensning for brukerimportoperasjonen

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

Aktiverer Active Directory-tilkoblingskonfigurasjonen

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

Vi importerer brukere fra Active Directory

Trinn 3. Generer en QR-kode for tokenet
Alt her er ekstremt enkelt. Åpne nettgrensesnittet til OTP-serveren i nettleseren, logg på (ikke glem å endre standardpassordet for administratoren!), og klikk på "Skriv ut"-knappen:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
Resultatet av denne handlingen vil være en side som inneholder to QR-koder. Vi ignorerer frimodig den første av dem (til tross for den attraktive inskripsjonen Google Authenticator / Authenticator / 2 Steps Authenticator), og igjen skanner vi dristig den andre koden til et programvaretoken på telefonen:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
(ja, jeg har bevisst ødelagt QR-koden for å gjøre den uleselig).

Etter å ha fullført disse handlingene, vil et sekssifret passord begynne å bli generert i applikasjonen din hvert trettiende sekund.

For å være sikker kan du sjekke det i samme grensesnitt:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
Ved å skrive inn brukernavn og engangspassord fra applikasjonen på telefonen. Fikk du positiv respons? Så la oss gå videre.

Trinn 4. Ytterligere konfigurasjon og testing av FreeRADIUS-drift
Som jeg nevnte ovenfor, er multiOTP allerede konfigurert til å fungere med FreeRADIUS, alt som gjenstår er å kjøre tester og legge til informasjon om vår VPN-gateway til FreeRADIUS-konfigurasjonsfilen.

Vi går tilbake til serverkonsollen, til katalogen /usr/local/bin/multiotp/, Tast inn:

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

Inkludert mer detaljert logging.

I FreeRADIUS-klientens konfigurasjonsfil (/etc/freeeradius/clinets.conf) kommentere alle linjer relatert til localhost og legg til to oppføringer:

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

- for test

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

– for vår VPN-gateway.

Start FreeRADIUS på nytt og prøv å logge på:

radtest username 100110 localhost 1812 testing321

der brukernavn = brukernavn, 100110 = passord gitt til oss av applikasjonen på telefonen, localhost = RADIUS-serveradresse, 1812 — RADIUS serverport, testing321 — RADIUS-serverklientpassord (som vi spesifiserte i konfigurasjonen).

Resultatet av denne kommandoen sendes ut 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

Nå må vi sørge for at brukeren er vellykket autentisert. For å gjøre dette, vil vi se på selve loggen til multiotp:

tail /var/log/multiotp/multiotp.log

Og hvis den siste oppføringen 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

Da gikk alt bra og vi kan fullføre

Trinn 5: Konfigurer Cisco ASA
La oss bli enige om at vi allerede har en konfigurert gruppe og retningslinjer for tilgang via SLL VPN, konfigurert i forbindelse med Active Directory, og vi må legge til tofaktorautentisering for denne profilen.

1. Legg til en ny AAA-servergruppe:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
2. Legg til vår multiOTP-server i gruppen:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
3. Vi redigerer tilkoblingsprofil, angir Active Directory-servergruppen som hovedautentiseringsserver:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
4. I fanen Avansert -> Autentisering Vi velger også Active Directory-servergruppen:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
5. I fanen Avansert -> Sekundær autentisering, velg den opprettede servergruppen der multiOTP-serveren er registrert. Merk at brukernavnet for økten er arvet fra den primære AAA-servergruppen:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
Bruk innstillingene og

Trinn 6, også det siste
La oss sjekke om tofaktorautentisering fungerer for SLL VPN:

Gå til 2FA (tofaktorautentisering for ASA SSL VPN)
Voila! Når du kobler til via Cisco AnyConnect VPN Client, vil du også bli bedt om et andre engangspassord.

Jeg håper at denne artikkelen vil hjelpe noen, og at den vil gi noen til å tenke på hvordan man kan bruke dette, gratis OTP-server, for andre oppgaver. Del i kommentarfeltet hvis du ønsker det.

Kilde: www.habr.com

Legg til en kommentar