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.enabled totálisan engedélyezi vagy letiltja a házirend használatát.
A security.mac.portacl.port_high megadja azt a legmagasabb portot, amelyre még kiterjed a mac_portacl(4) védelme.
Ha a security.mac.portacl.suser_exempt változónak nem nulla értéket adunk meg, akkor azzal a root felhasználót kivonjuk a szabályozások alól.
A security.mac.portacl.rules az érvényes mac_portacl házirendet adja meg, lásd lentebb.
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.
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>.