Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)

Potřeba poskytovat vzdálený přístup do podnikového prostředí vyvstává stále častěji, ať už se jedná o uživatele nebo partnery, kteří potřebují přístup ke konkrétnímu serveru ve vaší organizaci.

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

Moje společnost není výjimkou a stejně jako mnoho dalších tuto technologii využíváme. A jako mnoho dalších používáme Cisco ASA 55xx jako bránu vzdáleného přístupu.

S rostoucím počtem vzdálených uživatelů je potřeba usnadnit postup vydávání přihlašovacích údajů. Ale zároveň to musí být provedeno bez ohrožení bezpečnosti.

Pro sebe jsme našli řešení v použití dvoufaktorové autentizace pro připojení přes Cisco SSL VPN pomocí jednorázových hesel. A tato publikace vám prozradí, jak takové řešení zorganizovat s minimálním časem a nulovými náklady na potřebný software (za předpokladu, že již Cisco ASA v infrastruktuře máte).

Trh je plný krabicových řešení pro generování jednorázových hesel, přičemž nabízí spoustu možností, jak je získat, ať už jde o zaslání hesla pomocí SMS nebo pomocí tokenů, jak hardwarových, tak softwarových (například na mobilním telefonu). Ale touha po úsporách a touha ušetřit peníze svému zaměstnavateli v současné krizi mě přiměly najít bezplatný způsob, jak implementovat službu pro generování jednorázových hesel. Což i přes to, že je zdarma, není o moc horší než komerční řešení (zde nutno podotknout, že tento produkt má i komerční verzi, ale shodli jsme se na tom, že náklady v přepočtu na peníze budou nulové).

Р С, Р ° Рє, РПР ° РјРѕРЅР ° РґРѕР ± СЏС, СЃСЏ:

- Linuxový obraz s vestavěnou 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)
— Active Directory Server
- Ve skutečnosti Cisco ASA (pro pohodlí používám ASDM)
- Jakýkoli softwarový token, který podporuje mechanismus TOTP (já například používám Google Authenticator, ale bude fungovat stejný FreeOTP)

Nebudu zabíhat do detailů rozkládání obrazu. Výsledkem je, že získáte Debian Linux s již nainstalovanými multiOTP a FreeRADIUS, nakonfigurovanými pro spolupráci a webovým rozhraním pro správu OTP.

Krok 1. Spustíme systém a nakonfigurujeme jej pro naši síť
Ve výchozím nastavení je systém dodáván s přihlašovacími údaji root root. Myslím, že každý tušil, že by bylo fajn po prvním přihlášení změnit heslo uživatele root. Musíte také změnit nastavení sítě (výchozí nastavení je '192.168.1.44' s bránou '192.168.1.1'). Poté můžete systém restartovat.

Vytvořte uživatele ve službě Active Directory Otp, s heslem MojeSuperPassword.

Krok 2. Nastavte připojení a importujte uživatele služby Active Directory
K tomu potřebujeme přístup ke konzoli a přímo k souboru multiotp.php, pomocí kterého nakonfigurujeme nastavení pro připojení k Active Directory.

Přejděte do adresáře /usr/local/bin/multiotp/ a spusťte následující příkazy jeden po druhém:

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

Určuje, zda je při zadávání jednorázového kódu PIN (0 nebo 1) vyžadován další (trvalý) PIN.

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

Určuje, zda je při zadávání jednorázového kódu PIN vyžadováno heslo domény (0 nebo 1)

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

Je zadán typ serveru LDAP (0 = normální server LDAP, v našem případě 1 = Active Directory)

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

Určuje formát, ve kterém má být reprezentováno uživatelské jméno (tato hodnota vypíše pouze uživatelské jméno bez domény)

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

Totéž, pouze pro skupinu

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

Určuje metodu pro určení, zda uživatel patří do skupiny

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

Zda použít zabezpečené připojení k serveru LDAP (ano, samozřejmě!)

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

Port pro připojení k serveru LDAP

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

Adresa vašeho serveru Active Directory

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

Určete, kde začít hledat uživatele v doméně

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

Zadejte uživatele, který má práva pro vyhledávání ve službě Active Directory

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

Zadejte heslo uživatele pro připojení ke službě Active Directory

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

Nastavení časového limitu pro připojení k Active Directory

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

Nastavte časový limit pro operaci importu uživatele

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

Aktivujte konfiguraci připojení Active Directory

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

Importujeme uživatele z Active Directory

Krok 3. Vygenerujte QR kód pro token
Všechno je zde extrémně jednoduché. Otevřete webové rozhraní OTP serveru v prohlížeči, přihlaste se (nezapomeňte změnit výchozí heslo pro administrátora!) a klikněte na tlačítko "Tisk":

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
Výsledkem této akce bude stránka obsahující dva QR kódy. První z nich (i přes atraktivní nápis Google Authenticator / Authenticator / 2 Steps Authenticator) směle ignorujeme a druhý kód opět směle naskenujeme do softwarového tokenu v telefonu:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
(ano, schválně jsem zpackal QR kód, aby byl nečitelný).

Po provedení těchto akcí ve vaší aplikaci bude každých třicet sekund vygenerováno šestimístné heslo.

Pro věrnost můžete ve stejném rozhraní zkontrolovat:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
Zadání uživatelského jména a jednorázového hesla z aplikace v telefonu. Máte pozitivní odezvu? Jdeme tedy dál.

Krok 4. Nakonfigurujte a otestujte FreeRADIUS
Jak jsem uvedl výše, multiOTP je již nakonfigurován pro spolupráci s FreeRADIUS, zbývá spustit testy a přidat informace o naší VPN bráně do konfiguračního souboru FreeRADIUS.

Vrátíme se do konzole serveru, do adresáře /usr/local/bin/multiotp/, zadejte:

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

Včetně tedy podrobnějšího protokolování.

V konfiguračním souboru klienta FreeRADIUS (/etc/freeradius/clinets.conf) okomentovat všechny řádky související s localhost a přidejte dva záznamy:

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

- na zkoušku

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

- pro naši bránu VPN.

Restartujte FreeRADIUS a zkuste se přihlásit:

radtest username 100110 localhost 1812 testing321

kde uživatelské jméno = uživatelské jméno, 100110 = heslo, které nám bylo přiděleno aplikací v telefonu, localhost = adresa serveru RADIUS, 1812 — port serveru RADIUS, test321 — heslo klienta serveru RADIUS (které jsme zadali v konfiguraci).

Výstup tohoto příkazu bude něco jako následující:

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

Nyní se musíme ujistit, že uživatel je úspěšně ověřen. Za tímto účelem se podíváme do protokolu samotného multiotp:

tail /var/log/multiotp/multiotp.log

A pokud 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

Pak už vše dobře dopadlo a můžeme vystupovat

Krok 5 Nakonfigurujte Cisco ASA
Dohodněme se, že již máme nakonfigurovanou skupinu a zásady pro přístup přes SLL VPN, nakonfigurovanou ve spojení s Active Directory, a pro tento profil potřebujeme přidat dvoufaktorovou autentizaci.

1. Přidat novou skupinu serverů AAA:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
2. Přidejte náš multiOTP server do skupiny:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
3. Pravidlo profil připojení, nastavení skupiny serverů Active Directory jako primárního ověřovacího serveru:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
4. V záložce Pokročilé -> Autentizace také vyberte skupinu serverů Active Directory:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
5. V záložce Pokročilé -> Sekundární autentizace vyberte vytvořenou skupinu serverů, ve které je registrován multiOTP server. Všimněte si, že uživatelské jméno relace je zděděno z primární skupiny serverů AAA:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
Použít nastavení a

Krok 6 je poslední
Zkontrolujte, zda pro nás funguje dvoufaktorová autentizace pro SLL VPN:

Přejděte na 2FA (dvoufaktorové ověření pro ASA SSL VPN)
Voila! Při připojení přes Cisco AnyConnect VPN Client bude také požadováno druhé jednorázové heslo.

Doufám, že tento článek někomu pomůže a že někomu dá podnět k zamyšlení, jak to můžete využít, volný OTP server pro jiné úkoly. Podělte se v komentářích, pokud chcete.

Zdroj: www.habr.com

Přidat komentář