Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)

Potřeba poskytnout vzdálený přístup k firemním prostředím se vyskytuje čím dál častěji, ať už jde o vlastní uživatele, nebo partnery, kteří potřebují přístup k určitému serveru ve vaší organizaci.

Pro tyto účely většina společností používá technologii VPN, která se osvědčila jako spolehlivý a zabezpečený způsob poskytování přístupu k interním zdrojům organizace.

Moje společnost není výjimkou a my, stejně jako mnozí jiní, tuto technologii využíváme. A podobně jako mnozí jiní používáme jako bránu pro vzdálený přístup – Cisco ASA 55xx.

Se zvyšujícím se počtem vzdálených uživatelů se objevuje potřeba usnadnit proces vydávání přihlašovacích údajů. Je však nutné to provést bez jakéhokoli ohrožení bezpečnosti.

Našli jsme řešení v aplikaci dvoufaktorové autentizace pro připojení přes Cisco SSL VPN, používající jednorázové hesla. Tento příspěvek se bude zabývat tím, jak zorganizovat podobné řešení s minimálními časovými nároky a s nulovými náklady na potřebný software (za předpokladu, že Cisco ASA je již ve vaší infrastruktuře).

Trh je přeplněn hotovými řešeními pro generování jednorázových hesel, přičemž nabízí mnoho možností jejich získání, ať už zasláním hesla prostřednictvím SMS nebo použitím tokenů, ať už hardwarových nebo softwarových (například na mobilním telefonu). Ale touha po úsporách a snaha ušetřit peníze pro svého zaměstnavatele, v rámci současné krize mě přiměla najít zdarma dostupný způsob realizace služby generování jednorázových hesel. Který, přestože je zdarma, se málo čím liší od komerčních řešení (je třeba uvést, že tento produkt má i komerční verzi, ale domluvili jsme se, že náklady, co se týče peněz, budou nulové).

Takže budeme potřebovat:

— Obraz Linuxu se sadou nástrojů – multiOTP, FreeRADIUS a nginx, pro přístup k serveru přes web (http://download.multiotp.net/ – použil jsem hotový obraz pro VMware)
— Server Active Directory
— Samotný Cisco ASA (já, pro pohodlí, používám ASDM)
— Jakýkoli softwarový token podporující mechanismus TOTP (já například používám Google Authenticator, ale hodí se i FreeOTP)

Nepôjdem do podrobností rozšírenia obrazu. Na výstupe dostanete Debian Linux s už nainštalovanými multiOTP a FreeRADIUS, nastavenými na spoluprácu a webovým rozhraním na správu OTP.

Krok 1. Iniciujeme systém a nastavujeme ho podľa svojej siete.
Predvolene sa systém dodáva s prihlasovacími údajmi root root. Myslím, že všetci uhádli, že by bolo dobré zmeniť heslo používateľa root po prvom prihlásení. Taktiež je potrebné zmeniť nastavenia siete (predvolene je to '192.168.1.44' so bránou '192.168.1.1'). Potom môžete systém reštartovať.

V Active Directory vytvoríme používateľa. otp, s heslom MySuperPassword.

Krok 2. Nastavujeme pripojenie a importujeme používateľov Active Directory.
Na to budeme potrebovať prístup do konzoly a súbor multiotp.php, prostredníctvom ktorého nastavíme parametre pripojenia k Active Directory.

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

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

Určuje, či je potrebné zadať ďalší (trvalý) pin pri zadávaní jednorazového pinu (0 alebo 1).

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

Určuje, či je potrebné zadať doménové heslo pri zadávaní jednorazového pinu (0 alebo 1).

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

Uvádza typ LDAP servera (0 = obyčajný LDAP server, v našom prípade 1 = Active Directory).

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

Určuje formát, v akom sa má zobrazovať meno používateľa (táto hodnota zobrazí iba meno, 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 určenia príslušnosti používateľa k skupine.

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

Či používať zabezpečené pripojenie k LDAP serveru (samozrejme – áno!).

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

Port pre pripojenie k LDAP serveru.

./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"

Uveďte, odkiaľ začať vyhľadávanie používateľov v doméne.

./multiotp.php -config ldap-bind-dn="otp@domain.local"

Uveďte používateľa, ktorý má práva na vyhľadávanie v Active Directory.

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

Uveďte heslo používateľa pre pripojenie k Active Directory.

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

Nastavte časový limit pre pripojenie k Active Directory.

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

Nastavte časové obmedzenie na operáciu importu používateľov.

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

Aktivujeme konfiguráciu pripojenia k Active Directory

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

Importujeme používateľov z Active Directory

Krok 3. Generujeme QR kód pre token
Tu je všetko veľmi jednoduché. Otvoríme webové rozhranie OTP servera v prehliadači, prihlásime sa (nezabudnite zmeniť predvolené heslo pre administrátora!) a stlačíme tlačidlo „Tlačiť“:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
Výsledkom tejto akcie bude stránka, na ktorej budú dva QR kódy. Na prvý z nich sa môžeme pokojne vykašlať (napriek lákavému nápisu Google Authenticator / Authenticator / 2 Steps Authenticator), a opäť pokojne naskenujeme druhý kód do softvérovej token aplikácie na telefóne:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
(áno, schválne som pokazil QR kód, aby sa stal nečitelným).

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

Pre istotu môžete vykonať kontrolu v tom istom rozhraní:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
Zadajte meno používateľa a jednorazové heslo z aplikácie na telefóne. Dostali ste kladnú odpoveď? Potom ideme ďalej.

Krok 4. Dolaďujeme a testujeme funkciu FreeRADIUS
Ako som už spomenul, multiOTP je už nastavený na prácu s FreeRADIUS, ostáva len uskutočniť testy a pridať do konfiguračného súboru FreeRADIUS informácie o našom VPN bráne.

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

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

Čím zapneme podrobnejšie logovanie.

V konfiguračnom súbore klientov FreeRADIUS (/etc/freeradius/clinets.conf) zakomentujeme všetky riadky týkajúce sa localhost a pridáme dve položky:

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

— pre test

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

— pre našu VPN bránu.

Reštartujeme FreeRADIUS a vyskúšame sa prihlásiť:

radtest username 100110 localhost 1812 testing321

kde username = meno používateľa, 100110 = heslo, ktoré nám aplikácia na telefóne poskytla, localhost = adresa RADIUS servera, 1812 — port RADIUS servera, testing321 — heslo klienta RADIUS servera (ktoré sme uviedli v konfigurácii).

Výsledkom tejto príkazu by mal byť výstup, približne v nasledovnom znení:

Sending Access-Request of id 44 to 127.0.0.1 port 1812\n        User-Name = "username"\n        User-Password = "100110"\n        NAS-IP-Address = 127.0.1.1\n        NAS-Port = 1812\n        Message-Authenticator = 0x00000000000000000000000000000000\nrad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Teraz musíme zabezpečiť, aby sa používateľ úspešne autentifikoval. Na tento účel sa pozrieme do logu multiotp:

tail /var/log/multiotp/multiotp.log

A ak posledným záznamom tam bude:

2016-09-01 08:58:17     notice  username  User    OK: Používateľ username sa úspešne prihlásil z 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token bol akceptovaný z 127.0.0.1

Potom všetko prebehlo úspešne a môžeme vykonať

Krok 5. Konfigurácia Cisco ASA
Predpokladajme, že už máme nastavenú skupinu a politiky pre prístup cez SSL VPN, nastavené v spojení s Active Directory, a potrebujeme pridať dvojfaktorovú autentifikáciu pre tento profil.

1. Pridávame novú skupinu serverov AAA:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
2. Pridávame do skupiny náš multiOTP server:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
3. Upravujeme profil pripojenia, pričom ako hlavný autentifikačný server nastavíme skupinu serverov Active Directory:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
4. Na karte Advanced -> Authentification rovnako vyberáme skupinu serverov Active Directory:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
5. Na karte Advanced -> Secondary v autentifikácii vyberáme vytvorenú skupinu serverov, v ktorej je zapísaný multiOTP-server. Označujeme, že Session username sa dedí z primárnej skupiny serverov AAA:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
Aplikujeme nastavenia a

Krok 6, ten posledný
Kontrolujeme, či funguje dvojfaktorová autentifikácia pre SSL VPN:

Prejdite na 2FA (Dvojfaktorová autentifikácia pre ASA SSL VPN)
Vua-la! Pri pripojení prostredníctvom Cisco AnyConnect VPN Client sa tiež bude pýtať druhého, jednorazového, hesla.

Dúfam, že tento článok pomôže niekomu a že niekomu poskytne podnet na zamyslenie, ako možno využiť tento, je bezplatný OTP-server na ďalšie úlohy. Podeľte sa v komentároch, ak budete mať chuť.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster