Volledige handleiding voor het verbeteren van de beveiliging in Linux

SELinux (Security-Enhanced Linux) is een op beleid gebaseerd toegangscontrolesysteem dat een extra laag beveiliging biedt op Linux-systemen. Het is vooral nuttig in hoogbeveiligde omgevingen of voor servers die aan internet zijn blootgesteld. Hieronder worden de belangrijkste aspecten van geavanceerde SELinux-configuratie uiteengezet, inclusief beleid, modi en tips voor probleemoplossing.

1. SELinux-modi

SELinux heeft drie hoofdwerkingsmodi:

  • Enforcing: De modus waarin SELinux actief is en alle beleidsregels afdwingt. Het blokkeert elke actie die niet uitdrukkelijk is toegestaan.
  • Permissive: In deze modus blokkeert SELinux geen acties, maar registreert het alle beleidsschendingen in het systeem. Het is handig voor debuggen en het afstellen van beleid voordat een productiemodus wordt geïmplementeerd.
  • Disabled: SELinux is uitgeschakeld. Beleidsregels worden niet toegepast of geregistreerd.

Om de huidige modus van SELinux te verifiëren:

sestatus

Om de modus van SELinux tijdelijk te wijzigen (zonder te herstarten):

setenforce 0  # Verander naar Permissive
setenforce 1 # Verander naar Enforcing

Om de modus van SELinux permanent te wijzigen, bewerk het configuratiebestand in /etc/selinux/config:

SELINUX=enforcing  # Wijzig in permissive of disabled indien nodig

2. SELinux-beleid

Het beleid in SELinux bepaalt welke acties zijn toegestaan en welke niet. Er zijn drie hoofdtypen beleid:

  • Targeted: Het standaardbeleid in de meeste Linux-distributies. Het beschermt de meest gangbare systeemdiensten en laat andere processen in een meer permissieve modus werken.
  • MLS (Multi-Level Security): Een strenger beleid dat classificatieniveaus en categorisatie gebruikt, meestal voor hoogbeveiligde systemen.
  • MCS (Multi-Category Security): Vergelijkbaar met MLS, maar met beveiligingscategorieën in plaats van strikte niveaus. Het is nuttig voor virtualisatie en containersystemen.

Om het actieve beleid te verifiëren:

sestatus | grep "Policy"

3. SELinux-contexten

Elk bestand, proces en poort in SELinux heeft een veiligheidscontext, die meestal omvat:

  • Gebruiker (user)
  • Rol (role)
  • Type (type)
  • Niveau (level), voor MLS/MCS-beleid.

Bijvoorbeeld, in een bestandscontext, system_u:object_r:httpd_sys_content_t:s0, het type (httpd_sys_content_t) bepaalt welke acties een dienst kan uitvoeren op het bestand.

Om de context van een bestand te bekijken:

ls -Z /pad/naar/bestand

Om de context van een bestand te wijzigen:

chcon -t nieuw_type /pad/naar/bestand

Voorbeeld om een bestand toegankelijk te maken door Apache:

chcon -t httpd_sys_content_t /var/www/html/index.html

Om de verandering permanent te maken, moet je semanage gebruiken:

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html

4. SELinux-beheertools

  • semanage: Stelt blijvende SELinux-instellingen in zoals bestandscontexten, poorten en meer.
    semanage fcontext -l # Lijst bestandscontexten semanage port -l # Lijst poorten en hun types
  • restorecon: Herstelt de bestandscontexten naar hun standaardwaarden volgens het beleid.
    restorecon -Rv /pad/naar/directory
  • getsebool en setsebool: Beheren de booleans, die bepaalde SELinux-regels in- of uitschakelen zonder direct beleid aan te passen.
    getsebool -a # Lijst alle booleans setsebool httpd_enable_homedirs on # Apache toestaan om toegang te hebben tot home-mappen

5. Configureren van Booleans in SELinux

Booleans zijn een manier om het gedrag van SELinux aan te passen zonder direct het beleid te wijzigen. Bijvoorbeeld, om Apache toe te staan om gebruikersbestanden te benaderen:

setsebool -P httpd_enable_homedirs on

Om specifieke Booleans van een service (zoals httpd) te lijsten:

getsebool -a | grep httpd

6. Probleemoplossing in SELinux

Wanneer SELinux een actie blokkeert, genereert het een bericht in het systeemlogboek (/var/log/audit/audit.log). Om deze berichten te interpreteren en voorgestelde oplossingen te genereren, gebruik je ausearch of audit2why:

ausearch -m avc -ts today             # Bekijk de inbreuken van vandaag
cat /var/log/audit/audit.log | audit2why # Verklaar recente inbreuken

Als u deze overtredingen wilt omzetten in beleidsuitzonderingen voor SELinux, gebruik dan audit2allow:

cat /var/log/audit/audit.log | audit2allow -M naam_module
semodule -i naam_module.pp

7. Creëren van aangepaste beleidsmodules

In geavanceerde gevallen kan het nodig zijn om aangepaste beleidsmodules te creëren om specifieke acties toe te staan zonder SELinux uit te schakelen. Modules worden gecreëerd met behulp van audit2allow en vervolgens geïnstalleerd met semodule:

cat /var/log/audit/audit.log | audit2allow -M custom_policy
semodule -i custom_policy.pp

8. Aanbevelingen voor een geavanceerde configuratie van SELinux

  • Regelmatig de SELinux-logs monitoren: Gebruik ausearch of audit2why om incidenten te identificeren en te analyseren.
  • Implementeer booleans voor veelvoorkomende configuraties: Booleans zijn een effectieve manier om aanpassingen te maken zonder aangepaste beleidsregels te creëren.
  • Testen in permissive-modus: Voordat je restrictieve beleidsregels in enforcing-modus toepast, test deze in permissive-modus om de impact te evalueren zonder diensten te onderbreken.
  • Gebruik aangepaste beleidsregels indien nodig: Voor speciale configuraties of specifieke software laten aangepaste modules toe om SELinux aan te passen aan de exacte behoeften van het systeem.

Met een geavanceerde configuratie van SELinux is het mogelijk om kritische systemen te beschermen en een gedetailleerde controle te garanderen over wie en wat toegang heeft tot systeembronnen. Door deze stappen te volgen, kunnen beheerders en beveiligingsteams het volledige potentieel van SELinux benutten om de integriteit en beveiliging te handhaven in Linux-omgevingen met hoge eisen.

via: SELinux op Systeembeheer

Scroll naar boven