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":
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:
(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:
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:
2. Přidejte náš multiOTP server do skupiny:
3. Pravidlo profil připojení, nastavení skupiny serverů Active Directory jako primárního ověřovacího serveru:
4. V záložce Pokročilé -> Autentizace také vyberte skupinu serverů Active Directory:
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:
Použít nastavení a
Krok 6 je poslední
Zkontrolujte, zda pro nás funguje dvoufaktorová autentizace pro SLL 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