SELinux (Security-Enhanced Linux) --- ## 🧩 **Doel van deze opdracht** Je leert werken met SELinux: * De huidige **modus bekijken en wijzigen** (enforcing, permissive) * De status controleren * SELinux-logboeken raadplegen * Werken met SELinux users, rollen en contexten * Een **confined user** aanmaken (meer beperkt dan `unconfined_u`) --- ## ✅ **Stap 1: Maak een snapshot van je VM** Gebruik je virtualisatieplatform (bv. VirtualBox, VMware, QEMU) en maak een snapshot: * Naam: `voor_SELinux` * Opmerking: "Snapshot voor SELinux opdracht" Zo kun je **terugrollen** als je iets misdoet. --- ## ✅ **Stap 2: Open de terminal op `rocky1.bmc.test`** --- ## ✅ **Stap 3: Controleer huidige SELinux modus** bash getenforce Mogelijke uitkomsten: * `Enforcing` = beleid wordt afgedwongen (meest veilig, default) * `Permissive` = beleid wordt **gelogd maar niet afgedwongen** * `Disabled` = SELinux staat uit (NIET aanbevolen) ✅ **Default is meestal `Enforcing`.** --- ## ✅ **Stap 4: Zet SELinux tijdelijk in permissive modus** bash sudo setenforce 0 getenforce 🔁 Je ziet nu: `Permissive` Dit is een **tijdelijke wijziging** (alleen tot de volgende reboot). --- ## ✅ **Stap 5: Zet SELinux terug naar enforcing** bash sudo setenforce 1 getenforce ✅ Je ziet weer: `Enforcing` --- ## ✅ **Stap 6: Bekijk uitgebreide SELinux status** bash sestatus Voorbeeldoutput: SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 --- ## 🛑 **LET OP:** Je hoeft **nu nog NIET** `/etc/selinux/config` aan te passen! Anders wordt de wijziging permanent na reboot. --- ## ✅ **Stap 7: Bekijk SELinux logs van vandaag** Gebruik `ausearch`: bash sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today Of gebruik grep: bash grep "SELinux is preventing" /var/log/messages 🔎 Hiermee zie je **blokkeringen of waarschuwingen** door SELinux (alleen als die vandaag zijn opgetreden). --- ## ✅ **Stap 8: Bekijk SELinux logins en hun users** bash sudo semanage login -l Voorbeeldoutput: Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 * > De meeste gebruikers zijn `unconfined_u`, wat betekent dat ze **weinig beperkingen** hebben. --- ## ✅ **Stap 9: Installeer hulpprogramma’s** bash sudo dnf install setools-console Deze tools geven je toegang tot commando’s zoals `seinfo`. Zorg dat ook `setroubleshoot-server` is geïnstalleerd (vaak standaard al aanwezig): bash sudo dnf install setroubleshoot-server --- ## ✅ **Stap 10: Bekijk SELinux users en rollen** Bekijk gebruikers: bash seinfo -u Voorbeeld: Users: 9 guest_u root staff_u sysadm_u system_u unconfined_u user_u xguest_u Bekijk rollen: bash seinfo -r Voorbeeld: Roles: 7 object_r guest_r staff_r sysadm_r system_r unconfined_r user_r --- ## ✅ **Stap 11: Controleer SELinux context van huidige gebruiker** bash id -Z Voorbeeldoutput (voor `marcel`): unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 | Veld | Betekenis | | ------------ | ----------------------------- | | SELinux user | `unconfined_u`, `staff_u` etc | | Role | `unconfined_r`, `staff_r` | | Type | `unconfined_t`, `staff_t` | | Level | MLS/MCS labels | --- ## ✅ **Stap 12: Maak een SELinux ‘confined’ gebruiker aan** bash sudo useradd -Z staff_u example.user sudo passwd example.user > Hiermee krijgt de gebruiker het **SELinux user label `staff_u`**, in plaats van `unconfined_u`. --- ## ✅ **Stap 13: Herstart de VM** bash sudo reboot --- ## ✅ **Stap 14: Log in als nieuwe gebruiker en bekijk context** Log in op de terminal als `example.user`, voer dan uit: bash id -Z Verwachte output: staff_u:staff_r:staff_t:s0 ✅ Dit betekent dat je gebruiker nu onder een **beperkte context** draait! --- ## 📋 **Samenvattende commando's** bash # Modus checken & wisselen getenforce sudo setenforce 0 sudo setenforce 1 sestatus # Logging sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today grep "SELinux is preventing" /var/log/messages # SELinux logins & gebruikers sudo semanage login -l sudo dnf install setools-console setroubleshoot-server seinfo -u seinfo -r id -Z # Gebruiker aanmaken met confined SELinux label sudo useradd -Z staff_u example.user sudo passwd example.user sudo reboot ---