object-group port matchelése

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

object-group

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 23

Kü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 23

Ez 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 23

Telnet 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#