Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)

De needsaak om tagong op ôfstân te jaan oan in bedriuwsomjouwing komt hieltyd faker op, likefolle oft it jo brûkers of partners binne dy't tagong hawwe ta in bepaalde server yn jo organisaasje.

Foar dizze doelen brûke de measte bedriuwen VPN-technology, dy't har bewiisd hat as in betrouber beskerme manier om tagong te krijen ta de lokale boarnen fan 'e organisaasje.

Myn bedriuw wie gjin útsûndering, en wy, lykas in protte oaren, brûke dizze technology. En, lykas in protte oaren, brûke wy Cisco ASA 55xx as tagongspoarte op ôfstân.

As it oantal brûkers op ôfstân nimt ta, is d'r needsaak om de proseduere foar it útjaan fan bewiisbrieven te ferienfâldigjen. Mar tagelyk moat dit dien wurde sûnder de feiligens te kompromittearjen.

Foar ússels fûnen wy in oplossing yn it brûken fan twa-faktor-autentikaasje foar ferbining fia Cisco SSL VPN, mei ienmalige wachtwurden. En dizze publikaasje sil jo fertelle hoe't jo sa'n oplossing organisearje mei minimale tiid en nul kosten foar de nedige software (mits jo al Cisco ASA yn jo ynfrastruktuer hawwe).

De merk is fol mei doaze oplossingen foar it generearjen fan ienmalige wachtwurden, wylst it in protte opsjes biedt om se te krijen, it is it ferstjoeren fan it wachtwurd fia SMS of it brûken fan tokens, sawol hardware as software (bygelyks op in mobile tillefoan). Mar de winsk om jild te besparjen en de winsk om jild te besparjen foar myn wurkjouwer, yn 'e hjoeddeistige krisis, twong my om in fergese manier te finen om in tsjinst út te fieren foar it generearjen fan ienmalige wachtwurden. Wat, hoewol fergees, net folle minder is foar kommersjele oplossingen (hjir moatte wy in reservearje meitsje, opmerke dat dit produkt ek in kommersjele ferzje hat, mar wy hawwe ôfpraat dat ús kosten, yn jild, nul sille wêze).

Dus, wy sille nedich:

- In Linux-ôfbylding mei in ynboude set ark - multiOTP, FreeRADIUS en nginx, foar tagong ta de tsjinner fia it web (http://download.multiotp.net/ - Ik brûkte in klearmakke ôfbylding foar VMware)
- Active Directory Server
- Cisco ASA sels (foar it gemak brûk ik ASDM)
- Elke softwaretoken dy't it TOTP-meganisme stipet (ik brûk bygelyks Google Authenticator, mar itselde FreeOTP sil dwaan)

Ik sil net gean yn details fan hoe't it byld unfolds. As gefolch krije jo Debian Linux mei multiOTP en FreeRADIUS al ynstalleare, konfigureare om gear te wurkjen, en in webynterface foar OTP-administraasje.

Stap 1. Wy begjinne it systeem en konfigurearje it foar jo netwurk
Standert komt it systeem mei root-root-credentials. Ik tink dat elkenien riede dat it in goed idee wêze soe om it root-brûkerswachtwurd te feroarjen nei de earste oanmelding. Jo moatte ek de netwurkynstellingen feroarje (standert is it '192.168.1.44' mei de gateway '192.168.1.1'). Dêrnei kinne jo it systeem opnij opstarte.

Litte wy in brûker oanmeitsje yn Active Directory otp, mei wachtwurd MySuperPassword.

Stap 2. Stel de ferbining op en ymportearje Active Directory brûkers
Om dit te dwaan, moatte wy tagong hawwe ta de konsole, en direkt nei it bestân multiotp.php, wêrmei wy ferbiningynstellingen sille konfigurearje nei Active Directory.

Gean nei triemtafel /usr/local/bin/multiotp/ en útfiere de folgjende kommando's om beurt:

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

Bepaalt oft in ekstra (permaninte) pin nedich is by it ynfieren fan in ienmalige pin (0 of 1)

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

Bepaalt oft in domeinwachtwurd fereaske is by it ynfieren fan in ienmalige pin (0 of 1)

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

It type LDAP-tsjinner wurdt oanjûn (0 = gewoane LDAP-tsjinner, yn ús gefal 1 = Active Directory)

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

Spesifisearret it formaat wêryn de brûkersnamme presintearre wurde (dizze wearde sil allinich de namme werjaan, sûnder it domein)

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

Itselde ding, allinich foar in groep

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

Jout in metoade oan om te bepalen oft in brûker ta in groep heart

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

Moat ik in feilige ferbining brûke mei de LDAP-tsjinner (fansels - ja!)

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

Poarte foar ferbining mei de LDAP-tsjinner

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

Jo Active Directory-tsjinneradres

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

Wy jouwe oan wêr't te begjinnen mei sykjen nei brûkers yn it domein

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

Spesifisearje in brûker dy't sykrjochten hat yn Active Directory

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

Jou it brûkerswachtwurd op om te ferbinen mei Active Directory

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

De timeout ynstelle foar ferbining mei Active Directory

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

Wy sette in tiidlimyt foar de brûker ymportearje operaasje

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

Aktivearje de Active Directory ferbining konfiguraasje

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

Wy ymportearje brûkers út Active Directory

Stap 3. Generearje in QR-koade foar it token
Alles hjir is ekstreem ienfâldich. Iepenje de webynterface fan 'e OTP-tsjinner yn' e browser, oanmelde (ferjit net it standertwachtwurd foar de admin te feroarjen!), En klikje op de knop "Print":

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
It resultaat fan dizze aksje sil in side wêze dy't twa QR-koades befettet. Wy negearje de earste fan har frijmoedich (nettsjinsteande it oantreklike ynskripsje Google Authenticator / Authenticator / 2 Steps Authenticator), en wer scannen wy de twadde koade frijmoedich yn in softwaretoken op 'e tillefoan:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
(ja, ik haw mei opsetsin de QR-koade bedoarn om it net te lêzen).

Nei it foltôgjen fan dizze aksjes sil elke tritich sekonden in seis-sifers wachtwurd begjinne te generearjen yn jo applikaasje.

Om wis te wêzen, kinne jo it kontrolearje yn deselde ynterface:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
Troch jo brûkersnamme en ienmalige wachtwurd yn te fieren fan 'e applikaasje op jo tillefoan. Hawwe jo in posityf antwurd krigen? Sa geane wy ​​fierder.

Stap 4. Oanfoljende konfiguraasje en testen fan FreeRADIUS operaasje
Lykas ik hjirboppe neamde, is multiOTP al konfigureare om te wurkjen mei FreeRADIUS, alles wat oerbliuwt is tests út te fieren en ynformaasje oer ús VPN-poarte ta te foegjen oan it FreeRADIUS-konfiguraasjebestân.

Wy geane werom nei de tsjinner konsole, nei de map /usr/local/bin/multiotp/, ynfiere:

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

Ynklusyf mear detaillearre logging.

Yn it FreeRADIUS-kliïntkonfiguraasjetriem (/etc/freeeradius/clinets.conf) kommentaar út alle rigels yn ferbân mei localhost en foegje twa yngongen ta:

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

- foar test

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

- foar ús VPN-gateway.

FreeRADIUS opnij starte en besykje oan te melden:

radtest username 100110 localhost 1812 testing321

wêr brûkersnamme = brûkersnamme, 100110 = wachtwurd jûn oan ús troch de applikaasje op 'e telefoan, localhost = RADIUS tsjinner adres, 1812 - RADIUS tsjinner poarte, test321 - RADIUS tsjinner client wachtwurd (dat wy spesifisearre yn de konfiguraasje).

It resultaat fan dit kommando sil sawat as folget wurde útfierd:

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

No moatte wy derfoar soargje dat de brûker mei súkses ferifiearre is. Om dit te dwaan, sille wy sjen nei it log fan multiotp sels:

tail /var/log/multiotp/multiotp.log

En as de lêste yngong der is:

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

Doe gie alles goed en kinne wy ​​foltôgje

Stap 5: Cisco ASA konfigurearje
Litte wy it iens wêze dat wy al in konfigureare groep en belied hawwe foar tagong fia SLL VPN, konfigureare yn gearhing mei Active Directory, en wy moatte twa-faktorautentikaasje tafoegje foar dit profyl.

1. Foegje in nije AAA-tsjinnergroep ta:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
2. Foegje ús multiOTP-tsjinner ta oan de groep:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
3. Wy bewurkje ferbining profyl, it ynstellen fan de Active Directory-tsjinnergroep as de wichtichste autentikaasjetsjinner:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
4. Yn de ljepper Avansearre -> Ferifikaasje Wy selektearje ek de Active Directory-tsjinnergroep:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
5. Yn de ljepper Avansearre -> Sekundêr autentikaasje, selektearje de oanmakke tsjinner groep wêryn de multiOTP tsjinner is registrearre. Tink derom dat de sesje-brûkersnamme is erfd fan 'e primêre AAA-tsjinnergroep:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
Tapasse de ynstellings en

Stap 6, aka de lêste
Litte wy kontrolearje as twa-faktor-autentikaasje wurket foar SLL VPN:

Gean nei 2FA (Twa-faktor autentikaasje foar ASA SSL VPN)
Voila! By it ferbinen fia Cisco AnyConnect VPN Client, wurde jo ek frege om in twadde, ienmalige wachtwurd.

Ik hoopje dat dit artikel immen sil helpe, en dat it immen iten sil jaan oer hoe't jo dit kinne brûke, fergees OTP-tsjinner, foar oare taken. Diel yn 'e kommentaren as jo wolle.

Boarne: www.habr.com

Add a comment