Zone-Based Firewall a CBAC na Cisco IOS Jan Kvapil a Jan Gazda Abstrakt: Cílem tohoto dokumentu je popsat a ukázat možnosti CBAC a ZBFW na praktických příkladech. Klíčová slova: CBAC, Firewall, ZBFW, Zone-Based Firewall, Cisco
1 Teoretický úvod ..................................................................................................................... 2 1.1 Context-Based Access Control (CBAC) ........................................................................ 2 1.2 Zone-Based Firewall ...................................................................................................... 3 2 Praktická konfigurace ............................................................................................................ 4 2.1 Základní konfigurace ..................................................................................................... 4 2.2 Konfigurace CBAC ........................................................................................................ 4 2.3 Konfigurace ZBFW ....................................................................................................... 5 3 Ověření konfigurace .............................................................................................................. 6 4 Závěr ...................................................................................................................................... 7 5 Použitá literatura .................................................................................................................... 7 A Základní konfigurace ............................................................................................................ 8 B Screenshoty konfigurace ....................................................................................................... 9 C Running configuration ........................................................................................................ 12
duben 2015
1/17
1 Teoretický úvod S rozrůstající se propojeností počítačů po světě, se zvětšujícími se šítěmi a zvyšováním počtu uživatelů a dat v sítí přibyla také nutnost ochrany těchto dat před zákeřnými útoky. Jednou z prvních ochran proti škodlivému síťovému provozu byly tzv. paketové filtry. Ty pracují nejčastěji na prvních třech vrstvách OSI modelu. Nahlížejí do paketů hlavně na zdrojovou/cílovou adresu nebo na zdrojový/cílový port. A podle předem definovaných pravidel, buď paket pustí dále do sítě, nebo ho zahodí. Nevýhodou tohoto řešení je fakt, že se nikde neuchovává záznam o probíhajících spojeních procházejícíh skrz firewall. Typických zástupcem tohoto druhu firewallů jsou např. ACL (Access-control lists). Druhým vývojovým stuňěm firewallů byly tzv. stavové firewally – Stateful Firewall. Na Cisco zařízeních byla tato funkce nazvána jako Context-Based Access Control (CBAC).
1.1 Context-Based Access Control (CBAC) [4] Funkce CBAC CBAC poskytuje čtyři hlavní funkce: Filtrování provozu Kontrola provozu Detekce průniku Upozornění a audity Filtrování provozu Hlavní funkcí CBAC je inteligentní filtrování komunikace, hlavně pro TCP a UDP spojení. Na rozdíl od rozšířených ACL, které můžou filtrovat pouze na 3. a 4. vrstvě a RACLs, které můžete filtrovat na 5. vrstvě (relační), CBAC podporuje kontrolu aplikací, což znamená, že při filtrování může zkoumat obsah určitých druhů paketů. Například, to může zkoumat příkazy SMTP v SMTP spojení. Také mám možnost kontorolvat správy probíhajícího připojení za účelem zjištění jeho stavu. Kupříkladu FTP používá dva typy spojení, řídící a datové. Průzkumem řídícího spojení CBAC určí, že se právě vytváří datové připojení, a přidá si jej do tabulky stavů. CBAC podporuje i multimédia, jakožto i další aplikace, které mají tyto funkce. Může zkoumat Java applety a jejich HTTP spojení. Kontrola provozu Jak již bylo zmíněno CBAC má možnost nahlížet i do informací v aplikační vrstvě a použít je pro funkci stavového firewallu, to vše je možné i pro aplikace, které mají otevřené více spojení nebo pro spojení využívající PAT. Nejen, že tento proces dovoluje návrat paketů zpět do sítě, ale dává také možnost předcházet TCP SYN flood útokům. A to díky možnosti měření rychlosti vytváření nových spojení, kdy při překročení určité hranice toto spojení zakáže. Lze zajistit aby rozah seqvenčních čísel v TCP spojení spadal jen do vymezené hranice a ostatní podezdřelé pakety jsou zahozeny. Detekce průniku CBAC je schopen detekovat v provozu napříhlad známkz DoS útoku. Dále poskytuje ochranu před SMTP e-mail útoky, omezením příkazů které mohou být posláný na vnitřní e-mailové servery. Veškeré tyto informace o útoku mohou být logovány nebo může být spojení resetováno, případně lze zahazovat škodlivé pakety Upozornění a audity Další schopností CBAC je generování real-time upozornění a detekce útoků a dále možnost poskytnutí detailjního auditu pro daná spojení. Lze logovat všechna spojení včetně adres zdorjů a cílů, použitých portů, množství odeslaných bajtů, a čas uzavření a ukončení spojení.
duben 2015
2/17
1.2 Zone-Based Firewall [1] Další evolucí vznikl tzv. Zone-Based Firewall (ZBFW). Základní myšlenkou ZBFW je rozdělení sítě na zóny a definování vztahů mezi zónami. Příkladem může být rozdělení sítě na vnitřní zónu Trusted (firemní síť) a vnější zónu Untrusted (internet) (Obrázek 1).
Obrázek 1- Příklad ZBFW Tento model má za úkol zjednodušit, zpřehlednit a zvýšit flexibilitu řešní zabezpečení. Jednotlivá rozhraní směrovaů jsou přiřazená do tzv. "bezpečnostních zón", na které je potom aplikována politika pro kontrolu probíhajícího provozu. Implicitní nastavení zakazuje vešekerému provozu opustit svou bezpečnostní zónu dokud to není povoleno a nastaveno. Pravidla se nastavují pomocí jazyka Class-Based Policy Language (CPL). Vnitrozónové pravidla nabízí poměrnou flexibilitu díky níž mohou být inspekční pravidla aplikovány na jednolivá koncová zařízení, skupiny zařízení nebo podsítě připojené na konkrétní rozhraní. Jedno rozhraní může bžt členem pouze jedné bezpečnostní zóny, ale zóna může obsahovat více rozhraní. Jakmile se zařízení stane členem zóny, je všechen jeho provoz omezn pouze na ni, dokud to není explicitně nastaveno jinak. Pravidla jsou definována do tříd, podle provoz na který mají mít vliv, např.: prozkoumej, propusť, zahoď. Další parametry mohou být použity na jednotlivé druhy spojení: filtrování URL v HTTP provozu. Policy-maps jsou spojeny s dvojicemi zón a uplatněny na jeden směr provozu, z jedné zóny do druhé.
duben 2015
3/17
2 Praktická konfigurace V následujících kapitolách jsou uvedeny praktické konfigurace CBAC i ZBFW, oboje pro stejnou topologii (Obrázek 2). V příkladech je povolen protokol telnet a http/https.
Obrázek 2 - topologie
2.1 Základní konfigurace Základní konfigurace pro všechny směrovače v topologii je v příloze A na konci tohoto dokumentu.
2.2 Konfigurace CBAC Vytvoříme Acces list, který zakáže veškerý příchozí provoz: R2(config)# ip access-list 101 deny ip any any R2(config)# int s0/0/1 R2(config-if)# ip access-group 101 in Pomocí příkazu ip inspect definujeme, které protokoly chceme prověřit a případně povolit provoz. Nyní povolíme telnet: R2(config)# ip inspect name CBAC telnet A následně vytvořené pravidlo přiřadíme na rozhraní: R2(config)# int s0/0/1 R2(config-if)# ip inspect CBAC out Nyní chceme povolit http/https provoz mezi DMZ a internetem: R2(config)# ip inspect name CBACDMZ http R2(config)# ip inspect name CBACDMZ https A abychom nepřepsali naše předchozí pravidlo, definujeme toto nové jako inbound na rozhraní s0/1/0: R2(config-if)# int s0/1/0 R2(config-if)# ip inspect CBACDMZ in Touto konfigurací jsme dosáhli toho, že z internetu do naší sítě se nedostane žádný provoz, kromě toho, který patří už k navázaným spojením. To znamená, že jestliže počítač 192.168.10.100 se bude chtít pomocí telnetu připojit na router R3, komunikace bude povolena. Avšak jestliže někdo z internetu se bude chtít připojit telnetem k R1, provoz bude zakázán. Druhé dvě pravidla nám dovolí se z DMZ připojit pomocí protokolů http/https do internetu. Všechen ostatní provoz je zakázán. duben 2015
4/17
2.3 Konfigurace ZBFW V této kapitole provedeme obdobnou konfiguraci, ale za pomocí zone-based firwealu. Nejprve class-mapy, které nám později pomohou určit, co se kterým protokolem se má udělat – zahodit, prověřit,...: R2(config)#class-map type inspect match-any ICMP R2(config-cmap)#match protocol icmp R2(config)#class-map type inspect match-any TELNET R2(config-cmap)#match protocol telnet R2(config-cmap)#class-map type inspect match-any HTTP R2(config-cmap)#match protocol https R2(config-cmap)#match protocol http Dále vytvoříme policy-mapy. Tady využijeme naše class-mapy a buď povolíme nebo zakážeme jednotlivé protokoly: R2(config)#policy-map type inspect INSIDE_OUT R2(config-pmap)#class ICMP R2(config-pmap-c)#drop R2(config-pmap)#class TELNET R2(config-pmap-c)#inspect R2(config-pmap)#class HTTP R2(config-pmap-c)#drop R2(config)#policy-map type inspect OUTSIDE_IN R2(config-pmap)#class TELNET R2(config-pmap-c)#drop R2(config-pmap-c)#class ICMP R2(config-pmap-c)#drop R2(config-pmap)#class HTTP R2(config-pmap-c)#inspect R2(config)#policy-map type inspect DMZ_OUTSIDE R2(config-pmap)#class ICMP R2(config-pmap-c)#inspect R2(config-pmap-c)#class TELNET R2(config-pmap-c)#drop R2(config-pmap-c)#class HTTP R2(config-pmap-c)#inspect Také musíme vytvořit jednotlivé zóny a přiřadit je k jednotlivým rozhraním: R2(config)#zone security INSIDE R2(config)#zone security OUTSIDE R2(config)#zone security DMZ R2(config)#int s0/0/0 R2(config-if)#zone-member security INSIDE R2(config)#int s0/0/1 R2(config-if)#zone-member security OUTSIDE R2(config)#int s0/1/0 R2(config-if)#zone-member security DMZ A v poslední fázy je nutné vytvořit páry zón a k těm poté přiřadit policy-mapy: duben 2015
5/17
R2(config)#zone-pair security INSIDE_TO_OUT source INSIDE destination OUTSIDE R2(config-sec-zone-pair)#service-policy type inspect INSIDE_OUT R2(config)#zone-pair security OUTSIDE_TO_IN source OUTSIDE destination INSIDE R2(config-sec-zone-pair)#service-policy type inspect OUTSIDE_IN R2(config)#zone-pair security DMZ_TO_OUTSIDE source DMZ destination OUTSIDE R2(config-sec-zone-pair)#service-policy type inspect DMZ_OUTSIDE
3 Ověření konfigurace Po nastavení všech šíťových prvků jsme přikročili k ověřování konfogurace, kdy jsme pomocí programu Wireshark zachytili provoz mezi prdnotlivými směrovači.
Obrázek 3 – Wireshark: ping R1 -> R3
Obrázek 4 – Wireshark: Telnet R1 -> R3
Obrázek 5 – Konsole: R1 -> R3: ping + telnet
Obrázky 3 a 4 ukazují ověření konfigurace zone-based firewallu. Síťový provoz byl zachysen pomocí programu Wireshark na rozhraní s0/0/0 směrovače R2. Lze vidět, že při odeslání pingu na R3 sice projde Ping Echo Request, ale zpátky se již nevrátí žádná zpráva Ping Echo Reply (Obrízek 3). Na druhou stranu pokus o telnet spojení byl úspěšný (Obrázek 4). Na obrázku 5 lze pak vidět konsoli směrovače R1 při pokusech o odeslání pingu a telnetu.
duben 2015
6/17
4 Závěr Cílem projektu bylo porovnat možnosti CBAC a ZBFW a ukázat jejich možnosti. Obě technologie spadají pod stavové firewally a tudíž jsou schopné inspekce paketů a také uchování záznamů o provozu v síti. V praktické konfiguraci jsme si ukázali, jak pomocí obou mechanismů zakázat a povolit určitý provoz (určité protokoly). U CBAC je konfigurace poměrně jednoduchá a rychlá. Ale bohužel může dojít ke komplikacím v případě, že je nutné přidat další pravidla pro další částí sítě. Na druhou stranu Zone-Based Firewally nabízí o něco zdlouhavější konfiguraci, ale o dost přehlednější. Pozdější úpravy nebo přidávání dalších bezpečnostních pravidel je daleko více pohodlnější, než právě u CBACu. Je to dáno tím, že u ZBFW je síť rozdělena na zóny a bezpečnostní pravidla se vytváří přímo mezi dvojicemi zón. U Context-Based Access Control se určuje přímo na určitém rozhraní, zda ten či onen protokol bude povolen v určitém směru. Celý projekt byl realizován na Vysoké škole Báňské – Technické univerzitě Ostrava v laboratoři počítačových sítí N211. Použité zařízení byly směrovače od společnosti Cisco modelové řad 2800. Na směrovači R2 byla verze systému12.4(22)T, která podporuje jak CBAC, tak i ZBFW. Na ostatních směrovačích byla starší verze systému, které zmíněné funkce sice nepodporuje, avšak to ani nebylo třeba.
5 Použitá literatura [1]
WATKINS, Michael a Kevin WALLACE. CCNA security official exam certification guide. Indianapolis, IN: Cisco Press, c2008, xxxv, 637 p. ISBN 1587202204.
[2]
Traffic security. Ccie4all [online]. 2013 [cit. 2015-05-04]. https://ccie4all.wordpress.com/2013/05/05/traffic-security-aclcbaczbf/
Dostupné
z:
[3]
Stateful Firewall. Wikipedia [online]. http://en.wikipedia.org/wiki/Stateful_firewall
Dostupné
z:
[4]
CBAC Functions. Http://etutorials.org/ [online]. 2011 [cit. 2015-06-10]. Dostupné z: http://etutorials.org/Networking/Router+firewall+security/Part+IV+Stateful+and+Advanced+Filtering +Technologies/Chapter+9.+Context-Based+Access+Control/CBAC+Functions/
duben 2015
2015
[cit.
2015-05-04].
7/17
A Základní konfogurace R1: R1(config)# int s0/0/0 R1(config-if)# ip add 192.168.12.1 255.255.255.0 R1(config-if)# no shut R1(config)# ip router ospf 1 R1(config-router)#network 192.168.10.0 0.0.0.255 area 0 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0 R4: R4(config)# int fa0/0 R4(config-if)# ip add 192.168.20.1 255.255.255.0 R4(config-if)# no shut R4(config)# int s0/0/0 R4(config-if)# ip add 192.168.24.4 255.255.255.0 R4(config-if)# no shut R4(config)# ip router ospf 1 R4(config-router)#network 192.168.20.0 0.0.0.255 area 0 R4(config-router)#network 192.168.24.0 0.0.0.255 area 0 R3: R3(config)# int s0/0/0 R3(config-if)# ip add 10.10.23.3 255.255.255.0 R3(config-if)# no shut R2: R2(config)#ip route 0.0.0.0 0.0.0.0 10.10.23.3 R2(config)# int s0/0/0 R2(config-if)# ip add 192.168.12.2 255.255.255.0 R2(config-if)# clockrate 128000 R2(config-if)# no shut R2(config)# int s0/0/1 R2(config-if)# ip add 192.168.23.2 255.255.255.0 R2(config-if)# clockrate 128000 R2(config-if)# no shut R2(config)# int s0/1/0 R2(config-if)# ip add 192.168.24.2 255.255.255.0 R2(config-if)# clockrate 128000 R2(config-if)# no shut R2(config)# ip router ospf 1 R2(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config-router)#network 192.168.24.0 0.0.0.255 area 0 R2(config-router)#default-info originate
duben 2015
8/17
B Screenshoty konfigurace
Obrázek 6 – ukázka konfigurace CBAC
Obrázek 7 – ověření CBAC z R1
Obrázek 8 – ověření konfiguraceCBAC z R3
duben 2015
9/17
Obrázek 9 – konfigurace ZBFW na R2 – definované dvojice zón
Obrázek 10 – konfigurace ZBFW na R2 – Policy-Mapy
Obrázek 11 – konfigurace ZBFW na R2 – rozhraní přiřazené k zónám
duben 2015
10/17
Obrázek 12 – Zahození icmp paketu na R2
Obrázek 13 – výpis show version na R2
duben 2015
11/17
C Running configuration a. R2 - CBAC Current configuration : 1318 bytes ! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R2 ! boot-start-marker boot-end-marker ! ! no aaa new-model ! resource policy ! mmi polling-interval 60 no mmi auto-configure no mmi pvc mmi snmp-timeout 180 ip subnet-zero ip cef ! ! no ip dhcp use vrf connected ! ! no ip domain lookup ip inspect name CBAC telnet ip inspect name CBACDMZ http ip inspect name CBACDMZ https no ip ips deny-action ips-interface ! ! interface FastEthernet0/0 no ip address shutdown duplex auto speed auto ! interface FastEthernet0/1 ip address 10.10.23.2 255.255.255.0 ip access-group 101 in ip inspect CBAC out duplex auto speed auto ! interface Serial0/1/0 ip address 192.168.12.2 255.255.255.0 no fair-queue ! interface Serial0/1/1 ip address 192.168.24.2 255.255.255.0 ip inspect CBACDMZ in ! router ospf 1 log-adjacency-changes network 192.168.12.0 0.0.0.255 area 0 network 192.168.24.0 0.0.0.255 area 0 default-information originate ! ip classless ip route 0.0.0.0 0.0.0.0 10.10.23.3 ! ! ip http server no ip http secure-server ! access-list 101 deny ip any any ! ! !
duben 2015
12/17
! control-plane ! ! line con 0 exec-timeout 0 0 logging synchronous line aux 0 line vty 0 4 login ! end
b. R2 ZBFW: Current configuration : 2519 bytes ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R2 ! boot-start-marker boot system flash c2801-advipservicesk9-mz.124-22.T.bin boot-end-marker ! logging message-counter syslog ! no aaa new-model dot11 syslog ip source-route ! ! ip cef no ip domain lookup ip inspect log drop-pkt no ipv6 cef ! multilink bundle-name authenticated ! ! parameter-map type inspect global ! ! voice-card 0 ! ! archive log config hidekeys ! ! class-map type inspect match-any TELNET match protocol telnet class-map type inspect match-any ICMP match protocol icmp class-map type inspect match-any HTTP match protocol http match protocol https ! ! policy-map type inspect INSIDE_OUT class type inspect ICMP drop log class type inspect TELNET class type inspect HTTP drop class class-default drop policy-map type inspect OUTSIDE_IN class type inspect TELNET drop class type inspect ICMP
duben 2015
13/17
drop class type inspect HTTP drop class class-default drop policy-map type inspect DMZ_OUTSIDE class type inspect ICMP inspect class type inspect HTTP inspect class type inspect TELNET drop class class-default drop ! zone security INSIDE zone security OUTSIDE zone security DMZ zone-pair security INSIDE_TO_OUT source INSIDE destination OUTSIDE service-policy type inspect INSIDE_OUT zone-pair security OUTSIDE_TO_IN source OUTSIDE destination INSIDE service-policy type inspect OUTSIDE_IN zone-pair security DMZ_TO_OUTSIDE source DMZ destination OUTSIDE service-policy type inspect DMZ_OUTSIDE ! ! interface FastEthernet0/0 ip address 192.168.12.2 255.255.255.0 zone-member security INSIDE duplex auto speed auto ! interface FastEthernet0/1 ip address 10.10.23.2 255.255.255.0 zone-member security OUTSIDE duplex auto speed auto ! interface Serial0/1/0 no ip address no fair-queue clock rate 125000 ! interface Serial0/1/1 ip address 192.168.24.2 255.255.255.0 zone-member security DMZ ! router ospf 1 log-adjacency-changes network 192.168.12.0 0.0.0.255 area 0 network 192.168.24.0 0.0.0.255 area 0 default-information originate ! ip forward-protocol nd ip route 0.0.0.0 0.0.0.0 10.10.23.3 ip http server no ip http secure-server ! ! control-plane ! ! ccm-manager fax protocol cisco ! mgcp fax t38 ecm ! ! line con 0 exec-timeout 0 0 logging synchronous line aux 0 line vty 0 4 login ! scheduler allocate 20000 1000 end
duben 2015
14/17
c. R3: Current configuration : 1070 bytes ! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R3 ! boot-start-marker boot-end-marker ! ! no aaa new-model ! resource policy ! mmi polling-interval 60 no mmi auto-configure no mmi pvc mmi snmp-timeout 180 ip subnet-zero ip cef ! ! no ip dhcp use vrf connected ! ! no ip domain lookup no ip ips deny-action ips-interface ! ! interface FastEthernet0/0 no ip address shutdown duplex auto speed auto ! interface FastEthernet0/1 ip address 10.10.23.3 255.255.255.0 duplex auto speed auto ! interface Serial0/1/0 no ip address shutdown no fair-queue clock rate 125000 ! interface Serial0/1/1 no ip address shutdown clock rate 125000 ! router ospf 1 log-adjacency-changes ! ip classless ip route 0.0.0.0 0.0.0.0 10.10.23.2 ! ! ip http server no ip http secure-server ! ! control-plane ! ! line con 0 exec-timeout 0 0 logging synchronous line aux 0 line vty 0 4 password cisco
duben 2015
15/17
login transport input telnet ! end
d. R4: Current configuration : 1459 bytes ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R4 ! boot-start-marker boot system flash:c2801-advipservicesk9-mz.124-22.T.bin boot-end-marker ! logging message-counter syslog ! no aaa new-model dot11 syslog ip source-route ! ! ip cef no ip domain lookup no ipv6 cef ! multilink bundle-name authenticated ! ! voice-card 0 ! ! archive log config hidekeys ! ! interface Loopback0 ip address 192.168.20.1 255.255.255.0 ip ospf network point-to-point ! interface FastEthernet0/0 no ip address shutdown duplex auto speed auto ! interface FastEthernet0/1 no ip address shutdown duplex auto speed auto ! interface Serial0/1/0 ip address 192.168.24.4 255.255.255.0 no fair-queue clock rate 128000 ! interface Serial0/1/1 no ip address shutdown clock rate 125000 ! interface Serial0/2/0 no ip address shutdown clock rate 125000 ! interface Serial0/2/1 no ip address
duben 2015
16/17
shutdown clock rate 125000 ! router ospf 1 log-adjacency-changes network 192.168.20.0 0.0.0.255 area 0 network 192.168.24.0 0.0.0.255 area 0 ! ip forward-protocol nd ip http server no ip http secure-server ! ! control-plane ! ! ccm-manager fax protocol cisco ! mgcp fax t38 ecm ! ! line con 0 exec-timeout 0 0 logging synchronous line aux 0 line vty 0 4 login ! scheduler allocate 20000 1000 end
duben 2015
17/17