Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)

Potreba po zagotavljanju oddaljenega dostopa do korporativnega okolja se vse pogosteje pojavlja, ne glede na to, ali vaši uporabniki ali partnerji potrebujejo dostop do določenega strežnika v vaši organizaciji.

Za te namene večina podjetij uporablja tehnologijo VPN, ki se je izkazala kot zanesljivo zaščiten način zagotavljanja dostopa do lokalnih virov organizacije.

Moje podjetje ni bilo nobena izjema in tako kot mnogi drugi uporabljamo to tehnologijo. In kot mnogi drugi uporabljamo Cisco ASA 55xx kot prehod za oddaljeni dostop.

Ker se število oddaljenih uporabnikov povečuje, je treba poenostaviti postopek izdaje poverilnic. Toda hkrati je treba to storiti brez ogrožanja varnosti.

Zase smo našli rešitev v uporabi dvofaktorske avtentikacije za povezovanje preko Cisco SSL VPN z uporabo enkratnih gesel. In ta publikacija vam bo povedala, kako organizirati takšno rešitev z minimalnim časom in brez stroškov za potrebno programsko opremo (pod pogojem, da že imate Cisco ASA v svoji infrastrukturi).

Trg je poln škatlastih rešitev za generiranje enkratnih gesel, hkrati pa ponuja veliko možnosti za njihovo pridobitev, pa naj gre za pošiljanje gesla prek SMS-a ali uporabo žetonov, tako strojne kot programske (na primer na mobilnem telefonu). Toda želja po varčevanju in želja po varčevanju pri delodajalcu me je v trenutni krizi prisilila, da sem našel brezplačen način za implementacijo storitve za generiranje enkratnih gesel. Ki je sicer brezplačna, vendar ni veliko slabša od komercialnih rešitev (tukaj moramo narediti pridržek, saj ima ta izdelek tudi komercialno različico, vendar smo se dogovorili, da bodo naši stroški v denarju enaki nič).

Torej, potrebujemo:

- Linux slika z vgrajenim naborom orodij - multiOTP, FreeRADIUS in nginx, za dostop do strežnika preko spleta (http://download.multiotp.net/ - uporabil sem že pripravljeno sliko za VMware)
— Strežnik Active Directory
— Sama Cisco ASA (za udobje uporabljam ASDM)
— Kateri koli žeton programske opreme, ki podpira mehanizem TOTP (jaz na primer uporabljam Google Authenticator, vendar bo enak FreeOTP)

Ne bom se spuščal v podrobnosti o tem, kako se slika odvija. Kot rezultat boste prejeli Debian Linux z že nameščenima multiOTP in FreeRADIUS, ki sta konfigurirana za skupno delo, in spletnim vmesnikom za administracijo OTP.

Korak 1. Zaženemo sistem in ga konfiguriramo za vaše omrežje
Sistem je privzeto opremljen s poverilnicami root root. Mislim, da so vsi uganili, da bi bilo dobro spremeniti uporabniško geslo root po prvi prijavi. Prav tako morate spremeniti omrežne nastavitve (privzeto je '192.168.1.44' s prehodom '192.168.1.1'). Nato lahko znova zaženete sistem.

Ustvarimo uporabnika v imeniku Active Directory otp, z geslom MySuperPassword.

2. korak. Nastavite povezavo in uvozite uporabnike Active Directory
Za to potrebujemo dostop do konzole in neposredno do datoteke multiotp.php, s katerim bomo konfigurirali nastavitve povezave z imenikom Active Directory.

Pojdi v imenik /usr/local/bin/multiotp/ in izmenično izvedite naslednje ukaze:

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

Določa, ali je pri vnosu enkratnega PIN-a (0 ali 1) potreben dodaten (trajni) pin.

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

Določa, ali je pri vnosu enkratnega PIN-a (0 ali 1) potrebno geslo domene.

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

Naveden je tip strežnika LDAP (0 = običajni strežnik LDAP, v našem primeru 1 = Active Directory)

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

Podaja obliko, v kateri naj bo predstavljeno uporabniško ime (ta vrednost bo prikazala samo ime, brez domene)

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

Ista stvar, samo za skupino

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

Podaja metodo za ugotavljanje, ali uporabnik pripada skupini

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

Ali naj uporabim varno povezavo s strežnikom LDAP (seveda, da!)

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

Vrata za povezavo s strežnikom LDAP

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

Vaš naslov strežnika Active Directory

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

Navedemo, kje naj začnemo iskati uporabnike v domeni

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

Določite uporabnika, ki ima pravice iskanja v imeniku Active Directory

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

Določite uporabniško geslo za povezavo z imenikom Active Directory

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

Nastavitev časovne omejitve za povezavo z imenikom Active Directory

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

Določili smo časovno omejitev za operacijo uvoza uporabnika

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

Aktiviranje konfiguracije povezave Active Directory

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

Uporabnike uvažamo iz Active Directoryja

3. korak. Ustvarite kodo QR za žeton
Tukaj je vse izjemno preprosto. V brskalniku odprite spletni vmesnik strežnika OTP, se prijavite (ne pozabite spremeniti privzetega gesla za skrbnika!) in kliknite gumb »Natisni«:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
Rezultat tega dejanja bo stran z dvema kodama QR. Prvega pogumno zanemarimo (kljub privlačnemu napisu Google Authenticator / Authenticator / 2 Steps Authenticator), drugo kodo pa spet pogumno poskeniramo v programski žeton na telefonu:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
(ja, QR kodo sem namenoma pokvaril, da je neberljiva).

Po zaključku teh dejanj se bo v vaši aplikaciji vsakih trideset sekund začelo generirati šestmestno geslo.

Če želite biti prepričani, ga lahko preverite v istem vmesniku:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
Z vnosom uporabniškega imena in enkratnega gesla iz aplikacije na telefonu. Ste prejeli pozitiven odgovor? Torej gremo naprej.

Korak 4. Dodatna konfiguracija in testiranje delovanja FreeRADIUS
Kot sem omenil zgoraj, je multiOTP že konfiguriran za delo s FreeRADIUS, vse kar ostane je, da izvedemo teste in dodamo informacije o našem prehodu VPN v konfiguracijsko datoteko FreeRADIUS.

Vrnemo se na strežniško konzolo, v imenik /usr/local/bin/multiotp/, vnesite:

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

Vključno s podrobnejšim beleženjem.

V konfiguracijski datoteki odjemalcev FreeRADIUS (/etc/freeradius/clinets.conf) komentirajte vse vrstice, povezane z localhost in dodajte dva vnosa:

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

- za test

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

— za naš prehod VPN.

Ponovno zaženite FreeRADIUS in se poskusite prijaviti:

radtest username 100110 localhost 1812 testing321

če uporabniško ime = uporabniško ime, 100110 = geslo, ki nam ga posreduje aplikacija na telefonu, localhost = naslov strežnika RADIUS, 1812 — vrata strežnika RADIUS, testing321 — Geslo odjemalca strežnika RADIUS (ki smo ga določili v konfiguraciji).

Rezultat tega ukaza bo izpisan približno takole:

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

Zdaj se moramo prepričati, da je uporabnik uspešno overjen. Da bi to naredili, si bomo ogledali sam dnevnik multiotp:

tail /var/log/multiotp/multiotp.log

In če je zadnji vnos:

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

Potem je šlo vse dobro in lahko zaključimo

5. korak: Konfigurirajte Cisco ASA
Strinjamo se, da že imamo konfigurirano skupino in politike za dostop prek SLL VPN, konfigurirane v povezavi z Active Directory, in moramo dodati dvofaktorsko avtentikacijo za ta profil.

1. Dodajte novo skupino strežnikov AAA:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
2. Dodajte naš multiOTP strežnik v skupino:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
3. Urejamo povezovalni profil, nastavitev skupine strežnikov Active Directory kot glavnega strežnika za preverjanje pristnosti:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
4. V zavihku Napredno -> Preverjanje pristnosti Izberemo tudi skupino strežnikov Active Directory:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
5. V zavihku Napredno -> Sekundarno avtentikacijo izberite ustvarjeno skupino strežnikov, v kateri je registriran strežnik multiOTP. Upoštevajte, da je uporabniško ime Session podedovano iz primarne skupine strežnikov AAA:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
Uporabite nastavitve in

Korak 6, ali zadnji
Preverimo, ali dvofaktorska avtentikacija deluje za SLL VPN:

Pojdite na 2FA (dvofaktorska avtentikacija za ASA SSL VPN)
Voila! Pri povezovanju prek Cisco AnyConnect VPN Client boste morali vnesti tudi drugo, enkratno geslo.

Upam, da bo ta članek komu pomagal in da bo komu dal razlog za razmislek, kako to uporabiti, brezplačno strežnik OTP, za druga opravila. Delite v komentarjih, če želite.

Vir: www.habr.com

Dodaj komentar