Több IP cím, port vagy egyéb elem object-group-ba történő szervezésével egyszerűsíthetőek az ACL-ek. Tegyük fel hogy van három szerverünk (10.1.1.10, 20.1.1.10 és 22.1.1.10), melyeken web, ssh és telnet hozzáférést kell engedélyezni a 192.168.1.0, 192.168.2.0, 172.16.1.0 és 172.30.1.0 hálózatok számára. Ez 36 darab ACL bejegyzés lenne ha egyenként párosítanánk össze a forrás IP címeket a portjaikkal a cél hálózatokhoz. Object group-ok alkalmazásával azonban ez a feladat lényegesen leegyszerűsödik, és a későbbi adminisztrációnál is nagy segítséget fog jelenteni.
Ehhez három object-group lesz létrehozva. Egy a szervereknek, egy a portoknak, és egy a cél hálózatoknak.
object-group network Halok 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 172.16.1.0 255.255.255.0 172.30.1.0 255.255.255.0 object-group service Portok tcp eq telnet tcp eq www tcp eq 22 object-group network Szerverek host 10.1.1.10 host 20.1.1.10 host 22.1.1.10 ip access-list extended AL-test permit object-group Portok object-group Szerverek object-group Halok
Konfiguráció a show object-group paranccsal ellenőrizhető le:
R4#sh object-group Network object group Halok 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 172.16.1.0 255.255.255.0 172.30.1.0 255.255.255.0 Service object group Portok tcp eq telnet tcp eq www tcp eq 22 Network object group Szerverek host 10.1.1.10 host 20.1.1.10 host 22.1.1.10
A portoknál nem adtuk meg, hogy forrás vagy cél portról van szó, de a Cisco IOS alapértelmezetten cél portnak fogja venni. Ha forrás portra szeretnénk szűrni, a port definiálásánál a source opciót kell használnunk az alábbi módon:
object-group service Portok tcp source eq telnet
Az object-group elemei közöt logikai vagy kapcsolat van. Amennyiben a szűrést a forrás és cél port minkettő egyezésével szeretnénk végezni, akkor a forrás és cél opciót egy sorba kell megadni:
object-group service Portok tcp source eq telnet eq telnet tcp source eq 1011 eq 1012
Ez a két bejegyzés azokra a TCP csomagokra fog illeszkedni, amelyeknek a forrás és cél portjuk is 23, vagy a forrás portjuk 1011 cél portjuk pedig 1012.
Object-group esettanulmány
Az esettanulmányhoz használt topológia: az ACL R2-őn, az R3 felől jövő bejövő forgalmat szűri
Routerek konfigurációja során R1 és R3 default route-ot használ, R2 pedig közvetlenül kapcsolódik mindkét hálózatra. R2-őn alkalmazott AL-test nevű ACL hivatkozik az object-group-okra, illetve a „log” opció megadásával egyezés esetén log üzenetet jelenít meg. Az ACL utolsó sorában minden egyéb forgalom engedélyezve van az egyszerűség kedvéért. Tesztelni az R1 és R3 közötti telnettel fogunk. A routerek alapkonfigurációja az alábbi:
R1:
interface Fa0/0 ip address 10.1.1.1 255.255.255.0 ip route 0.0.0.0 0.0.0.0 10.1.1.2 line vty 0 4 password cisco login
R2:
interface Fa0/0 ip address 10.1.1.2 255.255.255.0 interface Fa0/1 ip address 20.1.1.2 255.255.255.0 ip access-group AL-test in object-group network FORRAS host 20.1.1.3 ! R3 címe object-group network CEL host 10.1.1.1 ! R1 címe object-group service PORTS
ip access-list extended AL-test permit object-group PORTS object-group FORRAS object-group CEL log permit ip any any
line vty 0 4 password cisco login
R3:
interface Fa0/1 ip address 20.1.1.3 255.255.255.0 ip route 0.0.0.0 0.0.0.0 20.1.1.2 line vty 0 4 password cisco login
Az R2 object-group konfigurációjai az alábbiak lesznek:
1. felállás: object-group csak a tcp 23 forgalmat szűri
object-group service PORTS tcp eq 23
Cél portra szűrve ez azt jelentené, hogy az R3-ról az R1-re irányuló telnet forgalom illeszkedne
R2# sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log 20 permit ip any any R2#
R1-ről az R3-ra telnetelve az ACL 20-as során látható matchelés:
R1#telnet 20.1.1.3 Trying 20.1.1.3 ... Open User Access Verification Password: R3> R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log 20 permit ip any any (12 matches) R2#
Ennek oka, hogy a bejövő irányban R3 felől a 23-as port a forrás oldalon van (R3-ra telnetelünk), az ACL pedig a cél oldalon nézi a portot. Ez pont az ellenkező irányú telnet kapcsolódást (R3-ról R1-re) jelentené, hiszen R3-ról R1-re történő telnetelés esetén lenne az R2-n bejövő irányban a cél port a 23-as:
R3#telnet 10.1.1.1 Trying 10.1.1.1 ... Open User Access Verification Password: R1> R2# *Jan 1 22:36:15.875: %SEC-6-IPACCESSLOGP: list AL-test permitted tcp 20.1.1.3(12428) -> 10.1.1.1(23), 1 packet R2# sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log (8 matches) 20 permit ip any any (12 matches) R2#
2. felállás: object-group csak a source tcp 23 forgalmat szűri
object-group service PORTS tcp source eq 23
Ez az R1-ről indított telnet kapcsolatot kell megmatchelje, pontosabban ennek a kapcsolatnak a válasz forgalmát.
R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log 20 permit ip any any R2#
R1-ről indított telnet kapcsolódás során matchek láthatóak. Az R3 által küldött válasz forgalom forrás portja a 23-as port, melyet a bejövő irányba feltett ACL megfelelő sora megmatchel:
R1#telnet 20.1.1.3 Trying 20.1.1.3 ... Open User Access Verification Password: R3>R2# *Jan 2 11:05:33.403: %SEC-6-IPACCESSLOGP: list AL-test permitted tcp 20.1.1.3(23) -> 10.1.1.1(48856), 1 packet R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log (21 matches) 20 permit ip any any R2#Az R3-ról indított telnet kapcsolódást a permit ip any any sor matchelné meg.
Látható hogy a source opcióval a forrás IP cím portjára lehet szűrni. A cél port ebben az esetben nincs vizsgálva.
3. felállás: object-group külön sorban forrás és cél portra szűr (vagy kapcsolat)
object-group service PORTS tcp eq 23 tcp source eq 23Külön sorba írva logikai „vagy” kapcsolat van a feltételek között. Tehát ez a konfiguráció mind az R1-ről indított, mind pedig az R3-ról indított telnet kapcsolódást megmatcheli. Akár cél akár forrás oldalon látja a 23-as portot matchelés történik:
R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log 20 permit ip any any R2#Telnet kapcsolódás az R1-ről R3-ra az alábbi eredménnyel jár:
R1#telnet 20.1.1.3 Trying 20.1.1.3 ... Open User Access Verification Password: R3>R2# *Jan 2 11:13:43.083: %SEC-6-IPACCESSLOGP: list AL-test permitted tcp 20.1.1.3(23) -> 10.1.1.1(40075), 1 packet R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log (11 matches) 20 permit ip any any R2#Ez esetben az R3 válaszcsomagjainak forrás portja lesz a 23-as, így a tcp source eq 23 rész matcheltetett az ACL-ben. Másik oldalról indított telnet kapcsolódás esetén is lesz matchelés (az áttekinthetőség kedvéért az ACL számlálói nullázva lettek):
4. felállás: object-group egy sorban forrás és cél portra is szűr (és kapcsolat)
object-group service PORTS tcp source eq 23 eq 23Ez csak azt a forgalmat kell engedje amelyik forrás és cél portja is 23-as. Természetesen telnet kapcsolódással (és az esetek 99%-ban egyéb kapcsolódásnal is) ezt nem lehet elérni, hiszen a kapcsolódáshoz használt port mindig egy 1024-től nagyobb, előre nem meghatározható szám lesz. Emiatt az ACL object-group-os sora nem fog matchelni egyik irányból történő kapcsolódásra sem, hiszen a forrás cím nem 23 lesz.
R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log 20 permit ip any any R2#Telnet kapcsolódás R1-ről és R3-ról:
R1#telnet 20.1.1.3 Trying 20.1.1.3 ... Open User Access Verification Password: R3>R3#telnet 10.1.1.1 Trying 10.1.1.1 ... Open User Access Verification Password: R1>Az R2-n a match az utolsó permit ip any any soron van, így látható hogy az object-groupban megadott portok között jelen esetben „és” logikai kapcsolat van:
R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log 20 permit ip any any (32 matches) R2#A logikai és kapcsolódás bebizonyítása végett az object-groupot módosítani fogom úgy, hogy a telnethez használt forrás port-ra matcheljen. R1-re R3-ról be vagyok jelentkezve, a kapcsolódáshoz használt port pedig az 53836. Az object-group módosítás utánni állapota:
object-group service PORTS tcp source eq 53836 eq 23Telnet sessionben egy parancsot kiadva az ACL object-group-os sora matchelni fog az új portszámra:
R2# *Jan 2 11:38:36.447: %SEC-6-IPACCESSLOGP: list AL-test permitted tcp 20.1.1.3(53836) -> 10.1.1.1(23), 1 packet R2#sh ip acce Extended IP access list AL-test 10 permit object-group PORTS object-group FORRAS object-group CEL log (20 matches) 20 permit ip any any (69 matches) R2#