Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)

Potreba poskytovať vzdialený prístup do podnikového prostredia sa objavuje čoraz častejšie, bez ohľadu na to, či sú to vaši používatelia alebo partneri, ktorí potrebujú prístup ku konkrétnemu serveru vo vašej organizácii.

Na tieto účely väčšina spoločností využíva technológiu VPN, ktorá sa osvedčila ako spoľahlivo chránený spôsob poskytovania prístupu k miestnym zdrojom organizácie.

Moja spoločnosť nebola výnimkou a my, ako mnohí iní, používame túto technológiu. A ako mnoho iných, aj my používame Cisco ASA 55xx ako bránu vzdialeného prístupu.

S rastúcim počtom vzdialených používateľov je potrebné zjednodušiť postup vydávania poverení. Zároveň sa to však musí robiť bez ohrozenia bezpečnosti.

Pre seba sme našli riešenie v použití dvojfaktorovej autentifikácie pre pripojenie cez Cisco SSL VPN pomocou jednorazových hesiel. A táto publikácia vám prezradí, ako zorganizovať takéto riešenie s minimálnym časom a nulovými nákladmi na potrebný softvér (za predpokladu, že už máte Cisco ASA vo svojej infraštruktúre).

Trh je presýtený krabicovými riešeniami na generovanie jednorazových hesiel, pričom ponúka množstvo možností, ako ich získať, či už ide o zaslanie hesla prostredníctvom SMS alebo pomocou tokenov, či už hardvérových alebo softvérových (napríklad v mobilnom telefóne). Ale túžba ušetriť peniaze a túžba ušetriť peniaze pre môjho zamestnávateľa ma v súčasnej kríze prinútila nájsť bezplatný spôsob implementácie služby na generovanie jednorazových hesiel. Čo je síce zadarmo, ale nie je o nič horšie ako komerčné riešenia (tu by sme si mali urobiť rezerváciu, pričom treba poznamenať, že tento produkt má aj komerčnú verziu, ale dohodli sme sa, že naše náklady v peniazoch budú nulové).

Budeme teda potrebovať:

- Linuxový obraz so vstavanou sadou nástrojov - multiOTP, FreeRADIUS a nginx, na prístup k serveru cez web (http://download.multiotp.net/ - použil som hotový obraz pre VMware)
— Active Directory Server
— Cisco ASA samotné (pre pohodlie používam ASDM)
— Akýkoľvek softvérový token, ktorý podporuje mechanizmus TOTP (ja napríklad používam Google Authenticator, ale bude fungovať rovnaký FreeOTP)

Nebudem zachádzať do podrobností o tom, ako sa obraz vyvíja. Výsledkom je, že dostanete Debian Linux s už nainštalovanými multiOTP a FreeRADIUS, nakonfigurovanými na spoluprácu a webovým rozhraním na správu OTP.

Krok 1. Spustíme systém a nakonfigurujeme ho pre vašu sieť
V predvolenom nastavení sa systém dodáva s povereniami root root. Myslím, že každý tušil, že by bolo dobré po prvom prihlásení zmeniť heslo používateľa root. Musíte tiež zmeniť nastavenia siete (v predvolenom nastavení je to „192.168.1.44“ s bránou „192.168.1.1“). Potom môžete reštartovať systém.

Vytvorme používateľa v Active Directory OTP, s heslom MojeSuperPassword.

Krok 2. Nastavte pripojenie a importujte používateľov služby Active Directory
Na to potrebujeme prístup ku konzole a priamo k súboru multiotp.php, pomocou ktorého nakonfigurujeme nastavenia pripojenia k Active Directory.

Prejdite do adresára /usr/local/bin/multiotp/ a postupne vykonajte nasledujúce príkazy:

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

Určuje, či je potrebný ďalší (trvalý) PIN pri zadávaní jednorazového PIN kódu (0 alebo 1)

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

Určuje, či sa pri zadávaní jednorazového kódu PIN (0 alebo 1) vyžaduje heslo domény

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

Je uvedený typ servera LDAP (0 = bežný server LDAP, v našom prípade 1 = Active Directory)

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

Určuje formát, v ktorom sa má prezentovať používateľské meno (táto hodnota zobrazí iba názov bez domény)

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

To isté, len pre skupinu

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

Určuje metódu na určenie, či používateľ patrí do skupiny

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

Mám použiť zabezpečené pripojenie k serveru LDAP (samozrejme, áno!)

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

Port na pripojenie k serveru LDAP

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

Adresa vášho servera Active Directory

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

Uvádzame, kde začať hľadať používateľov v doméne

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

Zadajte používateľa, ktorý má práva na vyhľadávanie v službe Active Directory

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

Zadajte heslo používateľa na pripojenie k Active Directory

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

Nastavenie časového limitu pre pripojenie k Active Directory

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

Nastavili sme časový limit pre operáciu importu používateľa

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

Aktivácia konfigurácie pripojenia Active Directory

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

Importujeme používateľov z Active Directory

Krok 3. Vygenerujte QR kód pre token
Všetko je tu mimoriadne jednoduché. Otvorte webové rozhranie OTP servera v prehliadači, prihláste sa (nezabudnite zmeniť predvolené heslo pre administrátora!) a kliknite na tlačidlo „Tlačiť“:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
Výsledkom tejto akcie bude stránka, ktorá obsahuje dva QR kódy. Prvý z nich smelo ignorujeme (napriek lákavému nápisu Google Authenticator / Authenticator / 2 Steps Authenticator) a druhý kód opäť smelo naskenujeme do softvérového tokenu v telefóne:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
(áno, schválne som pokazil QR kód, aby bol nečitateľný).

Po dokončení týchto akcií sa vo vašej aplikácii každých tridsať sekúnd začne generovať šesťmiestne heslo.

Pre istotu si to môžete skontrolovať v rovnakom rozhraní:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
Zadaním používateľského mena a jednorazového hesla z aplikácie v telefóne. Dostali ste pozitívnu odozvu? Poďme teda ďalej.

Krok 4. Dodatočná konfigurácia a testovanie prevádzky FreeRADIUS
Ako som spomenul vyššie, multiOTP je už nakonfigurovaný na prácu s FreeRADIUS, ostáva už len spustiť testy a pridať informácie o našej VPN bráne do konfiguračného súboru FreeRADIUS.

Vrátime sa do konzoly servera, do adresára /usr/local/bin/multiotp/, zadajte:

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

Vrátane podrobnejšieho protokolovania.

V konfiguračnom súbore klientov FreeRADIUS (/etc/freeradius/clinets.conf) zakomentujte všetky riadky súvisiace s localhost a pridajte dva záznamy:

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

- na skúšku

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

— pre našu bránu VPN.

Reštartujte FreeRADIUS a skúste sa prihlásiť:

radtest username 100110 localhost 1812 testing321

kde meno = používateľské meno, 100110 = heslo, ktoré nám pridelila aplikácia v telefóne, localhost = adresa servera RADIUS, 1812 — port servera RADIUS, testing321 — Heslo klienta servera RADIUS (ktoré sme špecifikovali v konfigurácii).

Výsledok tohto príkazu sa zobrazí približne takto:

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

Teraz sa musíme uistiť, že používateľ je úspešne overený. Aby sme to dosiahli, pozrieme sa na protokol samotného multiotp:

tail /var/log/multiotp/multiotp.log

A ak je tam posledný záznam:

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

Potom už išlo všetko dobre a môžeme dokončiť

Krok 5: Nakonfigurujte Cisco ASA
Dohodnime sa, že už máme nakonfigurovanú skupinu a politiky pre prístup cez SLL VPN, nakonfigurované v spojení s Active Directory a pre tento profil musíme pridať dvojfaktorovú autentifikáciu.

1. Pridať novú skupinu serverov AAA:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
2. Pridajte náš multiOTP server do skupiny:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
3. Upravujeme profil pripojenia, nastavenie skupiny serverov Active Directory ako hlavného overovacieho servera:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
4. V záložke Rozšírené -> Autentifikácia Vyberieme tiež skupinu serverov Active Directory:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
5. V záložke Pokročilé -> Sekundárne autentifikáciu, vyberte vytvorenú skupinu serverov, v ktorej je zaregistrovaný server multiOTP. Všimnite si, že používateľské meno relácie je zdedené z primárnej skupiny serverov AAA:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
Použite nastavenia a

Krok 6, známy ako posledný
Pozrime sa, či funguje dvojfaktorová autentifikácia pre SLL VPN:

Prejdite na 2FA (dvojfaktorové overenie pre ASA SSL VPN)
Voila! Pri pripájaní cez Cisco AnyConnect VPN Client budete tiež požiadaní o druhé, jednorazové heslo.

Dúfam, že tento článok niekomu pomôže a niekomu dá podnet na zamyslenie sa nad tým, ako to využiť, voľný OTP server pre iné úlohy. Podeľte sa v komentároch, ak chcete.

Zdroj: hab.com

Pridať komentár