Context-Based Permissions

πŸ›‘οΈ Hoofdstuk 15.3: Context-Based Permissions in Linux

Linux maakt gebruik van verschillende methoden om bestands- en maprechten te beheren. Naast de klassieke rechtenstructuur biedt het besturingssysteem ondersteuning voor uitgebreidere beveiligingsmodellen zoals MAC (Mandatory Access Control).

────────────────────────────────────────────
πŸ”‘ DAC vs. MAC – Verschillende Toegangsmodellen
────────────────────────────────────────────

β€’ **Discretionary Access Control (DAC)**
– De eigenaar van een bestand of map bepaalt wie toegang heeft.
– Standaard Linux-machtigingen en ACL's vallen onder DAC.

β€’ **Mandatory Access Control (MAC)**
– Beveiligingsregels worden door de systeembeheerder ingesteld.
– Overschrijft DAC indien nodig.
– Onderdeel hiervan is **RBAC** (Role-Based Access Control).

πŸ“Œ Bekende MAC-systemen:
β€’ **SELinux** – Veel gebruikt op Red Hat-systemen
β€’ **AppArmor** – Eenvoudiger alternatief op Ubuntu en Debian

────────────────────────────────────────────
πŸ” SELinux – Geavanceerde Toegangscontrole
────────────────────────────────────────────

SELinux gebruikt beleid (policies) om te bepalen of gebruikers, processen of programma’s toegang krijgen tot objecten (zoals bestanden of netwerkpoorten).

πŸ“ Configuratiebestand:
β€’ `/etc/selinux/config`
Hierin stel je de globale SELinux-status en -policytype in.

SELINUX =
β€’ `enforcing` – Actief beleid, toegang wordt geblokkeerd indien ongeoorloofd
β€’ `permissive` – Alleen loggen van overtredingen
β€’ `disabled` – SELinux volledig uitgeschakeld

SELINUXTYPE =
β€’ `targeted` – Alleen netwerkdiensten onder toezicht (standaard)
β€’ `minimum` – Alleen geselecteerde processen
β€’ `mls` – Strikte beveiliging op basis van niveaus (Bell-LaPadula model)

πŸ“Š SELinux Statusbeheer:
β€’ `getenforce` – Toont of SELinux actief is
β€’ `sestatus` – Toont uitgebreide statusinformatie

βš™οΈ Beheer van Beleid:
β€’ `setenforce` – Wissel tussen enforcing (1) en permissive (0)
β€’ `semodule` – Installeer, verwijder of wijzig SELinux-modules
β€’ `setsebool` – Zet bepaalde regels aan of uit
β€’ `getsebool -a` – Toon alle boolean-instellingen

────────────────────────────────────────────
πŸ”Ž SELinux Security Contexts
────────────────────────────────────────────

Objecten (zoals bestanden) hebben labels met vier onderdelen:
`gebruiker:rol:type:niveau`

Voorbeeld:
β€’ `system_u:object_r:httpd_sys_content_t:s0`

πŸ”Ή Tools voor contextbeheer:
β€’ `ls -Z` – Toon contexten van bestanden
β€’ `ps -Z` – Toon contexten van processen
β€’ `netstat -Z` – Toon contexten van netwerkverbindingen

πŸ”§ Context aanpassen:
β€’ `chcon` – Wijzig tijdelijk de context van een bestand
β€’ `restorecon` – Herstel de standaardcontext
β€’ `semanage` – Configureer permanente contexten

────────────────────────────────────────────
🌐 AppArmor – Een Lichter Beveiligingssysteem
────────────────────────────────────────────

AppArmor gebruikt profielen per applicatie om bestands- en netwerktoegang te beheren. Het is eenvoudiger te configureren dan SELinux.

πŸ“ Profielen bevinden zich in:
`/etc/apparmor.d/`
Bestandsnamen zijn gebaseerd op het pad van het programma.

Voorbeeld:
β€’ `/usr/sbin/mysqld` β†’ profiel: `usr.sbin.mysqld`

πŸ“Š AppArmor Status- en Profielbeheer:
β€’ `aa-status` – Controleer actieve profielen
β€’ `aa-complain` – Zet een profiel in logmodus
β€’ `aa-enforce` – Zet een profiel actief
β€’ `aa-disable` – Schakel een profiel uit
β€’ `aa-unconfined` – Toon processen zonder actief profiel

────────────────────────────────────────────
βœ… Conclusie
────────────────────────────────────────────

β€’ DAC bepaalt basisrechten, maar MAC biedt extra controle.
β€’ SELinux is krachtig en geschikt voor streng beveiligde systemen.
β€’ AppArmor is eenvoudiger in gebruik en goed inzetbaar voor desktops.
β€’ Beide systemen versterken de beveiliging van Linux aanzienlijk wanneer correct geconfigureerd.