17.10. MAC-module portacl
Terug | Hoofdstuk 17. Verplichte Toegangscontrole (MAC) | Volgende

## 17.10. MAC-module portacl

Modulenaam: `mac_portacl.ko`

Kernelinstelling: `MAC_PORTACL`

Opstartoptie: `mac_portacl_load="YES"`

De module mac_portacl(4) wordt gebruikt om het binden aan lokale TCP- en UDP-poorten te begrenzen door een waaier aan `sysctl`-variabelen te gebruiken. In essentie maakt mac_portacl(4) het mogelijk om niet-`root`-gebruikers in staat te stellen om aan gespecificeerde geprivilegieerde poorten te binden, dus poorten lager dan 1024.

Eenmaal geladen zal deze module het MAC-beleid op alle sockets aanzetten. De volgende tunables zijn beschikbaar:

- `security.mac.portacl.enabled` schakelt het beleid volledig in of uit.

- `security.mac.portacl.port_high` stelt het hoogste poortnummer in waarvoor mac_portacl(4) bescherming biedt.

- `security.mac.portacl.suser_exempt` sluit de gebruiker `root` uit van dit beleid wanneer het op een waarde anders dan nul wordt ingesteld.

- `security.mac.portacl.rules` specificeert het eigenlijke beleid van mac_portacl; zie onder.

Het eigenlijke beleid van `mac_portacl`, zoals gespecificeerd in de sysctl `security.mac.portacl.rules`, is een tekststring van de vorm: `regel[,regel,...]` met zoveel regels als nodig. Elke regel heeft de vorm: `idtype:id:protocol:poort`. De parameter `idtype` kan `uid` of `gid` zijn en wordt gebruikt om de parameter `id` als respectievelijk een gebruikers-id of groeps-id te interpreteren. De parameter `protocol` wordt gebruikt om te bepalen of de regel op TCP of UDP moet worden toegepast door de parameter op `tcp` of `udp` in te stellen. De laatste parameter `poort` is het poortnummer waaraan de gespecificeerde gebruiker of groep zich mag binden.

### Opmerking:

Aangezien de regelverzameling direct door de kernel wordt geïnterpreteerd kunnen alleen numerieke waarden voor de parameters voor de gebruikers-ID, groeps-ID, en de poort gebruikt worden. Voor gebruikers, groepen, en poortdiensten kunnen dus geen namen gebruikt worden.

Standaard kunnen op UNIX®-achtige systemen poorten lager dan 1024 alleen aan geprivilegieerde processen gebonden worden, dus diegenen die als `root` draaien. Om mac_portacl(4) toe te laten staan om ongeprivilegieerde processen aan poorten lager dan 1024 te laten binden moet deze standaard UNIX®-beperking uitgezet worden. Dit kan bereikt worden door de sysctl(8)-variabelen `net.inet.ip.portange.reservedlow` en `net.inet.ip.portrange.reservedhigh` op nul te zetten.

Zie de onderstaande voorbeelden of bekijk de handleidingpagina voor mac_portacl(4) voor meer informatie.

### 17.10.1. Voorbeelden

De volgende voorbeelden zouden de bovenstaande discussie wat moeten toelichten:

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

Eerst wordt mac_portacl(4) ingesteld om de standaard geprivilegieerde poorten te dekken en worden de normale bindbeperkingen van UNIX® uitgeschakeld.

    # sysctl security.mac.portacl.suser_exempt=1

De gebruiker `root` zou niet beperkt moeten worden door dit beleid, stel `security.mac.portacl.suser_exempt` dus in op een waarde anders dan nul. De module mac_portacl(4) is nu ingesteld om zich op de zelfde manier te gedragen als UNIX®-achtige systemen zich standaard gedragen.

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

Sta de gebruiker met UID 80 (normaliter de gebruiker `www`) toe om zich aan poort 80 te binden. Dit kan gebruikt worden om de gebruiker `www` toe te staan een webserver te draaien zonder ooit `root`-rechten te hebben.

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

Sta de gebruiker met UID 1001 om zich aan de TCP-poorten 110 (“pop3”) en 995 (“pop3s”) te binden. Dit staat deze gebruiker toe om een server te starten die verbindingen accepteert op poorten 110 en 995.

Terug | Omhoog | Volgende
17.9. MAC-module ifoff | Begin | 17.11. MAC-module partition