Wat is SELinux ?
SELinux is een toevoeging aan de Linux–kernel, om voor een optimale beveiliging van je systeem te zorgen. SELinux werkt met Mandatory Acces Control (MAC), d.w.z. dat voor elk programma regels worden opgesteld met wat een programma kan doen. Of je nu root-rechten hebt of niet, zonder dat die regels ingesteld zijn kan een programma geen veranderingen op het systeem aanbrengen. Virussen, Trojans, en andere ongewenste software maken daardoor geen kans. Ook een hacker dat een bug in een programma wil uitbuiten, wordt gelimiteerd in zijn/haar vrijheid door SELinux. Het totaal van de regels van SELinux wordt de SELinux policy genoemd.
CentOS, Red Hat Enterprise Linux en Fedora beschikken standaard over SELinux.
Permissive of enforcing?
Een Linux-systeem dat in productie is moet een zo hoog mogelijk veiligheidsniveau hebben. Daarom is het van belang dat SELinux altijd een enforcing policy kent. Als je SELinux niet goed hebt geconfigureerd, kan dat een belemmering zijn voor het functioneren van je systeem. Ook kunnen netwerkproblemen optreden bij een onjuiste configuratie.
Als je bezig bent met het herinrichten of debuggen van je systeem, is het niet handig om SELinux op de enforcing mode te hebben. In dat geval kan je beter kiezen voor de mode permissive.
Je kunt de huidige staat van SELinux opvragen met het commando sestatus:
$ sestatus
Het resultaat van bovenstaande commando zal zoiets zijn als:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: strict
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: disabled
Policy deny_unknown status: denied
Max kernel policy version: 28
Wil je wisselen tussen permissive en enforcing?
Zet SELinux op permissive:
$ setenforce 0
Zet SELinux op enforcing:
$ setenforce 1
Gebruikers en rollen
Linux is onder andere groot geworden vanwege het geavanceerde rechtersysteem en de veiligheid & stabiliteit die dat met zich meebrengt. SELinux doet daar een schepje bovenop door roles en domains te introduceren.
Een in SELinux gedefinieerde rol bepaald welke gebruikers bepaalde bevoegdheden krijgen. Vervolgens wordt iedere rol aan een domain toegekend. In het domain staat gedefinieerd waar de gebruikers met de geselecteerde rollen toegang tot moeten krijgen. Daarnaast staat in het domain gedefinieerd welk type bestanden bewerkt kan worden. Het grote voordeel van dit systeem is dat een hacker die door een lek in bijv. PHP toegang heeft gekregen, alsnog gebonden is van het bovenliggende SELinux beleid.
https://www.digitalocean.com/community/tutorials/an-introduction-to-selinux-on-centos-7-part-1-basic-concepts
Standaard SELinux instellingen
SELinux komt standaard met een policy dat je naar wens kunt modificeren. Daarnaast biedt SELinux een aantal tools om je policy mee te beheren. Onderstaande pakketten zijn onderdeel van SELinux, maar worden niet altijd standaard geïnstalleerd. Het is raadzaam on onderstaande lijst eens te bekijken. De package manager van je Linux-distributie biedt doorgaans al onderstaande pakketten aan:
- policycoreutils: tools voor het managen van je SELinux policy.
- policycoreutils-python: in Python geschreven tools voor het managen van je policy.
- selinux-policy: het standaard SELinux-policy dat je als referentie zou kunnen gebruiken.
- selinux-policy-targeted: een policy dat ervoor zorgt dat ieder proces alleen binnen zijn eigen domein kan werken.
- setroubleshoot-server : een tool voor het faciliteren van de logbestanden van SELinux.
- setools: biedt tools voor het monitoren van log bestanden, het uitvragen van je policy en file context management.