Modulname: mac_portacl.ko
Parameter für die Kernelkonfiguration: options MAC_PORTACL
Bootparameter: mac_portacl_load="YES"
Mit Hilfe des Moduls mac_portacl(4) können die Anbindungen an die lokalen TCP und UDP Ports durch eine Vielzahl von sysctl Variablen beschränkt werden. Genauer gesagt ermöglicht mac_portacl(4) Nutzern ohne root-Rechten den Zugriff auf zu bestimmende privilegierte Ports, also denen innerhalb der ersten 1024.
Sobald das Modul geladen wurde, ist die Richtlinie für alle Sockets verfügbar. Die folgenden Variablen können für die Konfiguration verwendet werden:
security.mac.portacl.enabled schaltet die Anwendung der Richtlinie ein oder aus.
security.mac.portacl.port_high gibt den höchsten Port an, der von der Richtlinie mac_portacl(4) betroffen sein soll.
security.mac.portacl.suser_exempt nimmt, wenn es einen Wert ungleich Null zugewiesen bekommt, root von der Richtlinie aus.
security.mac.portacl.rules enthält als Wert die eigentliche mac_portacl Richtlinie.
Die eigentliche Konfiguration der mac_portacl Richtlinie wird
der sysctl-Variablen security.mac.portacl.rules als Zeichenkette der Form rule[,rule,...] übergeben. Jede einzelne Regel hat die Form idtype:id:protocol:port. Der Parameter idtype
ist entweder uid oder gid und wird verwendet, um den Parameter id
als Nutzer-ID oder Gruppen-ID zu kennzeichnen. Der Parameter
protocol
gibt an, ob die Regel ür TCP oder UDP gelten soll
(indem man den Wert auf tcp oder udp
setzt). Und der letzte Parameter, port
, enthält die Nummer
des Ports, auf den der angegebene Nutzer bzw. die angegebene Gruppe Zugriff erhalten
soll.
Anmerkung: Da der Regelsatz direkt vom Kernel ausgewertet wird, können nur Zahlenwerte übergeben werden. Das heißt, Namen von Nutzern, Gruppen oder Dienstnamen aus der Datei /etc/services funktionieren nicht.
Auf UNIX®-artigen Betriebssystemen sind die Ports kleiner 1024 privilegierten Prozessen vorbehalten, müssen also mit als/von root gestartet werden und weiterhin laufen. Damit mac_portacl(4) die Vergabe von Ports kleiner als 1024 an nicht privilegierte Prozesse übernehmen kann, muß die UNIX Standardeinstellung deaktiviert werden. Dazu ändert man die sysctl(8) Variablen net.inet.ip.portrange.reservedlow und net.inet.ip.portrange.reservedhigh auf den Wert “0”.
Weiterführende Informationen entnehmen Sie bitte den unten aufgeführten Beispielen oder der Man-Page mac_portacl(4)!
Die folgenden Beispiele sollten ein wenig Licht in die obige Diskussion bringen:
# sysctl security.mac.portacl.port_high=1023 # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0
Zunächst bestimmen wir, dass mac_portacl(4) für alle privilegierten Ports gelten soll und deaktivieren die normale UNIX-Beschränkung.
# sysctl security.mac.portacl.suser_exempt=1
Da root von dieser Richtlinie nicht beeinträchtigt werden soll, setzen wir hier security.mac.portacl.suser_exempt auf einen Wert ungleich Null. Das Modul mac_portacl(4) ist nun so eingerichtet, wie es UNIX-artige Betriebssysteme normal ebenfalls tun.
# sysctl security.mac.portacl.rules=uid:80:tcp:80
Nun erlauben wir dem Nutzer mit der UID 80, normalerweise dem Nutzer www, den Port 80 zu verwenden. Dadurch kann der Nutzer www einen Webserver betreiben, ohne dafür mit root-Privilegien ausgestattet zu sein.
# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995
Hier wird dem Nutzer mit der UID 1001 erlaubt, die TCP Ports 110 (“pop3”) und 995 (“pop3s”) zu verwenden. Dadurch kann dieser Nutzer einen Server starten, der Verbindungen an diesen beiden Ports annehmen kann.
Zurück | Zum Anfang | Weiter |
Das MAC Modul ifoff | Nach oben | Das MAC Modul partition |
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<[email protected]>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <[email protected]>.