Tartalomjegyzék

< Cisco szerint a hálózat

ACL

Az ACL

Az ACL az Access Control List rövidítése, magyarul hozzáférési lista. Egy forgalomirányítón a bejövő és kimenő csomagokat szűrhetjük IP címek vagy portszámok alapján.

A szűrést az OSI rétegmodell 3. és 4. rétegében végezzük.

Az ilyen szűréseket csomagszűrésnek nevezzük.

A szabályok összeállítása során a csomagok számára illeszkedési szabályokat írunk le. Az illeszkedés a következőket tartalmazhatja:

A szabályhoz hozzátartozik, hogy a csomagot vagy megtartjuk vagy eldobjuk:

Ezt nevezzük vezérlésnek.

A szabályokat szokás hozzáférésvezérlő bejegyzésnek vagy angolosan Access Control Entry néven nevezni; röviden ACE. De lehet simán ACL bejegyzés.

Az ACL-ek két csoportba oszthatók. Vannak a szabványos ACL-ek, amelyek csak forrás IP címre illeszthetők és vannak a kiterjesztett ACL-ek.

Csoportosítás:

Az ACL-ek a forgalomirányító által előállított csomagokra nem vonatkoznak.

A működésről

A szabályokat sorba felvesszük, egy-egy parancs formájában.

Amikor egy csomag érkezik a forgalomirányítóra, sorba veszi a bejegyzett szabályokat, addig amíg nem talál egy illeszkedő szabályt. Ha illeszkedik egy szabályra (pl. forrás IP cím van csak megadva és arra egyezik a csomagban található információ), akkor alkalmazza a megadott utasítást, ami engedés vagy eldobás.

Ha egy csomag nem illeszkedik egyetlen szabályra sem, akkor a csomag eldobásra kerül, mivel a szabályok végén van egy implicit (ha nem állítjuk be, akkor is ott van) szabály, amit mindent tilt.

Bejövő/kimenő ACL-ek

Egy ACL konfigurálható úgy, hogy kimenő csomagokra illeszkedjen, vagy a bejövő csomagokra.

A bejövő ACL-ek hatékonyabbak, mivel ha tiltani kell egy csomagot, akkor vele megkíméljük az útválasztási folyamatban való részvételtől. Ha már kifele tiltunk, ezt nem tudjuk megtenni.

Szabványos ACL

A szabványos ACL vagy normál ACL.

Csak forrás IP cím alapján működik.

Például:

access-list 10 permit 192.168.30.0 0.0.0.255

Kiterjesztett ACL

Több tulajdonság alapján is képes szűrni:

Például:

access-list 103 permit tcp 192.168.30.0 0.0.0.255 any eq 80

ACL azonosítása

Minden szabálynak szükséges egy azonosító. Az azonosítók a következők lehetnek:

Használható számok:

A használható nevek:

Helyettesítő maszk

Az IPv4 ACL esetén szükség van helyettesítő maszkra. IPv6 esetén nem használunk ilyet.

Helyettesítő maszk használata:

Helyettesítő maszk hálózat esetén
Decimális Bináris
IP cím 192.168.10.0 11000000.10101000.00001010.00000000
helyettesítő
maszk
0.0.255.255 000000000.00000000.11111111.11111111
kapott hálózati
cim
192.168.0.0 11000000.10101000.00000000.00000000
Helyettesítő maszk IP cím esetén
Decimális Bináris
IP cím 192.168.1.1 11000000.10101000.00000001.00000001
helyettesítő
maszk
0.0.0.0 000000000.00000000.00000000.00000000
kapott hálózati
cím
192.168.1.1 11000000.10101000.00000001.00000001
Ha az IP cím bármivel egyezhet
Decimális Bináris
IP cím 192.168.1.1 11000000.10101000.00000001.00000001
helyettesítő
maszk
0.0.0.0 11111111.11111111.11111111.11111111
kapott hálózati
cím
0.0.0.0 00000000.00000000.00000000.00000000
192.168.1.0/24 felel meg
Decimális Bináris
IP cím 192.168.1.1 11000000.10101000.00000001.00000001
helyettesítő
maszk
0.0.0.255 000000000.00000000.00000000.11111111
kapott hálózati
cím
192.168.1.0 11000000.10101000.00000001.00000000

Számítási példák

Példa 1

A 192.168.3.0 hálózat össze felhasználója kapjon hozzáférést.

Konvjuk a 255.255.255.255-ből a maszkot:

  255.255.255.255
- 255.255.255.000
  000.000.000.255

Számítás 2

A 192.168.3.32/28 hálózat 14 felhasználója kapjon hozzáférést.

Konvjuk a 255.255.255.255-ből a maszkot:

  255.255.255.255
- 255.255.255.240
  000.000.000.015

Példa 3

2 hálózatot szeretnénk engedni: Konvjuk a 255.255.255.255-ből a maszkot:

  255.255.255.255
- 255.255.254.000
  000.000.001.255

Lehetne így beállítani:

R1(config)# access-list 10 permit 192.168.10.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.11.0 0.0.0.255

De hatékonyabb így:

R1(config)# access-list 10 permit 192.168.10.0 0.0.1.255

Példa 4

192.168.16.0-tól – 192.168.31.0-ig szeretnénk engedni

Így is lehet:

R1(config)# access-list 10 permit 192.168.16.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.17.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.18.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.19.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.20.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.21.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.22.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.23.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.24.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.25.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.26.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.27.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.28.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.29.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.30.0 0.0.0.255
R1(config)# access-list 10 permit 192.168.31.0 0.0.0.255

Vagy így:

R1(config)# access-list 10 permit 192.168.16.0 0.0.15.255

Miért lett 15 helyettesítő maszk?

Az alábbi listában felírtam az IP címek 3. oktetjét decimálisan, majd binárisan. A bináris résznél megnézzük hány balról nézve hány számjegy egyezik meg minden oszlopban. Ez 4 darab. Akkor a maszkot így írhatnám fel: 11110000, az első 4 darab 1-es a többi 0. Ezt invertáljuk, akkor megkapjuk: 00001111. Ha ezt átszámoljuk decimális számrendszerbe, akkor 15-öt kapunk.

16		00010000
17		00010001
18		00010010
19		00010011
20		00010100
21		00010101
22		00010110
23		00010111
24		00011000
25		00011001
26		00011010
27		00011011
28		00011100
29		00011101
30		00011110
31		00011111

Egyezés az első 4 számban (binárisan)
maszk 4 oktetben 1 van:
11110000 = 240 > villcard > 15

Helyettesítő maszk kulcsszavak

Ezek használhatók IPv4 és IPv6 esetén is.

Eredeti:

192.168.10.10 0.0.0.0

Helyette:

host 192.168.10.10

Az any kulcsszó:

A 255.255.255.255 maszk helyett használható bármely cím megadható.

Eredeti maszk:

0.0.0.0 255.255.255.255

Helyette:

any

Any host használat:

R1(config)# access-list 1 permit 0.0.0.0 255.255.255.255
R1(config)# access-list 1 permit any
R1(config)# access-list 1 permit 192.168.10.10 0.0.0.0
R1(config)# access-list 1 permit host 192.168.10.10

Irányelvek

Hol használjunk ACL-t?

A három P

ACL-ek elhelyezése

Szeretnénk szűrni a 192.168.10.0/24 hálózatból jövő csomagokat a 192.168.40.0/24 felé.

A szeretnénk a 192.168.20.0/24 hálózatból minden forgalmat szűrni a 192.168.30.0/24 és a 192.168.40.0/24 felé.

Szabványos ACL számozva

Lépések

Két lépés:

Számozás

Az access-list parancsa számára első paraméterként meg kell adnunk egy számot. A szám 1-99 közötti szám. A Cisco IOS 12.0.1-től megadható a 1300-1999 közötti szám is.

Szintaxis

Router(config)# access-list lista_száma 
{ deny | permit | remark } forrás 
[ forrás_helyettesítő_maszk ][ log ]

Példa

ACL létrehozása:

R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255

Most lépjünk ki, nézzük meg:

R1#show access-list

Megjegyzés az ACL számhoz:

R1(config)#access-list 1 remark teszt megjegyzes

Megnézzük:

R1# show running-config

A megjegyzések maximum 100 karakter hosszúak lehetnek.

ACL megszüntetése:

R1(config)# no access-list 1

Ellenőrizzük:

R1# show access-list

Egy gép engedélyezése:

R1(config)# access-list 1 permit host 192.168.10.11

Nézzük a következ példát, ahol két bejegyzésünk van:

R1(config)# access-list 1 permit host 192.168.10.11
R1(config)# access-list 1 permit host 192.168.10.12
R1#show access-list
Standard IP access list 1
    10 permit host 192.168.10.11
    20 permit host 192.168.10.12

Itt jól látható, hogy az 1 számú listáról van szó, két bejegyzésünk van. Mindkét bejegyzés kapott egy sorszámot, 10 és 20 számmal.

Ha csinálunk két 2 számú bejegyzést, akkor listázásnál:

R1# show access-list
Standard IP access list 1
    10 permit host 192.168.10.11
    20 permit host 192.168.10.12
Standard IP access list 2
    10 permit host 192.168.20.11
    20 permit host 192.168.20.12

Interfészhez kötés

Az ACL attól, hogy létrehoztuk őket, nem fognak működni. Azokat interfészhez kell kötni.

Legyen a következő bejegyzés:

R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255

Interfészhez kötéshez, lépjünk be a kívánt interfészbe.

R1(config)# int g0/0

Kössük össze az ACL-t és az interfészt:

R1(config-if)# ip access-group 1 in

Szabványos ACL névvel

R1(config)# ip access-list standard NO_ACCESS
R1(config-std-nad)# deny host 192.168.10.11
R1(config-std-nad)# permit any
R1(config-std-nad)# exit
R1(config)# interface g0/0
R1(config)# ip access-group NO_ACCESS out

Példa a szabványos ACL-re

Számozott

R1(config)# access-list 1 remark Tiltott vendég
R1(config)# access-list 1 deny host 192.168.10.10
R1(config)# access-list 1 remark Engedély a 192.168.x.x felől
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R1(config)# interface s0/0/0
R1(config-if)# ip access-group 1 out
R1(config-if)#

Nevesített

R1(config)#  ip access-list standard NO_ACCESS
R1(config-std-nacl)# remark Tiltjuk a Lab allomast
R1(config-std-nacl)# deny host 192.168.11.10
R1(config-std-nacl)# remark Engedjuk minden mast
R1(config-std-nacl)# permit any
R1(config-std-nacl)# exit
R1(config)# interface g0/0
R1(config-if)# ip access-group NO_ACCESS out

Ellenőrzés:

R1# show access-lists
R1#show ip int g0/0

ACL módosítása

Számozott ACL módosítása

R1(config)# access-list 1 deny host 192.168.10.99
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255

Szerkesztőmód:

R1(config)# ip access-list standard 1

Mint a nevesített ACL esetén.

FIGYELEM! Packet Tracer esetén a show access-lists 1 utasításnál nem lesz sorszám.

R1(config)# ip access-list standard 1
R1(config-std-nacl)# do show access-lists 1
    10 deny host 192.168.10.99
    20 permit 192.168.0.0 0.0.255.255
R1(config-std-nacl)# no 10
R1(config-std-nacl)# 10 deny host 192.168.10.11

Nevesített ACL módosítása

R1# show access-lists
...
Standard IP access list NO_AC
    10 deny host 192.168.11.11
    20 permit any
R1(config)# ip access-list standard NO_AC
R1(config-std-nacl) 15 deny host 192.168.11.11

FIGYELEM! Packet Tracer esetén a show access-lists NO_AC utasításnál nem lesz sorszám.

Statisztika az illeszkedésre

R1# show access-lists
Standard IP access list 1
    10 deny host 192.168.10.10 (8 match))
    20 permit 192.168.0.0, wilcard bits 0.0.255.255

Számláló törlése:

R1# clear access-list counters 1

Sorrend a számozásban

A show access-list hatására a IOS kiírja az ACL bejegyzéseket, abban sorrendben ahogy azok végrehajtásra kerülnek. A módosítások hatására a számozás sorrendje nem biztos, hogy megegyezik a a végrehajtás sorrendjével.

Megoldás, ha elmentjük a konfigurációt, majd újraindítjuk a forgalomirányítót.

TTY sáv védelme

Csak a 192.168.10.0/24 hálózatból lehet vty sávon bejönni:

R1(config)# access-list 17 permit 192.168.10.0 0.0.0.255
R1(config)# access-list 17 deny any
R1(config)#
R1(config)# line vty 0 4
R1(config-line)# login local
R1(config-line)# transport input ssh
R1(config-line)# access-class 17 in
R1(config-line)# exit

Ellenőrzéshez használjuk az ssh-t a 192.168.10.0/24 egyik gépéről, majd egy másik hálózatból is.

Kiterjesztett ACL

Szolgáltatások engedése

access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq 23
access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq 21
access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq 20
access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq telnet
access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq ftp
access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq ftp-data

Az eq után tett kérdőjel kiírja milyen neveket használhatunk:

access-list 101 permit tcp 192.168.10.0 0.0.0.255 any eq ?

R1(config)# access-list 102 permit tcp 192.168.10.0 0.0.0.25 any eq 80
R1(config)# access-list 102 permit tcp 192.168.10.0 0.0.0.25 any eq 443
R1(config)# access-list 103 permit tcp any 192.168.10.0 0.0.0.255 
          established

Az utolsó parancs engedi a forgalmat visszafele, ha az egy létező kapcsolathoz tartozik.

Interfészhez kötés:

R1(config)# interface g0/0
R1(config-if)# ip access-group 102 in
R1(config-if)# ip access-group 103 out

Következő példa

Tiltsuk meg a 192.168.30.0/24 hálózatból az 192.168.40.0/24-es hálózatban az FTP elérését.

R2(config)# access-list 101 deny tcp 192.168.40.0 0.0.0.255 192.168.30.0 0.0.0.0 eq ftp
R1(config)# access-list 101 deny tcp 192.168.41.0 0.0.0.255 
192.168.30. 0.0.0.255 eq ftp-data
R1(config)# access-list 101 permit ip any any
R1(config)# int g0/0
R1(config)# ip access-group 101 in

Telnet csak a 192.168.30.0/24 hálózatból:

R2(config)# access-list 102 permit tcp 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.0 eq 23
R1(config)# access-list 102 deny ip any any
R1(config)# int s0/0/0
R1(config)# ip access-group 102 in

Nevesített kiterjesztett ACL

R1(config)# ip access-list extended BONGESZ
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 any eq 80
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 any eq 443
R1(config-ext-nacl)# exit
R1(config)# ip access-list extended BONGESZ_STABIL
R1(config-ext-nacl)# permit tcp any 192.168.10.0 0.0.0.255 established
R1(config-ext-nacl)# exit
R1(config)# int g0/0
R1(config-ext-nacl)# ip access-group BONGESZ in
R1(config-ext-nacl)# ip access-group BONGESZ_STABIL out

Kiterjesztett ACL ellenőrzése

R1# show access-lists
R1# show access-lists
Extended IP access list BONGESZ
    10 permit tcp 192.168.10.0 0.0.0.255 any eq www
    20 permit tcp 192.168.10.0 0.0.0.255 any eq 443
Extended IP access list BONGESZ_STABIL
    10 permit tcp any 192.168.10.0 0.0.0.255 established

Csomagfeldolgozás

Bejövő csomagok feldolgozása:

Kimenő csomagok feldolgozása:

IPv6 ACL

IPv6 példa

R1(config)# ipv6 access-list NO-R3-LAN-ACCESS
R1(config-ipv6-acl)# deny ipv6 2001:db8:def:30::/64 any
R1(config-ipv6-acl)# permit ipv6 any any
R1(config-ipv6-acl)# end
R1(config)# interface s0/0/0
R1(config)# ipv6 traffic-filter NO-R3-LAN-ACCESS in
R1(config)# ipv6 access-list NO-FTP-TO11
R1(config-ipv6-acl)# deny tcp any 2001::db8:def:11::/64 ftp
R1(config-ipv6-acl)# deny tcp any 2001::db8:def:11::/64 ftp-data
R1(config-ipv6-acl)# permit ipv6 any any
R1(config-ipv6-acl)#exit
R1(config)# interface g0/0
R1(config-if)# ipv6 traffic-filter NO-FTP-TO in

Ellenőrzés:

R1#show ipv6 interface g0/0
R1#show access-list
R1#show running-config