Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)

Ang pangangailangang magbigay ng malayuang pag-access sa isang corporate environment ay umuusbong nang higit at mas madalas, hindi mahalaga kung ang iyong mga user o mga kasosyo ang nangangailangan ng access sa isang partikular na server sa iyong organisasyon.

Para sa mga layuning ito, karamihan sa mga kumpanya ay gumagamit ng teknolohiya ng VPN, na napatunayan ang sarili bilang isang mapagkakatiwalaang protektadong paraan ng pagbibigay ng access sa mga lokal na mapagkukunan ng organisasyon.

Ang aking kumpanya ay walang pagbubukod, at kami, tulad ng marami pang iba, ay gumagamit ng teknolohiyang ito. At, tulad ng marami pang iba, ginagamit namin ang Cisco ASA 55xx bilang isang remote access gateway.

Habang dumarami ang mga malalayong user, kailangang gawing simple ang pamamaraan para sa pag-isyu ng mga kredensyal. Ngunit sa parehong oras, dapat itong gawin nang hindi nakompromiso ang kaligtasan.

Para sa aming sarili, nakakita kami ng solusyon sa paggamit ng two-factor authentication para sa pagkonekta sa pamamagitan ng Cisco SSL VPN, gamit ang isang beses na mga password. At sasabihin sa iyo ng publikasyong ito kung paano ayusin ang gayong solusyon na may kaunting oras at walang gastos para sa kinakailangang software (sa kondisyon na mayroon ka nang Cisco ASA sa iyong imprastraktura).

Ang merkado ay puno ng mga naka-box na solusyon para sa pagbuo ng isang beses na mga password, habang nag-aalok ng maraming mga pagpipilian para sa pagkuha ng mga ito, ito man ay pagpapadala ng password sa pamamagitan ng SMS o paggamit ng mga token, parehong hardware at software (halimbawa, sa isang mobile phone). Ngunit ang pagnanais na makatipid ng pera at ang pagnanais na makatipid ng pera para sa aking tagapag-empleyo, sa kasalukuyang krisis, ay pinilit akong maghanap ng isang libreng paraan upang ipatupad ang isang serbisyo para sa pagbuo ng isang beses na mga password. Na, habang libre, ay hindi gaanong mababa sa mga komersyal na solusyon (dito dapat tayong magpareserba, na binabanggit na ang produktong ito ay mayroon ding komersyal na bersyon, ngunit sumang-ayon kami na ang aming mga gastos, sa pera, ay magiging zero).

Kaya, kailangan natin:

- Isang imahe ng Linux na may built-in na hanay ng mga tool - multiOTP, FreeRADIUS at nginx, para sa pag-access sa server sa pamamagitan ng web (http://download.multiotp.net/ - Gumamit ako ng isang handa na imahe para sa VMware)
β€” Server ng Active Directory
β€” Cisco ASA mismo (para sa kaginhawahan, gumagamit ako ng ASDM)
β€” Anumang software token na sumusuporta sa mekanismo ng TOTP (Ako, halimbawa, ay gumagamit ng Google Authenticator, ngunit ang parehong FreeOTP ang gagawin)

Hindi ako pupunta sa mga detalye kung paano lumalabas ang larawan. Bilang resulta, makakatanggap ka ng Debian Linux na may multiOTP at FreeRADIUS na naka-install na, na-configure upang gumana nang magkasama, at isang web interface para sa OTP administration.

Hakbang 1. Sinisimulan namin ang system at i-configure ito para sa iyong network
Bilang default, ang system ay may mga root root credential. Sa palagay ko nahulaan ng lahat na magandang ideya na baguhin ang root user password pagkatapos ng unang pag-login. Kailangan mo ring baguhin ang mga setting ng network (bilang default ito ay '192.168.1.44' kasama ang gateway na '192.168.1.1'). Pagkatapos ay maaari mong i-reboot ang system.

Gumawa tayo ng user sa Active Directory OTP, na may password MySuperPassword.

Hakbang 2. I-set up ang koneksyon at i-import ang mga user ng Active Directory
Upang gawin ito, kailangan namin ng access sa console, at direkta sa file multiotp.php, gamit ang kung saan iko-configure namin ang mga setting ng koneksyon sa Active Directory.

Pumunta sa direktoryo /usr/local/bin/multiotp/ at isagawa ang sumusunod na mga utos sa turn:

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

Tinutukoy kung kinakailangan ang karagdagang (permanenteng) pin kapag naglalagay ng isang beses na pin (0 o 1)

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

Tinutukoy kung kinakailangan ang password ng domain kapag naglalagay ng isang beses na pin (0 o 1)

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

Ang uri ng LDAP server ay ipinahiwatig (0 = regular na LDAP server, sa aming kaso 1 = Active Directory)

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

Tinutukoy ang format kung saan ipapakita ang username (ang halagang ito ay magpapakita lamang ng pangalan, nang walang domain)

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

Parehong bagay, para lamang sa isang grupo

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

Tinutukoy ang isang paraan para sa pagtukoy kung ang isang user ay kabilang sa isang pangkat

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

Dapat ba akong gumamit ng secure na koneksyon sa LDAP server (siyempre - oo!)

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

Port para sa pagkonekta sa LDAP server

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

Ang address ng iyong server ng Active Directory

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

Isinasaad namin kung saan magsisimulang maghanap ng mga user sa domain

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

Tukuyin ang isang user na may mga karapatan sa paghahanap sa Active Directory

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

Tukuyin ang password ng user para kumonekta sa Active Directory

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

Pagtatakda ng timeout para sa pagkonekta sa Active Directory

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

Nagtakda kami ng limitasyon sa oras para sa operasyon ng pag-import ng user

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

Ina-activate ang configuration ng koneksyon sa Active Directory

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

Nag-import kami ng mga user mula sa Active Directory

Hakbang 3. Bumuo ng QR code para sa token
Lahat dito ay sobrang simple. Buksan ang web interface ng OTP server sa browser, mag-log in (huwag kalimutang baguhin ang default na password para sa admin!), At mag-click sa pindutang "I-print":

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
Ang resulta ng pagkilos na ito ay magiging isang page na naglalaman ng dalawang QR code. Matapang naming binabalewala ang una sa mga ito (sa kabila ng kaakit-akit na inskripsyon ng Google Authenticator / Authenticator / 2 Steps Authenticator), at muli ay matapang naming ini-scan ang pangalawang code sa isang software token sa telepono:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
(oo, sinadya kong sirain ang QR code para hindi mabasa).

Pagkatapos makumpleto ang mga pagkilos na ito, magsisimulang mabuo ang isang anim na digit na password sa iyong aplikasyon tuwing tatlumpung segundo.

Upang makatiyak, maaari mo itong suriin sa parehong interface:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
Sa pamamagitan ng pagpasok ng iyong username at isang beses na password mula sa application sa iyong telepono. Nakatanggap ka ba ng positibong tugon? Kaya lumipat kami.

Hakbang 4. Karagdagang pagsasaayos at pagsubok ng operasyon ng FreeRADIUS
Tulad ng nabanggit ko sa itaas, ang multiOTP ay na-configure na upang gumana sa FreeRADIUS, ang natitira na lang ay magpatakbo ng mga pagsubok at magdagdag ng impormasyon tungkol sa aming VPN gateway sa FreeRADIUS configuration file.

Bumalik kami sa console ng server, sa direktoryo /usr/local/bin/multiotp/, ipasok ang:

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

Kasama ang mas detalyadong pag-log.

Sa file ng pagsasaayos ng mga kliyente ng FreeRADIUS (/etc/freeradius/clinets.conf) ikomento ang lahat ng linyang nauugnay sa localhost at magdagdag ng dalawang entry:

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

- para sa pagsubok

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

β€” para sa aming VPN gateway.

I-restart ang FreeRADIUS at subukang mag-log in:

radtest username 100110 localhost 1812 testing321

saan username = username, 100110 = password na ibinigay sa amin ng application sa telepono, localhost = RADIUS server address, 1812 β€” RADIUS server port, testing321 β€” RADIUS server client password (na aming tinukoy sa config).

Ang resulta ng command na ito ay magiging output ng humigit-kumulang tulad ng sumusunod:

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

Ngayon ay kailangan nating tiyakin na ang user ay matagumpay na napatotohanan. Upang gawin ito, titingnan natin ang log ng multiotp mismo:

tail /var/log/multiotp/multiotp.log

At kung ang huling entry ay mayroong:

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

Then everything went well and we can complete

Hakbang 5: I-configure ang Cisco ASA
Sumang-ayon tayo na mayroon na tayong naka-configure na grupo at mga patakaran para sa pag-access sa pamamagitan ng SLL VPN, na na-configure kasabay ng Active Directory, at kailangan nating magdagdag ng two-factor authentication para sa profile na ito.

1. Magdagdag ng bagong pangkat ng AAA server:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
2. Idagdag ang aming multiOTP server sa grupo:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
3. Inedit namin profile ng koneksyon, pagtatakda ng pangkat ng server ng Active Directory bilang pangunahing server ng pagpapatunay:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
4. Sa tab Advanced -> Authentication Pinipili din namin ang pangkat ng server ng Active Directory:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
5. Sa tab Advanced -> Pangalawa pagpapatunay, piliin ang nilikhang pangkat ng server kung saan nakarehistro ang multiOTP server. Tandaan na ang username ng Session ay minana mula sa pangunahing pangkat ng AAA server:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
Ilapat ang mga setting at

Hakbang 6, aka ang huli
Suriin natin kung gumagana ang two-factor authentication para sa SLL VPN:

Pumunta sa 2FA (Two-factor authentication para sa ASA SSL VPN)
Voila! Kapag kumokonekta sa pamamagitan ng Cisco AnyConnect VPN Client, hihilingin din sa iyo ang pangalawang, isang beses na password.

Umaasa ako na ang artikulong ito ay makakatulong sa isang tao, at na ito ay magbibigay sa isang tao ng pag-iisip kung paano gamitin ito, libre OTP server, para sa iba pang mga gawain. Ibahagi sa mga komento kung nais mo.

Pinagmulan: www.habr.com

Magdagdag ng komento