Toon paginaOude revisiesReferentiesTerug naar boven Deze pagina is alleen-lezen. Je kan de broncode bekijken maar niet veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt. # π‘οΈ SELinux **SELinux (Security-Enhanced Linux)** vormt een aanvullende beveiligingslaag binnen de Tulpencraft-infrastructuur. Op de Tulpencraft-servers wordt SELinux gebruikt als **Mandatory Access Control (MAC)**-mechanisme bovenop de normale Linux-bestandsrechten, gebruikersrechten en firewall. Het uitgangspunt is: > **SELinux blijft ingeschakeld en draait in Enforcing-modus.** Hierdoor kan een proces niet automatisch alles uitvoeren waartoe de onderliggende Linux-gebruiker toegang heeft. SELinux bepaalt aanvullend welke acties een proces volgens het beveiligingsbeleid mag uitvoeren. --- ## π SELinux-modus Rocky Linux 10 wordt standaard met SELinux ingeschakeld en in de aanbevolen **Enforcing-modus** gebruikt. In deze modus worden overtredingen van het SELinux-beleid daadwerkelijk geblokkeerd. De drie mogelijke modi zijn: | Modus | Gedrag | Tulpencraft | | -------------- | ----------------------------------------------------------------- | :-----------------: | | **Enforcing** | Acties worden gecontroleerd en verboden acties worden geblokkeerd | β | | **Permissive** | Overtredingen worden gelogd maar niet geblokkeerd | β οΈ Alleen tijdelijk | | **Disabled** | SELinux is volledig uitgeschakeld | β | Voor productieomgevingen is **Enforcing** de gewenste configuratie. --- ## π Status controleren De huidige SELinux-status kan worden gecontroleerd met: ```bash getenforce ``` Verwachte output: ```text Enforcing ``` Voor uitgebreidere informatie: ```bash sestatus ``` Hiermee kan onder andere worden gecontroleerd: * of SELinux actief is; * welke modus wordt gebruikt; * welk policytype actief is; * welke policyversie wordt gebruikt. --- ## βοΈ Configuratie De permanente SELinux-configuratie staat in: ```text /etc/selinux/config ``` De relevante instellingen zijn: ```text SELINUX=enforcing SELINUXTYPE=targeted ``` Voor Tulpencraft is `targeted` het uitgangspunt. De `targeted` policy richt SELinux-beperkingen voornamelijk op specifieke systeemdiensten en processen, terwijl normale gebruikersprocessen niet op dezelfde manier worden beperkt. --- ## π§± Enforcing In Enforcing-modus worden SELinux-regels daadwerkelijk afgedwongen. Wanneer een proces bijvoorbeeld probeert: * een bestand te lezen waarvoor het geen SELinux-toegang heeft; * een bestand te wijzigen; * een niet-toegestane netwerkactie uit te voeren; * een service op een niet-geconfigureerde manier te gebruiken; kan SELinux de actie blokkeren. Dit gebeurt onafhankelijk van de normale Unix-bestandsrechten. ```text Linux permissies β βΌ mag proces deze actie? β βΌ SELinux β βΌ mag deze context dit? β βββββ΄ββββ β β JA NEE β β βΌ βΌ toestaan blokkeren ``` --- ## π§ͺ Permissive voor troubleshooting Permissive-modus kan tijdelijk worden gebruikt wanneer een applicatie door SELinux wordt geblokkeerd en eerst moet worden onderzocht wat er gebeurt. Tijdelijk naar permissive: ```bash sudo setenforce 0 ``` Controleren: ```bash getenforce ``` Terug naar Enforcing: ```bash sudo setenforce 1 ``` Een wijziging met `setenforce` is tijdelijk en blijft niet automatisch behouden na een reboot. > **Permissive is geen permanente oplossing.** Als een applicatie alleen in permissive werkt, moet worden onderzocht **waarom SELinux de actie blokkeert** en moet de onderliggende configuratie worden gecorrigeerd. --- ## π« SELinux niet uitschakelen SELinux wordt binnen Tulpencraft **niet uitgeschakeld om applicatieproblemen op te lossen**. Dus niet: ```text SELINUX=disabled ``` en ook niet permanent booten met SELinux uitgeschakeld. Het uitschakelen van SELinux verwijdert een belangrijke beveiligingslaag en maakt het bovendien moeilijker om SELinux later correct opnieuw in te schakelen. --- ## π§βπ» Minecraft en Java De belangrijkste applicaties binnen Tulpencraft zijn Java-gebaseerd. Onder andere: * Velocity; * Paper; * Minecraft; * Citizens; * LobbyPlugin; * andere Java-gebaseerde plugins en services. SELinux hoeft hiervoor normaal gesproken niet uitgeschakeld te worden. De Minecraft-processen moeten toegang krijgen tot hun eigen configuratie-, wereld-, plugin- en logbestanden volgens de normale Linux- en SELinux-beveiligingsregels. --- ## π SELinux-bestandscontexten SELinux gebruikt zogenaamde **security contexts** om bestanden en processen te identificeren. Een context kan worden bekeken met: ```bash ls -Z ``` Bijvoorbeeld: ```text -rw-r--r--. root root system_u:object_r:var_t:s0 bestand ``` De context bevat onder andere: ```text user:role:type:level ``` Voor de meeste praktische SELinux-problemen is vooral het **type** belangrijk. --- ## π Context herstellen Wanneer een bestand of directory de verkeerde SELinux-context heeft gekregen, kan deze worden hersteld met: ```bash sudo restorecon -Rv /pad/naar/bestand ``` Voor een volledige directory: ```bash sudo restorecon -Rv /srv/minecraft ``` `restorecon` past de context aan naar de standaard SELinux-context die voor dat pad is gedefinieerd. Dit is vaak de juiste eerste oplossing wanneer een SELinux-probleem wordt veroorzaakt door een verkeerde labeling. --- ## π·οΈ Aangepaste directories Tulpencraft gebruikt onder andere niet-standaard locaties voor Minecraft-data, bijvoorbeeld: ```text /srv/minecraft/ ``` Wanneer een service toegang nodig heeft tot een niet-standaard directory, moet eerst worden gecontroleerd of de SELinux-context correct is. Een verkeerde context is een veelvoorkomende oorzaak van SELinux-denials. De juiste aanpak is: ```text Probleem β βΌ Context controleren β βΌ Verkeerde context? β βββ Ja βββΊ semanage fcontext β β β βΌ β restorecon β βββ Nee βββΊ beleid verder onderzoeken ``` Red Hat adviseert bij dit soort problemen eerst labeling en configuratie te controleren voordat een eigen SELinux-policy wordt gemaakt. --- ## π§© semanage Voor permanente aangepaste file contexts wordt `semanage` gebruikt. Bijvoorbeeld: ```bash sudo semanage fcontext -a -t <SELINUX_TYPE> "/srv/minecraft(/.*)?" ``` Daarna: ```bash sudo restorecon -Rv /srv/minecraft ``` Hierdoor wordt de aangepaste context onderdeel van de SELinux-configuratie en kan deze na een relabeling opnieuw worden toegepast. > Gebruik geen tijdelijke `chcon`-oplossing als de wijziging permanent moet zijn. Leg permanente contexts vast met `semanage`. --- ## π SELinux-denials onderzoeken Wanneer SELinux een actie blokkeert, wordt dit doorgaans geregistreerd als een **AVC (Access Vector Cache) denial**. De recente denials kunnen worden bekeken met: ```bash sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today ``` Dit is ook de door Red Hat beschreven methode om SELinux-denials te onderzoeken. Een compactere controle: ```bash sudo ausearch -m AVC -ts recent ``` --- ## π§ audit2why Voor het analyseren van een denial kan `audit2why` worden gebruikt: ```bash sudo ausearch -m AVC -ts recent | audit2why ``` Hiermee kan worden onderzocht **waarom** SELinux een bepaalde actie heeft geweigerd. Dit is vooral nuttig wanneer uit de AVC-melding niet direct duidelijk is welke policy of context het probleem veroorzaakt. --- ## β οΈ audit2allow niet blind gebruiken `audit2allow` kan SELinux-policyregels genereren waarmee een denial wordt toegestaan. Dat betekent echter niet automatisch dat de gegenereerde regel veilig of correct is. Daarom geldt binnen Tulpencraft: > **`audit2allow` is een laatste stap, niet de eerste oplossing.** Eerst controleren: 1. Is de bestandscontext correct? 2. Is de service correct geconfigureerd? 3. Wordt een niet-standaard directory gebruikt? 4. Is een SELinux boolean beschikbaar? 5. Is de netwerk- of poortconfiguratie correct? 6. Is er daadwerkelijk sprake van een ontbrekende policyregel? Pas daarna wordt een eigen policy overwogen. Red Hat waarschuwt eveneens om niet direct `audit2allow` te gebruiken zonder eerst labeling en configuratie te controleren. --- ## π§° Nuttige commando's ### Status ```bash getenforce sestatus ``` ### Context bekijken ```bash ls -Z ``` ### Context herstellen ```bash sudo restorecon -Rv /pad ``` ### File-contextregels bekijken ```bash sudo semanage fcontext -l ``` ### SELinux-booleans bekijken ```bash getsebool -a ``` ### Denials bekijken ```bash sudo ausearch -m AVC -ts recent ``` ### Denials analyseren ```bash sudo ausearch -m AVC -ts recent | audit2why ``` --- ## π SELinux en netwerkpoorten SELinux kan naast firewalld ook invloed hebben op netwerkservices. Een firewallpoort kan dus geopend zijn terwijl SELinux een service alsnog verhindert om die poort op de gewenste manier te gebruiken. Dit zijn twee verschillende beveiligingslagen: ```text Internet β βΌ π₯ firewalld β βΌ Netwerkverbinding β βΌ π‘οΈ SELinux β βΌ Applicatie ``` Daarom moet bij netwerkproblemen worden gecontroleerd: * luistert de applicatie? * staat de poort open in firewalld? * staat SELinux de activiteit toe? * klopt de SELinux-poortcontext? Voor services die op niet-standaard poorten luisteren kan `semanage port` nodig zijn. --- ## π₯ Relatie met firewall SELinux en firewalld vervangen elkaar niet. | Beveiligingslaag | Functie | | -------------------- | ------------------------------------------------------------------- | | π₯ firewalld | Bepaalt welke netwerkverbindingen worden toegestaan | | π‘οΈ SELinux | Bepaalt welke processen en objecten bepaalde acties mogen uitvoeren | | π Linux permissions | Regelt traditionele gebruikers-, groep- en bestandsrechten | | π€ SSH-hardening | Beperkt beheerstoegang | | π« Backend isolation | Voorkomt directe toegang tot Minecraft-backends | Samen vormen deze lagen de host-level beveiliging van Tulpencraft. --- ## π Updates en SELinux SELinux-policy wordt samen met de normale Rocky Linux-updates onderhouden. Updates controleren: ```bash sudo dnf check-update ``` Systeemupdates: ```bash sudo dnf update ``` Na updates moet worden gecontroleerd of kritieke Tulpencraft-services nog correct functioneren. Bij onverwacht gedrag: ```bash getenforce sudo ausearch -m AVC -ts recent ``` --- ## π¨ Bij problemen Wanneer een Minecraft- of systeemservice plotseling niet meer werkt: ### 1. Controleer de service ```bash sudo systemctl status <service> ``` ### 2. Controleer SELinux ```bash getenforce ``` ### 3. Controleer recente AVC's ```bash sudo ausearch -m AVC -ts recent ``` ### 4. Analyseer de melding ```bash sudo ausearch -m AVC -ts recent | audit2why ``` ### 5. Controleer file contexts ```bash ls -Z /pad/naar/bestand ``` ### 6. Herstel indien nodig ```bash sudo restorecon -Rv /pad ``` Pas wanneer bovenstaande controles geen oplossing bieden, wordt onderzocht of een specifieke SELinux-aanpassing noodzakelijk is. --- ## π Toekomstige infrastructuur Wanneer Tulpencraft verder wordt opgesplitst over meerdere VM's en Proxmox-nodes blijft SELinux onderdeel van de standaard hardening. Iedere Rocky Linux VM krijgt daarbij in principe: ```text Rocky Linux 10 β βββ π₯ firewalld β βββ π‘οΈ SELinux Enforcing β βββ π SSH-hardening β βββ π automatische/periodieke updates β βββ π logging & monitoring ``` Hierdoor blijft de beveiligingsbasis zoveel mogelijk gelijk tussen de verschillende Tulpencraft-servers. --- ## β Beveiligingsprincipes Binnen Tulpencraft gelden voor SELinux de volgende uitgangspunten: 1. **SELinux staat ingeschakeld.** 2. **Enforcing is de standaardmodus.** 3. Permissive wordt alleen tijdelijk gebruikt voor troubleshooting. 4. SELinux wordt niet permanent uitgeschakeld om applicatieproblemen op te lossen. 5. File contexts worden gecontroleerd bij toegangsproblemen. 6. Permanente aangepaste contexts worden met `semanage` vastgelegd. 7. `restorecon` wordt gebruikt om verkeerde contexts te herstellen. 8. AVC-denials worden onderzocht voordat policywijzigingen worden gemaakt. 9. `audit2allow` wordt niet blind toegepast. 10. SELinux vormt samen met firewalld en Linux permissions een gecombineerde beveiligingslaag. --- ## π Gerelateerde documentatie * [[technische-infrastructuur:overzicht|Technische infrastructuur]] * [[technische-infrastructuur:rocky-linux-10|Rocky Linux 10]] * [[technische-infrastructuur:os-installatie|OS-installatie]] * [[technische-infrastructuur:server-hardening|Server hardening]] * [[technische-infrastructuur:firewall|Firewall]] * [[technische-infrastructuur:systemd|systemd]] * [[technische-infrastructuur:monitoring|Monitoring & logging]] --- ## π Externe documentatie Voor de technische werking en troubleshooting van SELinux wordt de officiΓ«le documentatie van Red Hat Enterprise Linux 10 als primaire referentie gebruikt. De SELinux-documentatie van RHEL 10 is inhoudelijk relevant voor Rocky Linux 10 vanwege de gedeelde Enterprise Linux-basis. technische-infrastructuur/selinux.txt Laatst gewijzigd: 2026/08/23 11:02door rroethof