Security-Enhanced Linux, of SELinux, is een kernel security module, om de beveiliging van een Linux-systeem te verbeteren. Het wordt standaard geïnstalleerd op op RedHat-gebaseerde systemen zoals CentOS, AlmaLinux, Rocky Linux en Fedora-installaties.
SELinux is geen firewall, maar heeft er wel raakvlak mee. Een firewall controleert verkeer van en naar een computer op een netwerk/het internet. SELinux controleert/beheert poort-toegang van programma's en is vooral bedoelt als extra aanvulling naast een firewall. Dit betekent als beheerder vooral dat als je bijvoorbeeld je SSH-poort aanpast, ook in SELinux die poort open moet staan voor de SSH-service.
Je kunt SELinux bijvoorbeeld gebruiken om network services te beperken tot een bepaalde port, of je Apache server tot port 80.
De status van SELinux controleren
Je controleert de status van SELinux met het commando:
sestatus
De output ziet er als volgt uit:
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
De belangrijkste zaken om te weten van dit overzicht zijn:
- Status: Geeft aan of SELinux aan staat (enabled), uit staat (disabled), of aan staat en waarschuwingen geeft, maar geen actie onderneemt (permissive).
- root directory: In deze map vind je de configuratiebestanden van SELinux
- Current mode: Toont enforcing als SELinux zijn policies uitvoert, of permissive als SELinux enkel waarschuwingen geeft.
SELinux aan- of uitzetten
Je kunt SELinux op twee manieren aan- of uitzetten:
- Tijdelijk, tot je je VPS herstart. Dit doe je met het commando:De enige opties hier zijn permissive of enforcing, waarbij in beide gevallen SELinux waarschuwingen geeft, maar bij permissive geen actie onderneemt.
setenforce permissive
- Permanent, maar hiervoor is een herstart van je VPS nodig. Open het config-bestand:Pas de regel SELINUX=enforcing aan. Je hebt de keuze uit enforcing, permissive, of disabled. Sla de wijzigingen daarna op en sluit het bestand (ctrl + x > y > enter).
nano /etc/selinux/config
Open poorten controleren
Je controleert de open poorten met het commando:
semanage port -l
Specifieke poorten
De output is vaak vrij groot. Als je wil weten of een specifieke poort open staat gebruik je:
semanage port -l | grep poortnummer
Vervang hier 'poortnummer' door het nummer van de poort die je daadwerkelijk wil controleren.
Specifiek type
Je kunt ook direct op poort-type (i.e. een specifiek programma/service) controleren met het commando:
semanage port -l | grep -w ssh_port_t
Waarbij je ssh vervangt door de gewenste service/software naam, bijvoorbeeld http_port_t
Poorten openen of dichtzetten
SELinux is bedoelt om specifiek de toegang van software te beheren. Wanneer je dus bij SELinux spreekt over poorten openen, gaat het om software/services toegang geven tot een poort.
Poorten openen
Je zet een poort open in SELinux met onderstaand commando, waarbij je ssh vervangt door de naam van de software/service (e.g. http_port_t) en 12345 door het daadwerkelijke poortnummer dat je open wil zetten.
semanage port --add -t ssh_port_t -p tcp 12345
- --add voegt de poort toe
- -t geeft het poort type aan, in dit voorbeeld ssh_port_t
- -p tcp specificeert het tcp protocol
- 12345 het poortnummer, gebruik de syntax 1234-1238 om een range te specificeren
Poorten sluiten
Poorten die onderdeel zijn van de SELinux policy, bijvoorbeeld poort 22, kun je niet sluiten. Overige poorten (e.g. zelf toegevoegde poorten) zet je dicht met het commando:
semanage port -d -t ssh_port_t -p tcp 12345
Verander hier ssh_port_t naar het daadwerkelijke poort type, bijvoorbeeld http_port_t en het poortnummer 12345 naar de gekozen poort.
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.