15. Tűzfalak¶
A Cisco hálózati eszközeiben a hozzáférések kontrollja ún. ACL-ek (Access Control List) alapján kerülnek beállításra. Az ACL-eknek a Cisco terminológiájában két típusa létezik, ezek a normál és a kiterjesztett listák. A normál listák egyszerűbb szintaxissal írhatók le; ennek elsődleges oka a lehetőségek szűkebb tárháza: a normál listák csak a csomagok célhálózatának leírását tartalmazzák, így döntéseket is csak ezek alapján lehet hozni. A gyakorlatban a kiterjesztett listák használata lényegesen szélesebb szolgáltatás készletet nyújt, ezekben a cél cím és portszám mellett a forrás cím és portszám is megadható. A magasabb szintű paraméterezhetőség viszont értelemszerűen bonyolultabb konfigurációs parancsok megadását is igényli.
15.1. Normál ACL-ek¶
Az ACL-ek alkalmazását a gyakorlatban két lépésben végezzük. Először létrehozzuk a listát, majd azt később egy interfészhez rendeljük úgy, hogy meghatározzuk, hogy az abban foglalt szabályok a bejövő vagy a kimenő forgalomhoz tartoznak-e. Ebből az is következik, hogy amennyiben külön akarunk megkötéseket érvényesíteni a bejövő és kimenő forgalmat is, akkor két önálló listát kell majd készítenünk és a megfelelő interfészhez hozzárendelnünk.
Mivel több listát is készíthetünk, azokat meg kell különböztetnünk egymástól. Erre használhatunk egyszerű sorszámokat, vagy a funkcióikat leíró neveket. Fontos, hogy a normál ACL-ek sorszámai 0 és 99 közé kell, hogy essenek. Az előbbi módon kialakított listák neve sorszámozott míg az utóbbiaké nevesített.
A listák megadásában sajnos van egy kellemeten pont, a hálózat megadásakor nem a nagy nehezen megtanult alhálózati maszkot kell megadni, hanem annak inverzét, amihez sajnos még egy (ha nem is bonyolult) számítási műveletet meg kell tanulnunk. Lássunk néhány példát!
Készítsünk egy ACL-t, amely lehetővé teszi a 192.168.10.0-s hálózatba irányuló forgalmat! A beállításhoz rendeljünk hozzá egy leírást is a Engedelyezve a 192.168.10.0/24
szöveggel! A lista megadását konfigurációs módban, az access-list parancs megadásával kezdjük, amelyet a lista sorszáma követ. Ez után a permit vagy a deny kulcsszó következik annak függvényében, hogy a listában meghatározott hálózatok forgalmát engedélyezni vagy tiltani akarjuk. Végül a célhálózat megadása következik úgy, hogy abban az alhálózati maszk inverzét kell megadni, példánkban a 255.255.255.0
helyett a 0.0.0.255
-öt.
R1(config)# access-list 10 permit 192.168.10.0 0.0.0.255 remark Engedelyezve a 192.168.10.0/24
Az inverz netmaszk kiszámítása két módon is gyorsan elvégezhető. A bináris alak esetében egyszerűen meg kell fordítani a biteket, így a 11111111.11111111.11111111.00000000
inverze 00000000.00000000.00000000.11111111
lesz. A decimális alak esetén hasonlóan egyszerű metodika alkalmazható, a hagyományos netmaszk értékét ki kell vonni a 255.255.255.255-ből, ami így 0.0.0.255
lesz.
255.255.255.255
- 255.255.255. 0
-----------------
0. 0. 0.255
Ugyanebben a listában tiltsuk le a 192.168.10.5-ös gép elérését! A beállításban a lista száma változatlan marad, de a tiltás miatt most a permit helyett most deny-t kell használni. A hálózat címe most egyetlen hostot kell, hogy lefedjen, melynek netmaszkja a 255.255.255.255
lenne, az inverz megadási mód miatt így most 0.0.0.0
-t használunk:
R1(config)# access-list 10 deny 192.168.10.5 0.0.0.0 remark Tiltjuk a 192.168.10.5 elérését.
A gyakorlatban egyetlen cím megadására a host kulcsszó alkalmazásával egy egyszerűbb forma is alkalmazható, ekkor az egyetlen hostot leíró 0.0.0.0
leírása nem szükséges. Bár használata nélkülözhető. legalább olvasni tudnunk kell az ily módon megadott szabályokat is. A host kulcsszó használata esetén annak egyértelműsége miatt a leírások megadása nem lehetséges:
R1(config)# access-list 10 deny host 192.168.10.11
Az ACL-ek felépítésekor gyakran minden forgalmat tiltunk, és kivételként soroljuk fel azokat a forgalmakat, amelyeket engedélyezni szeretnénk. A router a megadott szabályokat sorba rendezi, előre helyezve a hostokra és hátrább sorolva az egyre nagyobb és nagyobb hálózatokra vonatkozókat. Az ACL-ek utolsó szabálya rendszerint egy „minden egyéb forgalom tiltása” tartalmú sor, melyet a default route-nél látott 0.0.0.0 0.0.0.0 írna le, de az ACL-ek esetében az inverz megadási mód miatt a 0.0.0.0 255.255.255.255
inverz netmaszkot kell használni:
R1(config)# access-list 10 deny 0.0.0.0 255.255.255.255 remark Minden mas forgalom tiltasa
Ennek is van rövid megadási módja, melyben az any kulcsszót használjuk (megjegyzések ebben az esetben sem használhatók):
R1(config)# access-list 10 deny any
15.2. ACL-ek alkalmazása¶
Az elkészített ACL-eket a router egyes interfészeihez kell rendelni és meg kell adni, hogy az abban foglalt szabályokat a bejövő vagy a kimenő csomagokra szeretnénk érvényesíteni. Az eddig kialakított listát alkalmazzuk az alábbi hálózat R1 routerén! A célunk az, hogy a 192.168.100.0/24
-es hálózat gépei el tudják érni a 192.168.200.5
-ös IP című webszervert úgy, hogy a 192.168.200.0/24
hálózat minden más gépe felé irányuló forgalmat tiltsunk (utóbbi a$ PC2 munkaállomás pingelésével ellenőrizhető).

ACL-ek alkalmazása a hálózatban¶
Készítsük el a router konfigurációját a fentiek alapján! Az eddigiek alapján készítsük el a szükséges ACL-t, és a 10-es sorban rendeljük hozzá a router 192.168.200.1
-es című interfész kimenő forgalmának szabályozásához:
Router> ena
Router# conf term
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# hostname R1
R1(config)# no ip domain-lookup
R1(config)# access-list 10 permit host 192.168.200.5
R1(config)# access-list 10 deny any
R1(config)# int g0/0/0
R1(config-if)# ip address 192.168.100.1 255.255.255.0
R1(config-if)# no sh
R1(config-if)# exit
R1(config)# int g0/0/1
R1(config-if)# ip address 192.168.200.1 255.255.255.0
R1(config-if)# ip access-group 10 out
R1(config-if)# no sh
R1(config-if)# end
A tűzfal beállításait a ping paranccsal ellenőrizhetjük, PC0-ról pingeljük meg a webszervert és PC2-t! Ha a konfigurációnk helyes, a webszerver pingelhető, tartalma a böngészőben elérhető, de a PC2-vel semmilyen hálózati kapcsolat nem működik.
C:\>ping 192.168.200.5
Pinging 192.168.200.5 with 32 bytes of data:
Reply from 192.168.200.5: bytes=32 time<1ms TTL=127
Reply from 192.168.200.5: bytes=32 time<1ms TTL=127
Ugyanakkor a 192.168.100.0/24
hálózatból nem érhető el a 200.0/24
-es hálózat egyetlen más gépe sem:
C:\>ping 192.168.200.11
Pinging 192.168.200.11 with 32 bytes of data:
Request timed out.
Request timed out.
Az ACL-ek listázásra két módszert is kínál a Cisco IOS. Az show access-lists megleníti az összes ACL-t és azok tartalmát úgy, hogy az egyes beállítások sorszáma is leolvasható:
R1# sh access-lists
Standard IP access list 10
10 permit host 192.168.200.5
20 deny any
A listák egyes elemei szüksége esetén törölhetők. Az alábbi példában a 10-es lista 1-es sorszámú szabályát töröljük:
R1(config)# ip access-list standard 10
R1(config-std-nacl)# no 10
R1(config-std-nacl)# end
R1# show access-lists
Standard IP access list 10
20 deny any
Természetesen az interfész hozzárendelések is törölhetők, ennek módja szinte azonos az hozzárendeléssel, a különbség a no kulcsszó alkalmazásában van:
R1(config)# int g0/0/0
R1(config-if)# no ip access-group 10 out
15.3. Nevesített listák¶
Az ACL-ek nem csak sorszámozottak, hanem nevesítettek is lehetnek, ekkor bár tartalmuk azonos, a megadásuk szintaxisa részben eltérő. Hozzuk létre az előző feladat 10-es ACL-jét úgy, hogy annak neve OUT-FILTER
legyen! Mivel még mindig csak standard listát készítünk, a leírásban ezt jelezni kell a standard kulcsszóval:
R1(config)# ip access-list standard OUT-FILTER
R1(config)# remark Csak a 200.5-os gep erheto el
R1(config)# permit host 192.168.200.5
R1(config)# remark Minden mas tiltasa
R1(config)# deny any
Rendeljük hozzá ezt a listát a router 192.168.200.1
-es interfészéhez!
R1(config)# int g0/0/0
R1(config-if)# ip address 192.168.100.1 255.255.255.0
R1(config-if)# ip access-group OUT-FILTER out
R1(config-if)# no sh
R1(config-if)# exit
A teljes konfigurációs beállítás ezzel az alábbi lesz:
Router> ena
Router# conf term
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# hostname R1
R1(config)# no ip domain-lookup
R1(config)# ip access-list standard OUT-FILTER
R1(config-std-nacl)# permit host 192.168.200.5
R1(config-std-nacl)# deny any
R1(config-std-nacl)# int g0/0/0
R1(config-if)# ip address 192.168.100.1 255.255.255.0
R1(config-if)# no sh
R1(config-if)# exit
R1(config)# int g0/0/1
R1(config-if)# ip address 192.168.200.1 255.255.255.0
R1(config-if)# ip access-group OUT-FILTER out
R1(config-if)# no sh
15.4. Kiterjesztett ACL¶
Ahogyan már említettem, a kiterjesztett listák alkalmazása sokkal részletesebb szabályok megadását teszi lehetővé, mert ezekben a forrás és a célhálózat mellett a forrás és a cél port is megadható. A kiterjesztett listákat csak nevesített formában fogjuk használni. A szabályok megadására lássunk néhány példát!
A
192.168.10.55
-ös IP című gép IP kapcsolatot létesíthet a192.168.200.11
géppel:permit ip host 192.168.10.55 host 192.168.200.11
A
192.168.10.55
-ös IP című gép nem létesíthet a 80-as porton keresztül kapcsolatot a192.168.200.11
géppel (a portszám és a protokoll neve is megadható):deny ip host 192.168.10.55 host 192.168.200.11 eq 80 deny ip host 192.168.10.55 host 192.168.200.11 eq www
A
192.168.10.0/24
hálózat gépei a 80-as porton keresztül elérhetik a192.168.200.0/24
hálózatban levő webszervereket:permit tcp 192.168.10.0 0.0.0.255 192.168.200.0 0.0.0.255 eq 80
Az icmp csomagok bárhová küldhetők:
permit icmp any any
UDP csomagon egyáltalán nem küldhetők:
deny udp any any
Gyakorlati példánkhoz használjuk most is az előző hálózatot, de a szabályaink most legyenek sokkal összetettebbek:
A
192.168.100.0/24
hálózatban bármelyik gép érje el a webszervert a80
-as porton!A
192.168.100.12
-es gép érje el a webszerver21
-es porton működő FTP szolgáltatást!Csak a
192.168.100.12
-es gép tudja pingelni a webszervert!Minden más, a
192.168.200.0/24
hálózatba irányuló forgalmat tiltsunk le, úgy, hogy PC0 tudja pingelni a PC2 gépet!
A megoldásban tehát kiterjesztett listát fogunk alkalmazni, amelynek megadása során az egyes szabályokat azok definiálása előtt a remark paranccsal dokumentáljuk is:
Router> ena
Router# conf term
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# hostname R1
R1(config)# no ip domain-lookup
R1(config)# ip access-list extended KIMENO
R1(config-ext-nacl)# remark 1-es szabaly: a webszervert minden gep eleri
R1(config-ext-nacl)# permit tcp 192.168.100.0 0.0.0.255 host 192.168.200.5 eq www
R1(config-ext-nacl)# remark 2-es szabaly: 100.12 tud ftp kapcsolatot letesiteni 200.5-tel
R1(config-ext-nacl)# permit tcp host 192.168.100.12 host 192.168.200.5 eq 21
R1(config-ext-nacl)# remark 3-as es 4-es szabalyok: ping kapcsolatok
R1(config-ext-nacl)# permit icmp host 192.168.100.12 host 192.168.200.5
R1(config-ext-nacl)# permit icmp host 192.168.100.11 host 192.168.200.11
R1(config-ext-nacl)# exit
R1(config)# int g0/0/0
R1(config-if)# ip address 192.168.100.1 255.255.255.0
R1(config-if)# no sh
R1(config-if)# exit
R1(config)# int g0/0/1
R1(config-if)# ip address 192.168.200.1 255.255.255.0
R1(config-if)# ip access-group KIMENO out
R1(config-if)# no sh
R1(config-if)# end
Ellenőrizzük a konfiguráció helyességét! Először listázzuk az ACL-eket! Ehhez használjuk a running-config kimenetét, amelyet szűrjünk a ip access-list szekcióra! (Használhatnánk a show access-lists parancsot is, az azonban a megjegyzéseinket nem jelenítené meg.)
R1# sh run | section ip access-list
ip access-list extended KIMENO
remark 1-es szabaly: a webszervert minden gep eleri
permit tcp 192.168.100.0 0.0.0.255 host 192.168.200.5 eq www
remark 2-es szabaly: 100.12 tud ftp kapcsolatot letesiteni 200.5-tel
permit tcp host 192.168.100.12 host 192.168.200.5 eq ftp
remark 3-as es 4-es szabalyok: ping kapcsolatok
permit icmp host 192.168.100.12 host 192.168.200.5
permit icmp host 192.168.100.11 host 192.168.200.11
Vegyük sorra a tűzfal szabályait! Ellenőrizzük a webszerver elérhetőségét mindkét gépről!

A web kapcsolat működik¶
Az FTP kapcsolat tesztelése parancssorból történik. A követelmény szerint a 192.168.200.5
-ös gépet csak a PC1-ről, azaz a 192.168.100.12
-es IP című gépről lehessen elérni. A tesztelést a parancssor ftp parancsával végezzük az alábbi példa alapján:
C:\>ftp 192.168.200.5
Trying to connect...192.168.200.5
Connected to 192.168.200.5
220- Welcome to PT Ftp server
Username:
PC0-ról viszont nem működik az ftp parancs, így az erre vonatkozó követelményt teljesítettük:
C:\>ftp 192.168.200.5
Trying to connect...192.168.200.5
%Error opening ftp://192.168.200.5/ (Timed out)
A harmadik, icmp csomagokra vonatkozó szabály tesztelése a már ismert ping paranccsal történik, a 192.168.100.11
-es gépről nem, a 192.168.100.12
-esről viszont működik a parancs:
C:\>ping 192.168.200.5
Pinging 192.168.200.5 with 32 bytes of data:
Reply from 192.168.100.1: Destination host unreachable.
C:\>ping 192.168.200.5
Pinging 192.168.200.5 with 32 bytes of data:
Reply from 192.168.200.5: bytes=32 time<1ms TTL=127
Végül ellenőrizzük az utolsó követelményt: csak PC0 tudja pingelni PC2-t:
C:\>ping 192.168.200.11
Pinging 192.168.200.11 with 32 bytes of data:
Reply from 192.168.200.11: bytes=32 time<1ms TTL=127
De PC1 esetében ugyanez nem működik:
C:\>ping 192.168.200.11
Pinging 192.168.200.11 with 32 bytes of data:
Request timed out.
Reply from 192.168.100.1: Destination host unreachable.
Az ellenőrzések igazolják a szabályok működőképességét.
15.5. Telnet és SSH kapcsolatok védelme¶
Az ACL-eket gyakran alkalmazzuk a hálózati eszközök management felületének védelmére is. Ezek a beállítások az eddig bemutatott példa alapján könnyen megérthetők. Az alábbi példában S1 switch ssh kapcsolatát csak az 192.168.100.11
-es adminisztrátori munkaállomásról tesszük elérhetővé, minden más forrásból tiltjuk.
Első lépésként létrehozzuk azt az ACL-t amely a feladatban megfogalmazott hozzáféréseket tartalmazza:
ip access-list standard ADMIN-HOST
permit 192.168.100.11
deny any
exit
Majd az így létrehozott listát az ssh kapcsolathoz rendeljük úgy, hogy a listában foglalt szabályok a bejövő kapcsolatokra legyenek érvényesek. Figyeld meg, hogy ebben az esetben nem a korábban használt ip access-group, hanem az access-class parancsot kell használni! A konfiguráció beállítása ettől eltekintve azonos a SSH kapcsolat beállítása fejezetben már bemutaottal. Ezt az alábbi folyamat példázza, melyben kiemeltem a hozzáférés szempontjából lényeges sorokat:
Switch> ena
Switch# conf term
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)# hostname S1
S1(config)# no ip domain-lookup
S1(config)# ip access-list standard ADMIN-HOST
S1(config-std-nacl)# permit 192.168.100.11
S1(config-std-nacl)# deny any
S1(config-std-nacl)# exit
S1(config)# int vlan1
S1(config-if)# ip address 192.168.100.2 255.255.255.0
S1(config-if)# no shutdown
S1(config-if)# exit
S1(config)# username admin
S1(config)# ip domain-name uni-eszterhazy.hu
S1(config)# crypto key generate rsa general-keys modulus 2048
...
S1(config)# ip ssh version 2
S1(config)# line vty 0 15
S1(config-line)# password sshpass
S1(config-line)# privilege level 15
S1(config-line)# transport input ssh
S1(config-line)# access-class ADMIN-HOST in
S1(config-line)# login
S1(config-line)# exit
S1(config)# end
15.6. Feladatok¶
- Magyarázd el az alábbi lista elemek jelentését!
access-list 10 permit 10.0.0.0 0.0.0.255 remark A
access-list 10 permit 10.0.0.0 0.0.0.255 remark A
Az alábbi konfigurációs beállítások mellett képes elérni X gép Y-t?
Kiterjesztett ACL: forrás, cél és port alapján (100-199). A _forráshoz_ minél közelebb legyen Sorszámozott:
eng/tilt protokoll forrás port cél port
access-list 100 permit tcp 192.168.10.0 0.0.0.255 any eq www
- Nevesített (lehet standard és extended is):
ip access-list standard SRC-FILTER permit host 192.168.10.10 permit 192.168.10.0 0.0.0.255 deny any
ip access-list extended FTP-FILTER permit tcp 192.168.10.0 0.0.0.255 any eq ftp permit tcp 192.168.10.0 0.0.0.255 any eq ftp-data majd:
- Access lista hozzárendelése Interfészhez:
interface Serial 0/1/0 ! Számozott: ip access-group 20 in|out ! Nevesített: ip access-group SRC-FILTER in|out
- Törlés:
ip access-list standard 1 no 10
no access-list 10 no access-list extended FTP-FILTER
- Szerkesztés:
ip access-list extended SURFING no 10 10 permit tcp 192.168.10.0 0.0.0.255 any eq www
- Lekérdezés/statisztikák:
show access-lists show run | section access-list
- Statisztika törlse:
clear access-list counters NO-ACCES
PC —— Router —– PC 1.10 — 1.1-10.1 — 10.10
15.6.1. R1¶
ena conf term hostname R1 no ip domain-lookup
access-list 10 remark 1.10-bol jovo csomagok tiltása access-list 10 deny host 192.168.1.10
ip access-list standard PERMIT-ACCESS remark 1.10 mint forrás tiltása permit host 192.168.1.10
int g0/0/0 ip address 192.168.1.1 255.255.255.0 ! Forráshoz közel tiltjuk ! ip access-group 10 out ip access-group PERMIT-ACCESS out no sh
int g0/0/1 ip address 192.168.10.1 255.255.255.0 no sh
end
15.6.2. VTY vonalak:¶
ip access-list standard ADMIN-HOST permit 192.168.10.10 deny any exit
line 0 4 transport input ssh access-class ADMIN-HOST in end