π‘οΈ 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.