16.10. A portacl MAC-modul

A modul neve: mac_portacl.ko

A rendszermag konfigurációs beállítása: MAC_PORTACL

Rendszerindítási beállítás: mac_portacl_load="YES"

A mac_portacl(4) modul a helyi TCP és UDP portok kiosztásának korlátozását teszi lehetővé különféle sysctl-változókon keresztül. A mac_portacl(4) segítségével lényegében a nem-root felhasználók is használhatnak privilegizált, tehát 1024 alatti portokat.

Miután betöltöttük, a modul az összes csatlakozásra alkalmazza a MAC-házirendet. Ezután az alábbi változókkal hangolhatjuk a viselkedését:

A security.mac.portacl.rules változó által megadott aktuális mac_portacl házirend formátuma a következő: szabály[,szabály,...], ahol ezen a módon tetszőleges számú szabályt adhatunk meg. Az egyes szabályok pedig így írhatóak fel: azonosítótípus: azonosító: protokoll: port. Az azonosítótípus értéke uid vagy gid lehet, amivel megadjuk, hogy az azonosító paraméter felhasználóra vagy csoportra hivatkozik. A protokoll paraméter adja meg, hogy a szabályt TCP vagy UDP típusú kapcsolatra értjük, és ennek megfelelően az értéke is tcp vagy udp lehet. A sort végül a port paraméter zárja, ahol annak a portnak számát adjuk meg, amelyhez az adott felhasználót vagy csoportot akarjuk kötni.

Megjegyzés: Mivel a szabályokat közvetlenül maga a rendszermag dolgozza fel, ezért a felhasználók illetve csoportok azonosítója, valamint a port értéke kizárólag numerikus érték lehet. Tehát a szabályokban név szerint nem hivatkozhatunk felhasználókra, csoportokra vagy szolgáltatásokra.

A UNIX®-szerű rendszereken alapértelmezés szerint az 1024 alatti portokat csak privilegizált programok kaphatják meg és használhatják, tehát a root felhasználó neve alatt kell futniuk. A mac_portacl(4) azonban a nem privilegizált programok számára is lehetővé teszi, hogy elfoglalhassanak 1024 alatti portokat, amihez viszont először le kell tiltani ezt a szabvány UNIX-os korlátozást. Ezt úgy érhetjük el, ha a net.inet.ip.portrange.reservedlow és net.inet.ip.portrange.reservedhigh változókat egyaránt nullára állítjuk.

A mac_portacl(4) működésének részleteiről a példákon keresztül vagy a megfelelő man oldalakból tudhatunk meg többet.

16.10.1. Példák

A következő példák az iméntieket igyekeznek jobban megvilágítani:

# sysctl security.mac.portacl.port_high=1023
# sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0

Elsőként beállítjuk, hogy a mac_portacl(4) vegye át a szabványos privilegizált portok vezérlését és letiltjuk a normál UNIX-os korlátozásokat.

# sysctl security.mac.portacl.suser_exempt=1

A root felhasználót azonban nem akarjuk kitenni a házirendnek, ezért a security.mac.portacl.suser_exempt változónak egy nem nulla értéket adunk meg. A mac_portacl(4) modul most pontosan ugyanúgy működik, mint a UNIX-szerű rendszerek alapértelmezés szerint.

# sysctl security.mac.portacl.rules=uid:80:tcp:80

A 80-as azonosítóval rendelkező felhasználó (aki általában a www) számára engedélyezzük a 80-as port használatát. Így a www felhasználó anélkül képes webszervert futtatni, hogy szüksége lenne a root jogosultságaira.

# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995

Az 1001-es azonosítóval rendelkező felhasználónak megengedjük, hogy elfoglalhassa a 110-es (“pop3”) és 995-ös (“pop3s”) portokat. Ennek köszönhetően az adott felhasználó el tud indítani egy szervert, amihez a 110-es és 995-ös portokon lehet kapcsolódni.

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.