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.
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.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.