Cisco IOS 12 - IEEE 802.1x a pokročilejší funkce

Zdroj seriálu: https://www.samuraj-cz.com/serie/cisco-ios/
V minulém díle jste mohli nalézt popis protokolu IEEE 802.1x a jeho základní konfiguraci (pouze povolení přístupu uživatele k portu) jak na Cisco Switchi, tak na Microsoft IAS serveru (tedy RADIUSu) a Windows klientovi. Tento díl pokračuje dále a popisuje konfiguraci dalších zajímavých možností. Nejzajímavější je patrně možnost zařazovat port do určité VLANy podle autentizace uživatele a jeho zařazení ve skupině v AD nebo povolení přístupu (do určité části sítě) uživateli, který neprošel autentizací.

Přiřazování VLAN
Protokol 802.1x (ve spolupráci s Cisco switchem) nám dává možnost dynamicky zařazovat porty do VLAN podle autentizačních údajů. Takže pak nemusíme konfigurovat správnou VLANu pro každý port (ale přesto je třeba všechny porty zařadit do nějaké VLANy a dobře to rozmyslet) a uživatel získá svoji VLANu na různých místech a počítačích. To ale obecně funguje pouze, když používáme autentizaci uživatele a ne počítače.

Konfigurace v Cisco IOSu
Pokud máme protokol 802.1x správně nakonfigurovaný a chceme přidat podporu pro přiřazování VLAN z RADIUS serveru, použijeme následující příkaz. Ten zařídí, že se pro síťové služby (jako je i přiřazení VLANy) bude používat RADIUS autorizace.

SWITCH(config)#aaa authorization network default group radius
V případě, že RADIUS server nepošle VLAN (nebo je 802.1x vypnuto), tak se port zařadí do své přístupové VLANy (access VLAN, která je nastavena na portu).

Pozn.: Pokud by byla zaslána chybná (například neexistující) VLANa, tak ji switch odmítne.

Pokud potřebujeme řešit problémy či chceme sledovat, jak probíhá komunikace, tak můžeme použít příkaz debug a logovat určité operace, například:

SWITCH#debug dot1x events // logování dot1x událostí
SWITCH#show logging // zobrazení logu
Pozn.: Dot1x se nedá použít na trunk porty a dynamické porty.

Konfigurace na MS IAS (RADIUS) serveru
Opět vycházím z toho, že již máme nakonfigurované ověřování uživatelů. Abychom odeslali VLANu, tak musíme pouze přidat tři Vendor-specific atributy. To uděláme v naší Remote Access Policy na záložce Advanced.

Vendor-specific atributy na RADIUSu

Vendor-specific atributy na RADIUSu
Jedná se o následující atributy:

[64] Tunnel-Type = VLAN (type 13)
[65] Tunnel-Medium-Type = 802 (type 6)
[81] Tunnel-Private-Group-ID = VLAN name or VLAN ID
Výše uvedený postup zařídí, že všichni uživatelé/stanice (na které se uplatní tato Remote Access Policy) budou zařazeni do nastavené VLANy. To není příliš dynamické, protože v praxi chceme zařazovat různé uživatele do různých VLAN. Jedno z možných řešení je následující.

Nejprve potřebujeme mít v Active Directory vytvořeny skupiny pro každou VLANu a v nich zařazeny patřičné uživatele. Například když máme VLANy podle oddělení, tak skupinu pro oddělení.

Na RADIUS serveru pak musíme vytvořit Remote Access Policy pro každou VLANu. Většina parametrů bude (asi) stejná. Upravit musíme podmínky (conditions), podle kterých se přiřazuje politika k požadavku. Tam nastavíme podmínku na Windows-Groups a zadáme skupinu nebo skupiny z Active Directory, pro které se nastaví jedna VLANa. Potom nastavíme číslo VLANy na Advanced záložce politiky (jak bylo uvedeno výše).

Policy conditions pro VLAN

Policy conditions pro VLAN
Politiky se testují v pořadí odshora (číslo 1) dolů a ve chvíli, kdy dojde ke shodě, tak se politika použije. Takže můžeme nastavit několik politik pro různé speciální skupiny a na konec umístit obecnou politiku, která nastaví VLANu všem ostatním.

Různé politiky pro různé VLANy

Různé politiky pro různé VLANy
Problém s neobnovením adresy na klientovi
Občas může dojít k tomu, že se klient zařadí do správné VLANy, ale nedostane adresu od DHCP serveru. Tento problém se netýká jenom této kapitoly, častěji se vyskytuje třeba u zařazování do hostovské VLANy. Je to způsobeno různými timeouty. Když se klient začne připojovat do sítě, tak pošle DHCP požadavek a zároveň začne proces autentizace. Pokud autentizace trvá déle, než vyprší timeout na DHCP, tak klient nedostane správnou adresu. V případě Windows XP SP1 by měl klient po krátké době provést znovu vyjednání adresy.

Pokud klient nedostane adresu, tak většinou pomůže provedení příkazů pro získání adresy. To je, ale asi pouze pro testování, ostrý provoz bychom měli vyladit, aby fungoval.

ipconfig /release
ipconfig /renew
Podrobnější nastavení dot1x
Automatická re-autentizace
Standardně je tato funkce vypnuta, ale můžeme ji zapnout a potom switch po určité době provádí novou autentizaci klienta. Je řada situací, kdy je tato funkce vhodná, například když se nejprve ověří počítač, tak po přihlášení uživatele se provede reauntetizace. Na druhou stranu se pak reautentizace provádí pořád, což již nemusí být dobré.

Standardní čas pro reautentizaci je 3600 s.

SWITCH(config-if)#dot1x timeout reauth-period 4000 // nastavení času reautentizace na 4000 s
SWITCH(config-if)#dot1x reauthentication // zapnutí reautentizace na portu
Reautentizaci můžeme vyvolat i ručně na switchi

SWITCH#dot1x re-authenticate interface gigabitethernet0/1
Reset dot1x konfigurace portu
Pokud chceme resetovat dot1x nastavení portu na výchozí hodnoty, můžeme použít příkaz:

SWITCH(config-if)#dot1x default
Pozn.: Tímto se i vypne dot1x na portu, ale nesmaže se nastavení guest a restricted VLAN.

Host mode
Port, kde je zapnuté dot1x, může pracovat v jednom ze dvou módů:

Single host - pouze jeden klient může být připojen k portu.
Multiple host - více klientů může být připojeno k jednomu portu. V tomto případě se autentizací prvního klienta ověří celý port a ostatní mohou přistupovat.
Defaultně je mód single host, pokud chceme nastavit multiple

SWITCH(config-if)#dot1x host-mode multi-host
Různé timeouty
Pokud switch nemůže autentizovat klienta (například chyba v komunikaci, ale také když klient zadá špatné heslo), čeká zadanou dobu (standardně 60 s) a pak to zkusí znovu. Často se hodí tento čas zkrátit.

SWITCH(config-if)#dot1x timeout quiet-period 10
Switch odesílá požadavek na autentizační údaje (EAP-request/identity rámec) a následně čeká určitý čas (standardně 30 s) na odpověď, pokud ji nedostane, tak znovu odešle rámec s dotazem. V určitých speciálních případech můžeme tento interval (Switch-to-Client Retransmission Time) změnit.

SWITCH(config-if)#dot1x timeout tx-period 15
K tomu se váže také hodnota (Switch-to-Client Frame-Retransmission Number), kolikrát (standardně 2krát) switch odešle dotaz při neobdržení odpovědi.

SWITCH(config-if)#dot1x max-req 5
V případě, že používáme Guest VLANu a v této síti DHCP, tak může dojít k tomu, že autentizační proces a zařazení do Guest VLANy trvá déle, než vyprší timeout pro získání adresy z DHCP, proto se v tomto případě doporučuje překonfigurovat hodnoty quiet-period a tx-period. Přesná hodnota záleží na typu klienta, ale například:

SWITCH(config-if)#dot1x timeout quiet-period 3
SWITCH(config-if)#dot1x timeout tx-period 15
Accounting - účtování
Protokol 802.1x se stará o autentizaci (authentication - potvrzení, že uživatel je ten za koho se vydává) a autorizaci (authorization - řízení přístupu ke zdroji; zde je to například zařazení do VLANy). Funkce můžeme doplnit o účtování (accounting - jinak řečeno logování údajů), které nám uchovává informace o:

autentizaci uživatele
odlogování
link-down
re-autentizaci
Microsoft IAS nám automaticky (pokud povolíme v nastavení) ukládá do logu informace při autentizaci uživatele. Pro accounting se používá jiný port (standardně 1646 či 1813) než pro autentizaci a autorizaci (standardně 1645 či 1812). Informace o accountingu se zasílají na RADIUS server pomocí párů atribut a hodnota.

Na switchi můžeme použít jiný zápis pro definování RADIUSu, kde určíme porty pro jednotlivé služby (jinak se použijí defaultní).

SWITCH(config)#radius-server host 192.168.0.10 auth-port 1812 acct-port 1813 key 123456
Pro zasílání accounting informací okolo dot1x na RADIUS použijeme:

SWITCH(config)#aaa accounting dot1x default start-stop group radius
Pozn.: default je pro výchozí seznam (a běžné situace), group radius znamená, že se informace budou zasílat na všechny definované RADIUSy.

Accounting můžeme použít pro řadu údajů, které chceme sledovat a ukládat, takže pár příkladů z jiných oblastí.

Zasílání informací o restartu switche

SWITCH(config)#aaa accounting system default start-stop group radius
Zasílání informací o příhlášení uživatele ke switchi (do exec modu)

SWITCH(config)#aaa accounting exec default start-stop group radius
Zasílání informací o použití příkazů levelu 15

SWITCH(config)#aaa accounting commands 15 default start-stop group radius
Restricted VLAN
Často můžeme chtít, aby uživatel/počítač, který neprojde autentizací (například proto, že u nás nemá účet), byl přesto vpuštěn do nějaké části sítě. Standardně se port přepne do neautorizovaného stavu a blokuje komunikaci. Běžným příkladem je, když přijde nějaká návštěva a potřebuje se dostat na internet. My máme vytvořenu VLANu pro hosty a do ní je chceme automaticky zařadit. Pokud jejich OS podporuje protokol 802.1x, tak se po připojení bude dotazovat na autentizaci (pokud nemají nastaveno automatické vyplnění). A pokud máme nakonfigurovánu restricted VLAN, tak se při zadání špatných údajů (neověření klienta) přepne port do této VLANy.

SWITCH(config-if)#dot1x auth-fail vlan 40 // restricted VLAN je 40
SWITCH(config-if)#dot1x auth-fail max-attempts 1 // počet pokusů o autentizaci (1 až 3)
Pozn.: Pro restricted VLAN musí být port v single-host modu.

S restricted VLAN stejně jako guest VLAN můžeme narazit na nějaké problémy. Často pomůže snížení timeoutů, jak je uvedeno výše. Také se vyskytuje problém s přidělením adresy z DHCP, který je také popsán výše.

Guest VLAN
Podobná situace jako restricted VLAN je guest VLAN. Tu využijeme pro klienty, kteří nepodporují 802.1x (například, aby si stáhli klienta pro dot1x). Do guest VLANy klient zařazen, pokud nepodporuje protokol 802.1x (neodešle EAPOL paket ani neodpoví na EAP-request).

SWITCH(config-if)#dot1x guest-vlan 20
Ve starších verzích IOSu do verze 12.2(25)SEE se používalo upravené chování guest VLANy, které bylo v důsledku podobné restricted VLAN. Nejprve bylo třeba pro celý switch přepnout chování.

SWITCH(config)#dot1x guest-vlan supplicant
A následně se normálně konfigurovala guest VLAN pro porty a uplatnila se na neověřené klienty.

SWITCH(config-if)#dot1x guest-vlan 5
Kontrola a debug
Informace o 802.1x
SWITCH#show dot1x interface f0/1 // informace o 802.1x konfiguraci na portu
SWITCH#show dot1x all // informace o 802.1x ze všech portů, kde je zapnuto
SWITCH#show dot1x all details // kompletní informace o všech 802.1x portech
SWITCH#show dot1x all statistics // statistiky o použití 802.1x na portu
SWITCH#show dot1x all summary // stručné informace o stavu dot1x portů
Debugging 802.1x
U nasazování 802.1x asi jednoduše narazíme na různé problémy a potřebujeme vidět, co se na switchi děje. Proto je nejlepší použít debugování daných informací.

SWITCH#debug dot1x events // logování dot1x událostí
SWITCH#debug dot1x all // logování všeho okolo dot1x
SWITCH#show debugging // zobrazí na co je nastaven debug
SWITCH#undebug dot1x all // zruší debug všeho okolo 802.1x
SWITCH#show logging // zobrazí log
Informace o AAA a RADIUS
SWITCH# show radius statistics // statistiky z RADIUSu
SWITCH# show aaa servers // statistiky z AAA a napojení na RADIUS
SWITCH# show aaa method-lists all // seznam metod a které jsou použité
SWITCH# debug radius accounting // logování accounting informací posílaných na radius