Product SiteDocumentation Site

Hoofdstuk 2. Inleiding

2.1. Voordelen van het draaien van SELinux
2.2. Voorbeelden
2.3. SELinux architectuur
2.4. SELinux in andere operating systemen
Bestanden, zoals mappen en apparaten, worden objecten genoemd. Processen, zoals een gebruiker die een commando draait of de Mozilla® Firefox® toepassing worden subjecten genoemd. De meeste operating systemen gebruiken een Discretionary Access Control (DAC) (toegangscontrole naar goeddunken) systeem dat controleert hoe subjecten omgaan met objecten en hoe subjecten omgaan met elkaar. In operating systemen die DAC gebruiken, controleren gebruikers de toegangsrechten van bestanden (objecten) waarvan zij eigenaar zijn. Bijvoorbeeld, in Linux® operating systemen, kunnen gebruikers hun persoonlijke mappen leesbaar voor de wereld maken, en kunnen zij gebruikers en processen (subjects) toegang geven tot potentieel gevoelige informatie.
DAC mechanismes zijn fundamenteel onvoldoende voor een sterke systeem beveiliging. DAC toegangsbeslissingen zijn alleen gebaseerd op gebruikers identiteit en eigendom, en negeren andere informatie die relevant is voor beveiliging, zoals de rol van de gebruiker, de functie en betrouwbaarheid van het programma, en de gevoeligheid en integriteit van de data. Elke gebruiker heeft volledige vrijheid over zijn bestanden, wat het onmogelijk maakt om een systeem-brede beveiligings tactiek af te dwingen. Verder erft elk programma dat door een gebruiker gedraaid wordt alle toegangsrechten die aan die gebruiker gegeven zijn en kan het toegang tot de bestanden van de gebruiker veranderen, dus wordt er geen bescherming geboden tegen kwaadwillige software. Veel systeem voorzieningen en bevoorrechte programma's moeten draaien met grof-korrelige voorrechten die hun vereiste ver overschrijden, zodat een mankement in elk van deze programma's benut kan worden om complete systeem toegang te krijgen.[1]
Het volgende is een voorbeeld van rechten gebruikt in Linux operating systemen die niet mogelijk zijn in Security-Enhanced Linux (SELinux). De rechten in deze voorbeelden kunnen verschillen van jouw systeem. Gebruik het ls -l commando om de bestandsrechten te zien:
$ ls -l file1
-rwxrw-r-- 1 user1 group1 0 2009-04-30 15:42 file1
De eerste drie rechten bits, rwx, controleren de toegang die de Linux user1 gebruiker (in dit geval de eigenaar) heeft voor file1. De volgende drie rechten bits, rw-, controleren de toegang die de Linux group1 groep heeft voor file1. De laatste drie rechten bits, r--, controleren de toegang die alle anderen hebben voor file1, wat alle gebruikers en processen omvat.
Security-Enhanced Linux (SELinux) voegt Mandatory Access Control (MAC) (verplichte toegangs controle) toe aan de Linux kernel, en is standaard aangezet in Fedora. Een MAC architectuur voor algemene doeleinden heeft de mogelijkheid nodig om een door beheerders opgestelde beveiligings tactiek af te dwingen voor alle processen en bestanden op het systeem, waarbij beslissingen gebaseerd worden op labels die een verscheidenheid aan informatie bevatten die voor beveiling relevant is. Als dit correct geimplementeerd is, staat dit een systeem toe zich afdoende te verdedigen en biedt kritische ondersteuning voor beschermning tegen het knoeien met, of het omheen gaan van, beveiligde toepassingen. MAC biedt een sterke scheiding aan voor toepassingen wat het veilig uitvoeren van onbetrouwbare toepassingen toestaat. Zijn mogelijkheid om de rechten van draaiende processen te beperken, beperkt de reikwijdte van potentiele schade die het resultaat kan zijn van de uitbuiting van kwetsbaarheden in toepassingen en systeem voorzieningen. MAC staat toe dat informatie beschermd wordt tegen legitieme gebruikers met beperkte toestemming en ook tegen gemachtigde gebruikers die onbedoeld kwaadwillige toepassingen uitvoeren.[2]
Het volgende is een voorbeeld van de labels die beveilings-relevantie informatie bevatten die worden gebruikt voor processen, Linux gebruikers, en bestanden in Linux operating systemen die SELinux draaien. Deze informatie wordt de SELinux context genoemd, en kan getoond worden met gebruik van het ls -Z commando:
$ ls -Z file1
-rwxrw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0      file1
In dit voorbeeld, biedt SELinux een gebruiker (unconfined_u), een rol (object_r), een type (user_home_t), en een niveau (s0) aan. Deze informatie wordt gebruikt om toegangscontrole beslissingen te maken. Met DAC kan de toegang alleen maar gecontroleerd worden op basis van de gebruiker en groep ID's. De SELinux tactiekregels worden gecontroleerd na de DAC regels. SELinux tactiekregels worden niet gebruikt als DAC reeds toegang weigert.
Linux en SELinux gebruikers
Op Linux operating systemen die SELinux draaien, zijn er zowel Linux gebruikers als SELinux gebruikers. SELinux gebruikers zijn onderdeel van de SELinux tactiek. Linux gebruikers zijn afgebeeld op SELinux gebruikers. Om verwarring te vermijden, gebruikt deze gids "Linux gebruiker" en "SELinux gebruiker" om tussen deze twee verschil te maken.

2.1. Voordelen van het draaien van SELinux

  • Alle processen en bestanden zijn gelabeld met een type. Een type definieert het domein voor processen en een type voor bestanden. Processen zijn van elkaar gescheiden door ze ieder in hun eigen domein te draaien, en SELinux tactiekregels bepalen hoe processen omgaan met bestanden, en ook hoe processen omgaan met elkaar. Toegang is alleen toegestaan als er een SELinux tactiekregel bestaat die dat specifiek toestaat.
  • Fijn-korrelige toegangs controle. Door verder te gaan dan de traditionele UNIX® rechten die gecontroleerd worden door het oordeel van de gebruiker en gebaseerd zijn op Linux gebruiker en groep ID's, zijn SELinux toegangs beslissingen gebaseerd op alle beschikbare informatie, zoals een SELinux gebruiker, rol, type en, optioneel, een niveau.
  • SELinux tactiek is gedefinieerd op beheersniveau, wordt systeem-breed afgedwongen, en wordt niet ingesteld door het oordeel van de gebruiker.
  • Verminderde gevoeligheid voor rechten escalatie aanvallen. Een voorbeeld: omdat processen in domeinen draaien, en daarom van elkaar gescheiden zijn, en SELinux tactiek regels bepalen hoe processen toegang hebben tot bestanden en andere processen; als dan een proces gecompromitteerd wordt, heeft de aanvaller alleen toegang tot de normale functie van dat proces, en tot bestanden waarvoor het proces ingesteld is om toegang tot te hebben. Bijvoorbeeld, als de Apache HTTP server gecompromitteerd is, kan een aanvaller dat proces niet gebruiken om bestanden te lezen in persoonlijke mappen, behalve als een specifieke SELinux tactiekregel was toegevoegd of ingesteld die deze toegang toestaat.
  • SELinux kan gebruikt worden om data vertrouwelijkheid en integriteit af te dwingen, en ook om processen te beschermen voor niet vertrouwde input.
SELinux is niet:
  • antivirus software.
  • een vervanging voor wachtwoorden, firewall, of andere beveiligings systemen.
  • een alles inbegrepen beveiligings oplossing.
SELinux is ontworpen om bestaande beveiligings oplossingen te versterken, niet om ze te vervangen. Zelfs als je SELinux draait, ga dan door met het opvolgen van goede beveilings praktijken, zoals de software up-to-date houden, moeilijk te raden wachtwoorden te gebruiken, firewall, enzovoort


[1] "Integrating Flexible Support for Security Policies into the Linux Operating System", door Peter Loscocco en Stephen Smalley. Dit artikel was oorspronkelijk gemaakt voor de National Security Agency en is dus in het publieke domein. Refereer naar het originele artikel voor details en het document zoals het eerst is vrijgegeven. Alle aanpassingen en veranderingen zijn gedaan door Murray McAllister.

[2] "Meeting Critical Security Objectives with Security-Enhanced Linux", door Peter Loscocco en Stephen Smalley. Dit artikel was oorspronkelijk gemaakt voor de National Security Agency en is dus in het publieke domein. Refereer naar het originele artikel voor details en het document zoals het eerst was vrijgegeven. Alle aanpassingen en veranderingen zijn gemaakt door Murray McAllister.