Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)

Pêdiviya peydakirina gihandina dûr a hawîrdorek pargîdanî her ku diçe zêdetir derdikeve holê, ferq nake ka ew bikarhênerên we an hevkarên we ne yên ku di rêxistina we de hewceyê gihîştina serverek taybetî ne.

Ji bo van mebestan, pir pargîdanî teknolojiya VPN bikar tînin, ku xwe îsbat kiriye ku rêyek pêbawer parastî ye ku gihîştina çavkaniyên herêmî yên rêxistinê peyda dike.

Pargîdaniya min ne îstîsna bû, û em, mîna gelekên din, vê teknolojiyê bikar tînin. Û, mîna gelekên din, em Cisco ASA 55xx wekî dergehek gihîştina dûr bikar tînin.

Her ku hejmara bikarhênerên dûr zêde dibe, pêdivî ye ku prosedûra derxistina pêbaweriyan hêsan bike. Lê di heman demê de, divê ev yek bêyî ku ewlehiya ewlehiyê were kirin.

Ji bo xwe, me di karanîna pejirandina du-faktorî de ji bo girêdana bi Cisco SSL VPN-ê, bi karanîna şîfreyên yek-car, çareseriyek dît. Û ev weşan dê ji we re vebêje ka meriv çawa çareseriyek wusa bi dem hindiktirîn û lêçûnên sifir ji bo nermalava hewce organîze dike (bi şertê ku we berê di binesaziya xwe de Cisco ASA hebe).

Sûk bi çareseriyên qutkirî yên ji bo afirandina şîfreyên yek-carî tije ye, di heman demê de ji bo bidestxistina wan gelek vebijarkan pêşkêşî dike, çi şandina şîfreyê bi SMS-ê an jî karanîna tokenan, hem hardware û hem jî nermalavê (mînak, li ser têlefonek desta). Lê xwesteka teserûfa drav û xwesteka teserûfkirina drav ji bo kardêrê xwe, di krîza heyî de, min neçar kir ku rêyek belaş bibînim da ku karûbarek ji bo çêkirina şîfreyên yek carî bicîh bikim. Ku, her çend belaş be jî, ji çareseriyên bazirganî ne hindiktir e (li vir divê em veqetandinê bikin, û destnîşan bikin ku ev hilber di heman demê de guhertoyek bazirganî jî heye, lê me li hev kir ku lêçûnên me, di drav de, dê sifir be).

Ji ber vê yekê, em hewce ne:

- Wêneyek Linux-ê bi komek amûrek çêkirî - multiOTP, FreeRADIUS û nginx, ji bo gihîştina serverê bi riya malperê (http://download.multiotp.net/ - Min wêneyek amadekirî ji bo VMware bikar anî)
- Pêşkêşkara Destûra Çalak
- Cisco ASA bixwe (ji bo rehetiyê, ez ASDM bikar tînim)
- Her nîşanek nermalavê ku mekanîzmaya TOTP piştgirî dike (mînak, ez Google Authenticator bikar tînim, lê heman FreeOTP dê bike)

Ez ê neçim nav hûrguliyên ka wêne çawa vedibe. Wekî encamek, hûn ê Debian Linux-ê bi multiOTP û FreeRADIUS-a ku berê hatî saz kirin, ji bo ku bi hev re bixebitin hatine mîheng kirin, û navgînek webê ya ji bo rêveberiya OTP-ê bistînin.

Gav 1. Em pergalê dest pê dikin û ji bo tora we mîheng dikin
Bi xwerû, pergal bi pêbaweriyên root root tê. Ez difikirim ku her kesî texmîn kir ku dê ramanek baş be ku meriv şîfreya bikarhênerê root piştî têketina yekem biguhezîne. Di heman demê de pêdivî ye ku mîhengên torê biguhezînin (ji hêla xwerû ew '192.168.1.44' bi dergehê '192.168.1.1' ye). Piştre hûn dikarin pergalê ji nû ve bidin destpêkirin.

Ka em di Active Directory de bikarhênerek biafirînin otp, bi şîfre MySuperPassword.

Gav 2. Têkilî saz bikin û bikarhênerên Active Directory îtxal bikin
Ji bo vê yekê, pêdivî ye ku em bigihîjin konsolê, û rasterast bi pelê multiotp.php, bi kar tînin em ê mîhengên pêwendiyê bi Active Directory veava bikin.

Biçe pelrêçê /usr/local/bin/multiotp/ û bi dorê fermanên jêrîn bicîh bînin:

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

Diyar dike ka dema ku têkevin pinek yek carî (0 an 1) pêvekek zêde (daîmî) hewce ye an na

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

Diyar dike ka şîfreyek domainê hewce ye dema ku têkevin pinek yek carî (0 an 1)

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

Cûreya servera LDAP-ê tê destnîşan kirin (0 = pêşkêşkara LDAP-a birêkûpêk, di doza me de 1 = Pelrêça çalak)

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

Forma ku tê de navê bikarhêner tê pêşkêş kirin diyar dike (ev nirx dê tenê nav nîşan bide, bêyî domain)

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

Heman tişt, tenê ji bo komek

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

Rêbazek ji bo destnîşankirina ka bikarhênerek ji komekê re diyar dike

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

Ma ez pêwendiyek ewledar bi servera LDAP-ê re bikar bînim (bê guman - erê!)

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

Port ji bo girêdana bi servera LDAP

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

Navnîşana servera we ya Active Directory

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

Em destnîşan dikin ku meriv li ku derê dest bi lêgerîna bikarhênerên di domainê de bike

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

Bikarhênerek ku di Active Directory de xwediyê mafên lêgerînê ye diyar bike

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

Şîfreya bikarhêner diyar bikin ku hûn bi Active Directory ve girêdayî bibin

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

Sazkirina wextê ji bo girêdana bi Active Directory

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

Me ji bo operasyona importa bikarhêner sînorek dem destnîşan kir

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

Çalakkirina veavakirina girêdana Active Directory

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

Em bikarhêneran ji Active Directory derdixin

Gav 3. Ji bo token kodek QR biafirînin
Her tişt li vir pir hêsan e. Di gerokê de navbeynkariya webê ya servera OTP vekin, têkevinê (ji bîr nekin ku şîfreya xwerû ya rêveberê biguhezînin!), û li ser bişkoja "Çapkirinê" bikirtînin:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
Encama vê çalakiyê dê bibe rûpelek ku du kodên QR dihewîne. Em bi wêrekî guh nadin yekem ji wan (tevî nivîsa balkêş Google Authenticator / Authenticator / 2 Steps Authenticator), û dîsa em bi wêrekî koda duyemîn di nav nîşanek nermalavê de li ser têlefonê dişoxilînin:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
(erê, min bi qestî koda QR xirab kir da ku ew neyê xwendin).

Piştî qedandina van çalakiyan, şîfreyek şeş-hejmar dê dest pê bike ku di serîlêdana we de her sî çirkeyek carekê were çêkirin.

Ji bo ku hûn pê ewle bin, hûn dikarin wê di heman navberê de kontrol bikin:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
Bi têketina navê bikarhêner û şîfreya xwe ya yek-carî ji serîlêdana li ser têlefona xwe. We bersivek erênî wergirt? Ji ber vê yekê em diçin.

Gav 4. Veavakirin û ceribandina zêde ya operasyona FreeRADIUS
Wekî ku min li jor behs kir, multiOTP jixwe hatî mîheng kirin ku bi FreeRADIUS re bixebite, ya ku dimîne ev e ku ceribandinan bimeşîne û agahdariya der barê dergehê VPN-ya me li pelê veavakirina FreeRADIUS-ê zêde bike.

Em vedigerin konsolê serverê, li pelrêça /usr/local/bin/multiotp/, têkevin:

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

Di nav de têketina berfirehtir.

Di pelê veavakirina xerîdarên FreeRADIUS de (/etc/freeradius/clinets.conf) hemî rêzikên têkildar şîrove bikin localhost û du navnîşan lê zêde bike:

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

- ji bo ceribandinê

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

- ji bo deriyê meya VPN.

FreeRADIUS ji nû ve bidin destpêkirin û hewl bidin ku têkevinê:

radtest username 100110 localhost 1812 testing321

ko navê bikarhêner = navê bikarhêner, 100110 = şîfreya ku ji hêla serîlêdana li ser têlefonê ve ji me re hatî dayîn, localhost = Navnîşana servera RADIUS, 1812 - Porta servera RADIUS, test321 - Şîfreya muwekîlê servera RADIUS (ya ku me di mîhengê de diyar kir).

Encama vê fermanê dê bi qasî jêrîn derkeve holê:

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

Naha divê em pê ewle bin ku bikarhêner bi serfirazî hatî pejirandin. Ji bo vê yekê, em ê li têketina multiotp bixwe binêrin:

tail /var/log/multiotp/multiotp.log

Û heke têketina paşîn hebe:

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

Hingê her tişt baş bû û em dikarin temam bikin

Gav 5: Cisco ASA saz bike
Werin em bipejirînin ku jixwe komek û polîtîkayên me yên mîhengkirî hene ji bo gihîştina bi SLL VPN, ku bi Active Directory ve hatî mîheng kirin, û pêdivî ye ku em ji bo vê profîlê piştrastkirina du-faktorî zêde bikin.

1. Komek serverek nû ya AAA zêde bikin:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
2. Pêşkêşkara meya multiOTP li komê zêde bikin:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
3. Em sererast dikin profîla girêdanê, koma servera Active Directory wekî servera erêkirinê ya sereke destnîşan dike:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
4. Di tabê de Pêşketî -> Nasname Em jî koma servera Active Directory hilbijêrin:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
5. Di tabê de Pêşketî -> Duyemîn verastkirin, koma servera çêkirî ya ku servera multiOTP tê de qeydkirî ye hilbijêrin. Têbînî ku navê bikarhêner Session ji koma servera sereke ya AAA mîras e:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
Sepanê mîhengan û

Gav 6, ango ya paşîn
Ka em binihêrin ka rastkirina du-faktorî ji bo SLL VPN dixebite:

Biçe 2FA (Ji bo ASA SSL VPN verastkirina du-faktorî)
Voila! Dema ku bi Cisco AnyConnect VPN Client ve girêdidin, dê ji we şîfreyek duyemîn, yek-car jî were xwestin.

Ez hêvî dikim ku ev gotar dê alîkariya kesek bike, û ku ew ê ji bo ramanê bide kesek ka meriv çawa vê bikar tîne, belaş server OTP, ji bo karên din. Heke hûn bixwazin di şîroveyan de parve bikin.

Source: www.habr.com

Add a comment