Security Enhanced Linux
De student(e) kan:
SELinux fouten vinden in de logs.
SELinux contexten en booleans aanpassen met de gepaste commando's
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
SELinux (Security Enhanced Linux) is een beveiligingssysteem dat toegang beheert voor bestanden, processen, netwerk poorten...
SELinux gebruikt MAC (Mandatory Access Control). Dit betekent dat de toegang tot bestanden en processen wordt beheerd door het systeem, niet door de gebruiker.
DAC, ACL en MAC
DAC (Discretionary Access Control) is het standaard beveiligingsmodel in Linux. De eigenaar van een bestand of map bepaalt wie wat kan doen met het bestand of de map. Dit gebeurt met behulp van de lees, schrijf en uitvoer rechten.
Commando's zoals chmod
en chown
worden gebruikt om deze rechten te beheren.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
ACL (Access Control List) is een uitbreiding van DAC. Het stelt de gebruiker in staat om meer gedetailleerde rechten toe te kennen aan bestanden en mappen.
ACL's kunnen worden beheerd met de commando's getfacl
en setfacl
.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
MAC (Mandatory Access Control) is een beveiligingsmodel dat beheerd wordt door het systeem.
Het systeem bepaalt wie wat kan doen met bestanden, processen, netwerk poorten...
In SELinux kan de gebruiker wel bepaalde instellingen aanpassen, maar niet alles.
Hoe werkt SELinux?
Modi en types
Er zijn drie manieren waarop SELinux kan werken:
Disabled: SELinux is uitgeschakeld.
Permissive: SELinux is ingeschakeld, maar blokkeert niets. Het logt wel gebeurtenissen.
Enforcing: SELinux is ingeschakeld. Het logt en blokkeert gebeurtenissen.
Daarnaast zijn er drie soorten types:
Targeted: Services met hoge risico's worden beveiligd. Het standaard type.
Minimum: Minimale beveiliging. Bijna alles wordt toegestaan.
MLS (Multi-Level Security): Beveiliging op basis van niveaus. Wordt niet vaak gebruikt.
De status van SELinux kan worden bekeken met het commando sestatus
.
Om permanent de modus en het type van SELinux te veranderen, kan je het configuratiebestand /etc/selinux/config
aanpassen.
Contexten
SELinux maakt gebruik van contexten. Een context is een set van attributen die aan een object worden toegekend. Deze attributen bepalen hoe het object kan worden gebruikt.
Een voorbeeld van een context is:
Een SELinux gebruiker is niet hetzelfde als een Linux gebruiker.
SELinux gebruikt dit om te bepalen welke SELinux rollen de gebruiker kan hebben. Bepaalde gebruikers hebben ook restricties op bijvoorbeeld gebruik van sudo.
system_u
is een systeemgebruiker. Dit is niet geassocieerd met een gebruiker maar met een systeemproces zoals ssh.unconfined_u
is de standaard SELinux gebruiker voor Linux gebruikers. Deze gebruiker heeft bijna geen restricties.user_u
is een beperkte SELinux gebruiker. Deze gebruiker heeft geen administrator rechten.sysadm_u
is een administratieve gebruiker die alleen bedoeld is voor administratieve commando's.staff_u
is een administratieve gebruiker die bedoeld is voor administratieve en niet administratieve commando's.root
is de root gebruiker van het systeem.guest_u
is een beperkte SELinux gebruiker die bedoeld is voor gastgebruikers.
Een SELinux rol bepaalt welke types de gebruiker permissie heeft om te gebruiken.
Commando's
getenforce
toont de huidige modus van SELinux.
setenforce
verandert tijdelijk de modus van SELinux.
sestatus
toont de gedetailleerde status van SELinux.
getsebool -a
toont SELinux booleans.
setsebool
wijzigt SELinux booleans.
ls -Z
toont de SELinux context van bestanden en mappen.
restorecon
herstelt de SELinux context van bestanden en mappen naar de standaard context.
chcon
wijzigt tijdelijk de SELinux context van een bestand of map.
semanage
wordt gebruikt om SELinux contexten en booleans aan te passen.
sealert -a /var/log/audit/audit.log
analyseert SELinux logs en geeft suggesties voor oplossingen.
Oefeningen
1. Maak een bestand test.html aan in je homedirectory. Pas de context van dit bestand aan zodanig dat httpd deze context kan lezen.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2. Pas SELinux zodanig aan dat het httpd bestanden uit je homedirectory permanent kan lezen.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
3. Zorg ervoor dat httpd mails kan versturen.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
4. Stel dat je een website hebt geïnstalleerd waarbij er lees/schijfrechten nodig zijn voor de directory /var/www/html/platform. Hoe wijzig je SELinux zodanig dat er lees/schijfrechten zijn voor de directory platform?
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
5. Je wil SELinux alleen in loggende modus gebruiken. Hoe stel je dit in?