Možnosti Web-based autentizace na Cisco Catalyst 3560 Filip Zatloukal, Login: ZAT108 Pavel Kovář, Login: KOV452 Abstrakt: Tato práce popisuje možnosti Web-based autentizace na zařízení Cisco Catalyst 3560 včetně praktického ověření funkčnosti. Klíčová slova: Cisco, web-auth, Catalyst 3560, Radius 1 Úvod...............................................................................................................................2 1.1 Radius.....................................................................................................................2 1.2 Požadovaný scénář..................................................................................................2 1.3 Princip funkce.........................................................................................................2 2 Realizace.........................................................................................................................3 2.1 Příprava...................................................................................................................3 2.2 Konfigurace přepínače Cisco Catalyst 3560...........................................................3 2.3 Konfigurace FreeRadius serveru.............................................................................4 2.3.1 radiusd.conf.....................................................................................................4 2.3.2 clients.conf .....................................................................................................4 2.3.3 users.................................................................................................................4 3 Ověření funkčnosti.........................................................................................................5 3.1 Test neúspěšného přihlášení....................................................................................5 3.2 Test úspěšného přihlášení........................................................................................6 4 Hodnocení.......................................................................................................................7 4.1 Možnosti rozšíření..................................................................................................7 4.2 Závěr.......................................................................................................................7 5 Použitá literatura.............................................................................................................8
duben 2014
1/8
1 Úvod Cílem projektu je nastavit a otestovat možnosti webové autentizace na přepínači Cisco Catalyst 3560. Web autentizace je bezpečnostní prostředek zamezující síťovou komunikaci do doby, než se klient přihlásí pod uživatelským jménem a heslem přes webový prohlížeč. V praxi se s tímto přístupem často setkáváme většinou na veřejných místech jako jsou hotely, restaurace, knihovny či jiné. Využití nalezneme i v komerční prostředí, kdy takto můžeme ochránit přístup do firemní sítě pro hosty či umožnit veřejnosti přístup k internetu po zaplacení poplatku.
1.1 Radius Důležitým prvkem je v naší topologii radius server. Ten odpovídá na požadavky klienta, s kterým komunikuje pomocí AAA(authentication, authorization and accounting) protokolu. Významnou vlastností serveru je jeho bezpečná komunikace, jelikož transakce jsou autentizovány pomocí sdíleného klíče, který je přednastavený a není po síti zasílán. Samotné autorizační údaje jsou přenášeny šifrovaně. V našem projektu se budeme zabývat implementací serveru FreeRadius. Jedná se o server běžící na Unixových systémech licencovaný pod GPLv2. Tato implementace umožňuje využít mnoho autentizačních metod: PAP, CHAP, MS-CHAP, MS-CHAPv2, SIP Digest a všechny časté EAP metody [1].
1.2 Požadovaný scénář Požadovaná situace by měla vypadat takto: připojí-li se nový uživatel do naší sítě, obdrží IP adresu a další směrovací informace od DHCP serveru. Jeho připojení bude ovšem omezené – nemůže komunikovat s žádnou jinou stanicí, nebude přístupna žádná služba krom DHCP, DNS a HTTP(S). Můžeme přidat také ICMP, či jiné nezbytně nutné. Při pokusu klienta navázat spojení s jakoukoliv webovou stránku mu bude podvrhnuta přihlašovací stránka běžící na našem přepínači či jiném webovém serveru. Do úspěšného přihlášení nebude moci klient komunikovat s jinými službami než výše jmenovanými.
1.3 Princip funkce Po instalaci radius serveru nastavíme potřebné komunikační informace, uživatele a možnosti AAA protokolu - především komunikační klíč. Na přepínači vytvoříme AAA model a přiřadíme zabezpečení na požadované porty. Nesmíme zapomenout zapnout náš webový server. V této fázi se klient připojí a všechny jeho webové požadavky budou směrovány na naši přihlašovací stránku. Ovšem veškerý jiný provoz poběží beze změny a klient bude moci využít jiných služeb. Musíme tedy na přepínači nastavit ACL pravidla, která veškerý nechtěný provoz zakáží. Tento provoz povolíme až těm klientům, kteří se úspěšně přihlásí. Můžeme například zvolit postup, kdy vytvoříme další ACL pravidlo, kterým provoz povolíme. Pak nastavíme aplikaci toho ACL pravidla po úspěšném přihlášení klienta. Uživatel vyplní své přihlašovací údaje přes podvrhnutou stránku, údaje se předají přepínači, který vytvoří dotaz na radius server. Dotaz se zabezpečeně odešle radius serveru a ten vrátí odpověď, zda-li je uživatel oprávněn vstoupit či ne. V případě úspěchu se vytvoří relace a uživatel může po tuto dobu využívat síť. Je-li však vícekrát chybně vyplněno přihlášení, je možnost přihlášení na předdefinovanou dobu zakázána.
duben 2014
2/8
2 Realizace 2.1 Příprava Ověření konfigurace jsme provedli na topologii, kterou znázorňuje obr.1 :
Obrázek 1: Zkušební topologie FreeRadius je možné nainstalovat přímo z balíčkového systému Linuxové distribuce (Linux Mint). Pro klienty jsme na přepínači vyhradili porty 20-24. Připojení radius serveru a linky do internetu je možné realizovat pomocí kterýchkoliv jiných portů. Přepínač řeší pouze řízení přístupu klientských stanic dále do sítě (internetu). Radius server bohužel musí být na stejné VLAN jako klienti. Přidělování IP adres klientům nebo DNS zajišťuje univerzitní síť, je ovšem potřeba vypnout na přepínači SPT (Spanning Tree Protocol) protokol a to ještě před jeho připojením do sítě.
2.2 Konfigurace přepínače Cisco Catalyst 3560 Konfigurace ACL 102, který se použije pro nepřihlášené klienty. Je povoleno pouze DHCP, aby klienti mohli IP adresu, DNS aby mohli zjistit IP adresu webových serverů a port 80 na které přepínač bude podvrhovat odpovědi serverů přihlašovací stránkou. access-list 102 permit tcp any any eq www access-list 102 permit tcp any any eq domain access-list 102 permit udp any any eq domain access-list 102 permit udp any any eq bootps Konfigurace ACL 100, který budou požívat klienti po přihlášení. Povolili jsme vše. access-list 100 permit ip any any access-list 100 permit icmp any any Konfigurace IP adresy přepínače. interface vlan 1 ip address 192.168.0.1 255.255.255.0 Konfigurace web-autentizace a ACL na klientských portech. ip admission name wAuth proxy http interface range fastEthernet 0/20-24 ip access-group 102 in ip admission wAuth
duben 2014
3/8
Spuštění periodické kontroly připojení Klientů. Přepínač toto řeší periodickým posíláním ARP dotazů. Díky této funkci klienti nemusí být připojeni přímo na porty přepínače. ip device tracking Konfigurace ověřování uživatelů přes Radius. aaa new-model aaa authentication login default group radius aaa authorization auth-proxy default group radius ip radius source-interface Vlan 1 (část „test username user1“ pouze slouží k ověření zdali je radius server dostupný. User1 nemusí být existující uživatelské jméno.) radius-server host 192.168.0.103 test username user1 („cisco“ je klíč Radius serveru) radius-server key cisco radius-server dead-criteria tries 2 Spuštění http serveru. ip http server Přepínač umožňuje použití i https serveru. Bez platného certifikátu ovšem klient místo potvrzení nebo zamítnutí přihlášení uvidí výstrahu prohlížeče na neověřený certifikát. Z tohoto důvodu jsme se jej rozhodli vypnout. no ip http secure-server
2.3 Konfigurace FreeRadius serveru Vyšli jsme z výchozí konfigurace serveru. Je nutné upravit tři konfigurační soubory v /etc/freeradius/.
2.3.1 radiusd.conf Přepínač se ve výchozím nastavení připojuje na Radius přes porty 1645 a 1646, kdežto FreeRadius běží v základní konfiguraci na portech 1812 a 1813. Rozhodli jsme se přizpůsobit se přepínači. V tomto souboru je třeba v sekci listen, kde je parametr type = auth upravit a odkomentovat řádek port = 1645. Za ní je další sekce listen tentokráte s parametrem type = acct. Zde nastavit port = 1646.
2.3.2 clients.conf Tento soubor jsme upravili do následující podoby: client 192.168.0.1/32 { secret = cisco shortname = test-client } Secret musí odpovídat klíči nastavenému ve přepínači, shortname může být cokoli.
2.3.3 users Tento soubor obsahuje jména a hesla Klientů a také číslo ACL který se jim nastaví po úspěšném přihlášení. usr1 Cleartext-Password := "p1" Cisco-AVPair += "ip:inacl=100" usr2 Cleartext-Password := "p2" Cisco-AVPair += "ip:inacl=100" duben 2014
4/8
3 Ověření funkčnosti Pro konfiguraci je dobré freeradius zastavit a spustit na popředí z příkazové řádky pomocí příkazu freeradius -fX. Freeradius bude takto do konzole vypisovat detailně všechny požadavky a odpovědi. Podobně na přepínači je možné zapnout výpisy komunikace s Radius serverem pomocí debug radius.
3.1 Test neúspěšného přihlášení Při neúspěšné ověření uživatele vypadá výstup freeradiusu takto: rad_recv: Access-Request packet from host 192.168.0.1 port 1645, id=4, length=80 User-Name = "usr1" User-Password = "badpassword" Service-Type = Outbound-User Message-Authenticator = 0x9e3686ae8a51b34c35e115f34bd73638 NAS-Port-Type = Async NAS-IP-Address = 192.168.0.1 # Executing section authorize from file /etc/freeradius/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No '@' in User-Name = "usr1", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] No EAP-Message, not doing EAP ++[eap] returns noop [files] users: Matched entry DEFAULT at line 2 [files] users: Matched entry usr1 at line 5 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop ++[pap] returns updated Found Auth-Type = PAP # Executing group from file /etc/freeradius/sites-enabled/default +- entering group PAP {...} [pap] login attempt with password "badpassword" [pap] Using clear text password "p1" [pap] Passwords don't match ++[pap] returns reject Failed to authenticate the user. Using Post-Auth-Type Reject # Executing group from file /etc/freeradius/sites-enabled/default +- entering group REJECT {...} [attr_filter.access_reject] expand: %{User-Name} -> usr1 attr_filter: Matched entry DEFAULT at line 11 ++[attr_filter.access_reject] returns updated Delaying reject of request 3 for 1 seconds Going to the next request Waking up in 0.9 seconds. Sending delayed reject for request 3 Sending Access-Reject of id 4 to 192.168.0.1 port 1645 Waking up in 4.9 seconds.
Z výpisu je patrné, že freeradius sice našel uživatele usr1 ale jeho správné heslo je p1 a nikoliv badpassword. RADIUS/ENCODE(00000012):Orig. component type = Auth Proxy RADIUS: AAA Unsupported Attr: service-type [344] 4 5 RADIUS: AAA Unsupported Attr: audit-session-id [819] 24 104984632 RADIUS/ENCODE(00000012): dropping service type, "radius-server attribute 6 on-for-login-auth" is off RADIUS(00000012): Config NAS IP: 192.168.0.1 RADIUS(00000012): Config NAS IPv6: ::
duben 2014
5/8
RADIUS/ENCODE(00000012): acct_session_id: 6 RADIUS(00000012): sending RADIUS(00000012): Sending a IPv4 Radius Packet RADIUS(00000012): Send Access-Request to 192.168.0.103:1645 id 1645/4,len 80 RADIUS: authenticator 63 74 5B 83 C5 7E 2D 20 - C9 D6 BB B0 7D 12 8B ED RADIUS: User-Name [1] 6 "usr1" RADIUS: User-Password [2] 18 * RADIUS: Service-Type [6] 6 Outbound [5] RADIUS: Message-Authenticato[80] 18 RADIUS: 9E 36 86 AE 8A 51 B3 4C 35 E1 15 F3 4B D7 36 38 [ 6QL5K68] RADIUS: NAS-Port-Type [61] 6 Async [0] RADIUS: NAS-IP-Address [4] 6 192.168.0.1 RADIUS(00000012): Started 5 sec timeout RADIUS: Received from id 1645/4 192.168.0.103:1645, Access-Reject, len 20 RADIUS: authenticator 63 11 D8 23 BD 69 BA BD - F9 21 AA F8 B9 C4 83 6F RADIUS(00000012): Received from id 1645/4
Přepínač taktéž vypisuje mimo jiné kam bude žádost posílat, uživatelské jméno, které ověřuje a také, že na odpověď bude v tomto případě čekat 5 sekund. Následně vypíše přijatou odpověď.
3.2 Test úspěšného přihlášení Výpis freeradiusu při ověření správných údajů (zkráceno): rad_recv: Access-Request packet from host 192.168.0.1 port 1645, id=5, length=80 User-Name = "usr1" User-Password = "p1" NAS-IP-Address = 192.168.0.1 # Executing section authorize from file /etc/freeradius/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok [files] users: Matched entry usr1 at line 5 ++[files] returns ok ++[pap] returns updated Found Auth-Type = PAP # Executing group from file /etc/freeradius/sites-enabled/default +- entering group PAP {...} [pap] login attempt with password "p1" [pap] Using clear text password "p1" [pap] User authenticated successfully ++[pap] returns ok # Executing section post-auth from file /etc/freeradius/sites-enabled/default +- entering group post-auth {...} ++[exec] returns noop Sending Access-Accept of id 5 to 192.168.0.1 port 1645 Cisco-AVPair += "ip:inacl=100" Finished request 4.
Radius našel uživatele usr1 a heslo p1 se shoduje se správným heslem. Radius tedy vygeneruje kladnou odpověď a přidá do ní informaci, že se má pro komunikaci tohoto uživatele použít ACL 100. Toto je zřejmé i z výpisu přepínače(také zkrácen): RADIUS/ENCODE(00000012):Orig. component type = Auth Proxy RADIUS(00000012): Config NAS IP: 192.168.0.1 RADIUS(00000012): Sending a IPv4 Radius Packet RADIUS(00000012): Send Access-Request to 192.168.0.103:1645 id 1645/5,len 80 RADIUS: User-Name [1] 6 "usr1" RADIUS: User-Password [2] 18 * RADIUS: NAS-IP-Address [4] 6 192.168.0.1 RADIUS(00000012): Started 5 sec timeout RADIUS: Received from id 1645/5 192.168.0.103:1645, Access-Accept, len 40 RADIUS: Cisco AVpair [1] 14 "ip:inacl=100"
duben 2014
6/8
4 Hodnocení 4.1 Možnosti rozšíření Možnosti rozšíření jsou v celku široké a záleží na nás, co přesně od systému očekávám. FreeRadius například můžeme napojit na databázový server, či LDAP a zde ukládat uživatelské údaje. S tímto přístupem pak můžeme snadno na systém napojit uživatelskou aplikaci, která nám umožní pohodlně přidávat a spravovat uživatele přes GUI. Můžeme také využít úprav přihlašovacích webových stránek z předdefinovaných, či vytvořit stránky vlastní. Dalším rozšířením, které jsme zde již popisovali, jsou tzv. stahovatelná ACL (DACL). Tyto záznamy ukládáme u uživatelského účtu a při dotazu si je přepínač stáhne spolu s odpovědí a vykoná tak předdefinovanou akci. Celý systém můžeme také nakonfigurovat pro převzetí sekundárním FreeRadius serverem v případě výpadku serveru hlavního. Dále jmenujme detailní nastavení zabezpečení, možnosti různých metod autentizace, parametry jako je počet neúspěšných pokusů a nastavení doby blokace, délka uživatelské relace a mnoho dalšího.
4.2 Závěr Podařilo se nám ověřit, že web-autentizace na prvku Cisco Catalyst 3560 funguje. Přepínač správně komunikuje s FreeRadius serverem a dokáže využít i pokročilejší možnosti jako jsou stahovatelná ACL. Testování proběhlo v pořádku na univerzitní sítí, kde jsme využili DHCP a DNS. Dostali jsme očekávané výsledky, kdy před přihlášením byly klientovi zamezeny všechny služby krom povolených. Klient po přihlášení dostal námi předvolené možnosti přístupu.
Obrázek 2: Nezdařené přihlášení Během testování jsme odhalili několik omezení: • Web-autentizace zatím nefunguje pod IPv6. Jak jsme se dočetli v dokumentaci [2], chyba není na naší straně, ale funkce není implementována. Pro využití funkce web-autentizace tedy nezbývá, než IPv6 pro přihlašujícího se uživatele vypnout. • FreeRadius server musí být na stejné VLAN jako klienti. • Určitým omezením může být v některých situacích také to, že databázi uživatelů nelze nakonfigurovat přímo na přepínači. Dalších možností konfigurace je zde mnoho. Záleží jen na potřebách a plánech provozovatele, jakým způsobem chce web-autentizaci využít. duben 2014
7/8
5 Použitá literatura [1] Authentication. In: freeradius [online]. 2014 [cit. 2014-04-23]. Dostupné z: http://freeradius.org/features/authentication.html [2] Cisco Wireless LAN Controller Configuration Guide, Release 7.4: Configuring Web Auth Proxy. Cisco [online]. 2013 [cit. 2014-04-23]. Dostupné z: http://www.cisco.com/c/en/us/td/docs/wireless/controller/74/configuration/guides/consolidated/b_cg74_CONSOLIDATED/b_cg74_CONSOLIDATED_chapter_01000 100.html [3] Basic Configuration Howto. In: Wiki.freeRADIUS [online]. 2012 [cit. 2014-04-23]. Dostupné z: http://wiki.freeradius.org/guide/Basic-configuration-HOWTO [4] Can I Specify an Existing ACL using a Radius AV Pair?. In: Serverfault [online]. 2009 [cit. 2014-0423]. Dostupné z: http://serverfault.com/questions/87934/can-i-specify-an-existing-acl-using-a-radius-av-pair
duben 2014
8/8