www.SAMURAJ-cz.com 

01.05.2024 Svátek práce Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

VPN 8 - Dvou-faktorová autentizace s certifikátem

Úterý, 25.03.2014 10:54 | Samuraj - Petr Bouška |
Cisco ASA nabízí řadu možných způsobů autentizace klienta, který se připojuje do VPN. Nejčastěji se využívá autentizace uživatele pomocí jména a hesla vůči různým zdrojům (lokálně, LDAP, RADIUS). Můžeme použít i dvou fázovou autentizaci (Double Authentication), kdy se uživatel ověřuje vůči dvěma různým zdrojům. Také můžeme provést autentizaci pomocí certifikátu a kombinovat do více faktorové autentizace. V článku se nejprve podíváme na trochu teorie a v druhé polovině se budeme věnovat autentizaci certifikátem a zároveň jménem a heslem.

Řada informací k tomuto tématu se nachází v dokumentaci Cisco AnyConnect Secure Mobility Client Administrator Guide, Release 3.1.

Termíny okolo autentizace

Velmi stručný a spíše lidový popis několik termínů.

  • Autentizace (Authentication) - ověření, jde o potvrzení, že osoba je ta, za kterou se vydává.
  • Autorizace (Authorization) - oprávnění, jde o ověření, že osoba má oprávnění provést o co se snaží.
  • Účtování (Accounting) - logování, zaznamenávání aktivit uživatele.

Tři výše uvedené termíny se využívají dohromady a mluvíme o AAA metodách nebo serverech.

O více-faktorovou autentizaci (multiple-factor authentication) se jedná, pokud při ověřování využijeme více než jeden faktor. Jako faktory bereme tři kategorie: něco co znám (heslo, PIN), něco co vlastním (certifikát, čipová karta), něco co jsem (otisk prstu). Takže dvou-faktorová autentizace (two-factor authentication) je třeba čipová karta s certifikátem, kde musím použít PIN, nebo certifikát a uživatelské jméno s heslem.

Cisco ASA - AAA Server Groups

Běžné nastavení autentizace jsme si popsali v předchozích dílech. Pro většinu situací musíme vytvořit Configuration > Remote Access VPN > AAA/Local Users > AAA Server Groups a tu pak přiřazujeme k profilu v nastavení daného Connection Profile.

Autentizace

Pro autentizaci můžeme využít řadu různých metod (AAA serverů):

  • Local - lokální DB uživatelů na ASA, uživatele můžeme spravovat v Configuration > Remote Access VPN > AAA/Local Users > Local Users
  • RADIUS - Remote Authentication Dial In User Service, podpora Cisco ACS a ISE, RSA RADIUS, Microsoft IAS a NPS
  • TACACS+ - Terminal Access Controller Access-Control System Plus
  • SDI - RSA SecureID - autentizační token, který generuje krátkodobě platné heslo
  • NT - NTLM Version 1 - velice stará a nedoporučovaná metoda
  • Kerberos - podpora šifrování 3DES, DES, RC4
  • LDAP - podpora LDAPv3 řady výrobců včetně Microsoft Active Directory, defaultně se autentizační údaje odesílají na LDAP server v čistém textu, ale je možno nastavit SASL protokol (Digest-MD5 nebo Kerberos) nebo využít LDAPS
  • HTTP Form - HTTP Forms Authentication for Clientless SSL VPN
Cisco AAA Server Groups - autentizační metody

Asi nejuniverzálnější a s nejvíce možnostmi je RADIUS. Všechny služby mají určitá omezení (co se týče podporovaných algoritmů, výrobců serverů, apod.). Vše je popsáno v dokumentaci Configuring AAA Servers and the Local Database.

Autorizace

Pro autorizaci můžeme použít pouze RADIUS nebo LDAP. U serveru RADIUS jde o využití RADIUS Authorization Attributes, které se předávají na ASA. Například pomocí atributu 25 můžeme uživateli přiřadit jméno Group Policy. Seznam atributů je v článku ASA RADIUS Authorization Attributes. Při použití LDAP serveru (třeba AD DS) provedeme mapování LDAP atributů na Cisco ASA atributy (specific authorization attribute), provádí se v Configuration > Remote Access VPN > AAA/Local Users > LDAP Attribute Map. Tak můžeme třeba LDAP atribut Department mapovat na jméno Group Policy. Vytvořenou mapu ještě musíme přiřadit k určitému LDAP serveru v rámci AAA Server Groups. Více informací třeba v Supported Cisco Attributes for LDAP Authorization.

Využití certifikátů

Výjimku tvoří autentizace certifikátem, kterou ASA také podporuje. Pro tuto metodu se nevytváří žádná AAA Server Groups, ale nastavuje se přímo přepínačem Method: Certificate na Connection Profile. Abychom mohli certifikáty využít, tak musíme mít certifikační autoritu (CA). Většinou je nejjednodušší použít Microsoft CA v rámci domény. Ale pokud žádnou CA nemáme, tak můžeme provozovat přímo na ASA Configuration > Remote Access VPN > Certificate Management > Local Certificate Authority > CA Server. Popis The Local CA.

ASDM Connection Profile - Authentication Method

Certifikát autority (může jich být více), kterou chceme používat, musíme mít nastaven v Configuration > Access Remote VPN > Certificate Management > CA Certificates. Abychom mohli provozovat SSL VPN (což jsme popsali v předchozích dílech), tak musíme mít nastaven i Web Server certifikát pro ASA, přidáme jej v Configuration > Remote Access VPN > Certificate Management > Identity Certificates.

Když použijeme autentizaci certifikátem, tak můžeme využít možnost přiřadit Connection Profile podle nějaké položky v certifikátu. Nastavujeme v Configuration > Remote Access VPN > Advanced > Certificate to AnyConnect and Clientless SSL VPN Connection Profile Maps.

ASDM Certificate to AnyConnect and Clientless SSL VPN Connection Profi

Při autentizaci certifikátem mi připadá zvláštní hlavní princip chování (i když to samozřejmě má svůj logický význam). Všechny certifikáty, které jsou vydány autoritou nastavenou na ASA a jsou platné, jsou považovány za validní a jsme pomocí nich přihlášeni. Jaké typy certifikátů ASA akceptuje je popsáno níže. Na ASA nemůžeme určovat nějaké omezení certifikátů, nebo třeba vybrat pouze přesně dané certifikáty, pomocí kterých bude povoleno přihlášení. Pokud bychom měli jednu CA a chtěli vydávat speciální typ certifikátů lidem, kteří mají povolenu VPN, tak se nám stejně přihlásí i jiní lidé, kteří mají jiný typ certifikátu od stejné autority.

Jedna možnost, jak tuto situaci obejít, je pomocí mapování certifikátů na Connection Profile a vytvořit profil, který nepovolí přihlášení. Druhá možnost je využít autorizaci na RADIUS serveru. ASA sice nepodporuje autentizaci přes RADIUS s využitím certifikátu. Ale můžeme využít autentizaci certifikátem na ASA, z něho vzít přihlašovací jméno a provést autorizaci tímto jménem na RADIUS serveru. Pak povolíme přihlášení pouze vybraným uživatelům.

Existuje i určitá možnost řízení, ale je na straně klienta. Můžeme konfigurovat jaké certifikáty AnyConnect klient nabízí pro použití. Toto nastavení se provádí pomocí profilu klienta AnyConnect Client Profile (více tuto oblast popíšeme později). Tyto nastavení lze na klientovi obejít, takže na ně nemůžeme spoléhat.

Používané typy certifikátů

Když jsme používali starší IPsec VPN a Cisco VPN Client, tak jsme mohli v IKE fázi 1 provést autentizaci certifikátem počítače. Klient v nastavení nabízel všechny certifikáty (počítačové i uživatelské), ale pokud jsme nepoužili certifikát s Enhanced Key Usage hodnotou IP security tunnel termination (1.3.6.1.5.5.7.3.6). Tak nám přihlášení nefungovalo (pokud jsme nevypli kontrolu pro daný trustpoint).

Když vytváříme SSL VPN s autentizací pomocí certifikátů, tak je chování jiné, ale také hodně záleží na použitých typech (Key Usage) certifikátů. Serverový certifikát je nejjednodušší udělat jako klasický SSL certifikát (u MS šablona Web Server). V požadavcích je, že musí mít Key Usage atribut Digital Signature a Key Encipherment a Enhanced Key Usage atribut Server Authentication (1.3.6.1.5.5.7.3.1).

Stejně tak jsou kladené obdobné nároky na klientský certifikát. Defaultně musí mít Key Usage atribut Digital Signature a Key Encipherment a Enhanced Key Usage atribut Client Authentication (1.3.6.1.5.5.7.3.2). Certifikát může být jak uživatelský (a nacházet se v Current User Certificate Store) tak počítačový (Local Machine Certificate Store). Do úložiště local machine má ale přístup pouze uživatel s administrátorským oprávněním. Otestoval jsem třeba uživatelský certifikát ze šablony SmartCard Logon a počítačový z Workstation Authentication. Akceptované certifikáty můžeme měnit pomocí nastavení AnyConnect Client Profile - Certificate Matching.

Certifikáty jsou podporovány i pro počítače Mac a Linux, ale nesmí se nacházet na SmartCard. Pokud máme certifikát uložen na čipové kartě, tak musíme při autentizaci standardně zadat PIN.

AnyConnect Smartcard authentication

Přihlašování certifikátem probíhá tak, že se po volbě certifikátu nejprve kontroluje autorita, od které je tento certifikát vydán. Pokud je CA na ASA povolena (existuje TrustPoint), tak se kontroluje vlastní certifikát, u kterého se ověřuje Key usage a validita. V dalším kroku se hledá, jestli existuje mapování certifikátu na Connection Profile, pokud ano, tak se přiřadí tento profil.

Konfigurace dvou-faktorové autentizace na Cisco ASA

Vycházíme z následujících předpokladů:

  • máme externí CA a její certifikát jsme přidali mezi CA certifikáty na ASA
  • od CA jsme vydali certifikát pro ASA ve formátu PKCS #12 base64-encoded a nainstalovali na ASA
  • od CA jsme vydali certifikát pro klienta ve formátu PKCS #12
  • na ASA máme nakonfigurovánu SSL VPN

V dalších krocích nastavíme autentizaci tak, že se nejprve provede autentizace certifikátem a hned potom je uživatel dotázán na uživatelské jméno a heslo, které se ověřuje vůči RADIUS server (a potažmo Active Directory).

Configuration > Remote Access VPN > AAA/Local Users > AAA Server Groups

Připravíme si AAA Server Group pro autentizaci. Jako protokol zvolíme RADIUS a ponecháme defaultní hodnoty. Do skupiny přidáme RADIUS server, přes inside interface zadáme adresu MS Network Policy and Access Services (NPS) serveru a ponecháme defaultní porty nebo upravíme podle nastavení serveru.

Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Connection Profiles

Zvolíme editaci profilu, který využijeme pro připojení. V sekci Authentication nastavíme Method na Both a zvolíme vytvořenou AAA Server Group. Tím se použije jak autentizace certifikátem, tak pomocí AAA. Ve většině případů (popsáno v předchozích dílech - použití RADIUS s MS-CHAPv2, jinak neprojde autentizace a dostaneme Login failed.) se ještě přepneme na Advanced - General a zaškrtneme Enable password management.

Volitelně můžeme nastavit řadu dalších parametrů. Pokud by k tomu byl důvod, tak můžeme využít dvojitou autentizaci (Double Authentication). Na profilu se přepneme na Advanced - Secondary Authentication a zde nastavíme další AAA Server Group. V tomto případě se při přihlašování klientem zobrazí dvě políčka pro jméno a heslo.

Pro větší bezpečnost můžeme nastavit, že se uživatelské jméno bere z certifikátu a napevno se použije při autentizaci (uživatel jej nemůže měnit ani jej nemusí vidět). Na profilu se přepneme na Advanced - Authentication, v dolní části volíme, jaký údaj z certifikátu se má použít jako uživatelské jméno. K tomu můžeme zatrhnout Pre-fill-username from certificate. Nastavení údaje z certifikátu, který se použije jako username, je důležité také pro identifikaci uživatele v rámci session na ASA. Takže třeba pro SmartCard Logon certifikát změníme hodnotu na UPN, abychom dostávali přihlašovací jméno uživatele a ne jeho zobrazované jméno.

ASDM Profile - Pre-fill-username from certificate

Za zmínku ještě stojí jedna možnost nastavení. V situaci, kdy třeba použijeme autentizaci pouze certifikátem, ten nám nepředává žádné autorizační údaje. Tak můžeme nastavit zvlášť autorizaci vůči nějaké AAA Server Group (v úvahu přichází LDAP nebo RADIUS), i když vůči ní neprovádíme autentizaci. Nastavení se provádí v Advanced - Authorization.

Configuration > Remote Access VPN > Network (Client) Access > AnyConnect Client Profile

V nastavení profilu klienta můžeme určit parametry, podle kterých se vyhledává certifikát pro autentizaci. Samozřejmě je důležité, aby byl daný klientský profil přiřazen ke Group Policy, která se aplikuje na klienta.

V sekci Preferences (Part 1) nastavujeme Certificate Store, jestli se certifikáty na Windows hledají v uživatelském, počítačovém nebo obou úložištích. Také je zde volba Certificate Store Override, toto nastavení zajistí, že se prohledává počítačové úložiště, i když uživatel nemá administrátorská oprávnění.

V sekci Preferences (Part 2) můžeme nastavit volbu Disable Automatic Certificate Selection. Rozhoduje o tom, jestli se klientovi zobrazí seznam nalezených vhodných certifikátů, nebo se automaticky použije první z nich.

V sekci Certificate Matching můžeme omezovat (či jinak řečeno povolovat) certifikáty, které klient nabídne pro použití při autentizaci. Můžeme volit některé hodnoty Key Usage a Extended Key Usage, případně zadat libovolné OID (do Custom Extended Match Key). V části Distinguished Name můžeme nastavit filtry podle DNSubject nebo Issuer, například že OU == IT. Pro porovnání můžeme využít i různé masky.

ASDM Client Profile - Certificate Matching

Chyba v Certificate Matching

Při testování jsem narazil na zásadní chybu. Když jsem v pravidle DN použil znak s diakritikou. Profil se uložil do souboru jmeno-profilu.xml, ale následně již nešel otevřít v ASDM. Když jsem tento xml soubor zkusil otevřít v Internet Exploreru, tak psal chybu právě na českém znaku. Ale co je větší problém, když si tento profil stáhnul klient, tak hned při startu hlásil chybu. Jediné řešení bylo smazat soubor na disku c:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile\jmeno-profilu.xml.

Aplikace AnyConnect Client Profile

Pomocí profilu klienta můžeme nastavit a omezit řadu funkcí, které mají bezpečnostní dopad. Takže je důležité vědět, jak a kdy se profil aplikuje. Client Profile se přiřazuje pomocí Group Policy, v politice Advanced - AnyConnect Client - Client Profiles to Download. Politika se aplikuje až po přihlášení klienta, takže když uděláme nějakou změnu, tak teprve poté, co se klient úspěšně přihlásí, stáhne si nové nastavení a to začne být aktivní až pro další přihlášení.

Když nasazujeme klienta pomocí webu (přihlášení do Clientless VPN), tak se při instalaci klienta rovnou nainstaluje aktuální profil (údaje zná, protože již jsme do VPN přihlášeni). Takže již první přihlášení je relativně bezpečné.

Nevýhoda je, že profil je vlastně XML soubor, který se uloží na disk u klienta. A když člověk ví, kde se soubor nachází, tak ho může smazat nebo editovat a nastavit libovolné hodnoty. Takže se všechna nastavení v profilu nemohou brát jako bezpečná. Kde se profil ukládá je uvedeno v Locations to Deploy the AnyConnect Profiles.

Kontrola

Pro ověřování a hledání problémů můžeme použít všechny běžné možnosti. Prohlížet logy o průběhu přihlašování Monitoring > Logging > Real-Time Log Viewer, využít debug, prohlížet informace o aktuálních VPN spojeních Monitoring > VPN > VPN Statistics > Sessions, kde v Details vidíme řadu informací včetně způsobu autentizace.

Například v Sessions, a na dalších místech, se zobrazuje uživatelské jméno. Tam se bere údaj, kterým se uživatel autentizoval. V případě, že se přihlašujeme certifikátem, tak se použije nastavený atribut z certifikátu. Pokud se nenalezne, tak se uvádí jméno <Unknown>.

ASDM Monitoring Sessions

Troubleshooting - debug

Nasazoval jsem tento způsob autentizace na ASA 9.1(5)21 a nechtěla mi fungovat autentizace certifikátem počítače. Přitom uživatelský certifikát od stejné autority fungoval. Na klientovi ani na ASA se nelogovala jiná informace, než

No valid certificates available for authentication
Certificate validation failure

Nevím, co nakonec pomohlo, provedl jsem upgrade na poslední verzi ASA 9.1(7)12. Také jsem odinstaloval AnyConnect klienta a smazal jeho profil a všechna data (to v některých diskusích doporučují). Pak najednou autentizace fungovala (původně jsem ale zkoušel i z jiného PC, kde jsem nemazal profil).

Předtím jsem se snažil získat nějakou informaci, kde je chyba. Inspiroval jsem se článkem ASA AnyConnect Double Authentication with Certificate Validation, Mapping, and Pre-Fill Configuration Guide. Zde je popsán i debug, kdy se připojíme na CLI ASA pomocí SSH (nebo telnet či console) a zapneme ladění odpovídajících oblastí:

ASA#debug aaa authentication 
ASA#debug aaa authorization
ASA#debug webvpn 255
ASA#debug crypto ca 255

V článku jsou také ukázky výstupu ladících zpráv. Dost záhada mi připadá, kdy se ladící informace zobrazují, protože občas se krásně vypisovaly do SSH okna, občas pouze něco a kolikrát vůbec nic. Očividně má tento problém řada lidí, protože se to řeší v mnoha diskusích, ale nic mi nepomohlo. Někde se uvádí, že je potřeba se připojit přes konzoli nebo si zapnout logování do naší session.

ASA#terminal monitor

Hodit se může výpis zapnutého ladění nebo vypnutí všech ladících výstupů.

ASA#show debug 
ASA#undebug all

Další možnost je zobrazení informací o logování a jejich nastavení.

ASA#show logging
ASA(config)#logging monitor debugging
zobrazeno: 11956krát | Komentáře [1]

Autor:

Související články:

Cisco VPN - Virtual Private Network

Série článků, která začíná obecným popisem technologie VPN a rozebírá jednotlivé typy VPN. Dále se řeší různé konfigurace VPN na zařízeních Cisco, primárně na Cisco ASA.

VPN - Virtual Private Network

Série článků, která obsahuje obecný popis technologie VPN. Rozebírá jednotlivé typy VPN, jako je Site to Site VPN a Remote Access VPN. A popisuje konfigurace na různých zařízeních.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Ivo Hlavaty

    Zdravim,

    pridavam 3. moznost, jak nastavit prihlasovani certifikatem pouze pro urcite osoby. Je to sice pracnejsi, ale je mozne nahrat kazdy uzivatelsky certifikat do Configuration->Certificate Managment->CA Certificates, tedy uzivatelsky certifikat se bude tvarit jako certifikat Certifikacni autority. Potom je jistota, ze se nezadouci osoby skutecne neautentizuji a ne jen, ze dostanou prirazeny profil, ktery "nefunguje", jak bylo navrzeno v clanku.

    Jinak supr clanek, diky za nej.

    Úterý, 01.04.2014 16:07 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách