Product SiteDocumentation Site

Hoofdstuk 3. SELinux context

3.1. Domein overgangen
3.2. SELinux context voor processen
3.3. SELinux context voor gebruikers
Processen en bestanden worden gelabeld met een SELinux context die extra informatie bevat, zoals een SELinux gebruiker, rol, type, en, optioneel, een niveau. Als SELinux gedraaid wordt, wordt al deze informatie gebruikt om toegangs contole beslissingen te maken. In Fedora 11, biedt SELinux een combinatie van Role-Based Access Contol (RBAC) (toegangscontrole gebaseerd op rol), Type Enforcement® (TE) (type afdwinging), en, optioneel, Multi-Level Security (MLS) (multi-niveau beveiliging)
Het volgende is een voorbeeld SELinux context. SELinux context wordt gebruikt voor processen, Linux gebruikers, en bestanden in Linux operating systemen die SELinux draaien. Gebruik het ls -Z commando om de SELinux context van bestanden en mappen te zien:
$ ls -Z file1
-rwxrw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0      file1
SELinux context volgt de SELinux gebruiker:rol:type:niveau syntax:
SELinux gebruiker
De SELinux gebruiker identiteit is een identiteit die bekend is aan de tactiek en die gemachtigd is voor een specifieke verzameling van rollen, en voor een specifieke MLS reeks. Iedere Linux gebruiker wordt afgebeeld op een SELinux gebruiker via SELinux tactiek. Dit staat Linux gebruikers toe om de beperkingen van SELinux gebruiker te erven. De afgebeelde SELinux identiteit wordt gebruikt in de SELinux context voor processen in die sessie, om te beperken welke rollen en niveau's ze kunnen betreden. Voer het semanage login -l commando uit als Linux root gebruiker om een lijst van afbeeldingen te zien tussen SELinux en Linux gebruikersaccounts:
# /usr/sbin/semanage login -l

Login Name                SELinux User              MLS/MCS Range

__default__               unconfined_u              s0-s0:c0.c1023
root                      unconfined_u              s0-s0:c0.c1023
system_u                  system_u                  s0-s0:c0.c1023
De output kan verschillen van systeem tot systeem. De Login Name kolom laat de Linux gebruikers zien, en de SELinux User kolom laat zien op welke SELinux gebruiker de Linux gebruiker is afgebeeld. Voor processen beperkt de SELinux gebruiker welke rollen en niveau's bereikbaar zijn. De laatste kolom, MLS/MCS Range, is het niveau gebruikt door Multi-Level Security (MLS) en Multi-Category Security (MCS) (multi-categorie beveiliging). Niveau's worden later kort besproken.
rol
Onderdeel van SELinux is het Role-Based Access Control (RBAC) beveiligings model. De rol is een kenmerk van RBAC. SELinux gebruikers zijn gemachtigd voor rollen, en rollen zijn gemachtigd voor domeinen. De rol dient als een bemiddelaar tussen domeinen en SELinux gebruikers. De rollen die betreed kunnen worden bepalen welke domeinen betreed kunnen worden - uiteindelijk controleert dit tot welke object types toegang kan worden verkregen. Dit helpt de kwetsbaarheid te verminderen voor rechten escalatie aanvallen.
type
Het type is een kenmerk van Type Enforcement. Het type definieert een domein voor processen, en een type voor bestanden. SELinux tactiekregels bepalen hoe types toegang hebben tot elkaar, of het nu een domein is die toegang heeft tot een type, of een domein die toegang heeft tot een ander domein. Toegang is alleen toegestaan als er een specifieke SELinux tactiekregel bestaat die dit toestaat.
niveau
Het niveau is een kenmerk van MLS en Multi-Category Security (MCS). Een MLS reeks is een paar van niveau's, geschreven als laagniveau-hoogniveau als de niveau's verschillend zijn, of laagniveau als de niveau's identiek zijn (s0-s0 is hetzelfde als s0). Elk niveau is een gevoeligheid-categorie paar, met categorie optioneel. Als er categorieën zijn, wordt het niveau geschreven als gevoeligheid:categorie-set. Als er geen categorieën zijn, wordt het geschreven als gevoeligheid.
Als de categorie set een opeenvolgende reeks is, kan het afgekort worden. Bijvoorbeeld, c0.c3 is hetzelfde als c0,c1,c2,c3. Het /etc/selinux/targeted/setrans.conf bestand beeldt niveau's (s0:c0) af op een voor mensen leesbare vorm (CompanyConfidential). Bewerk setrans.conf niet met een tekstverwerker: gebruik semanage om veranderingen te maken. Refereer naar de semanage(8) manual pagina voor meer informatie. De gerichte tactiek in Fedora 11 dwingt MCS af, en in MCS is een gevoeligheid, s0. MCS in Fedora 11 ondersteunt 1024 verschillende categorieën: c0 tot en met c1023. s0-s0:c0.c1023 is gevoeligheid s0 en gemachtigd voor alle categorieën.
MLS dwingt het Bell-LaPadula Mandatory Access Model af, en wordt gebruikt in Labeled Security Protection Profile (LSPP) omgevingen. Om MLS beperkingen te gebruiken, installeer je het selinux-policy-mls pakket, en je stelt MLS in om de standaard SELinux tactiek te zijn. De MLS tactiek die onderdeel van Fedora is laat veel programma domeinen weg die geen onderdeel waren van de geevalueerde configuratie, en daarom is MLS niet bruikbaar op een bureau werkstation (geen ondersteuning voor het X Windows systeem); echter een MLS tactiek kan gemaakt worden van de upstream SELinux Referentie Tactiek die alle programma domeinen bevat.

3.1. Domein overgangen

Een proces in een domein gaat over naar een ander domein door het uitvoeren van een toepassing die het entrypoint type heeft voor het nieuwe domein. De entrypoint toestemming wordt gebruikt in SELinux tactiek, en controleert welke toepassingen gebruikt kunnen worden om een domein in te gaan. Het volgende voorbeeld laat een domein overgang zien:
  1. Een gebruiker wil zijn wachtwoord veranderen. Om zijn wachtwoord te veranderen, gebruikt hij de passwd toepassing. Het /usr/bin/passwd uitvoerbare programma is gelabeld met het passwd_exec_t type:
    $ ls -Z /usr/bin/passwd
    -rwsr-xr-x  root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd
    
    De passwd toepassing heeft toegang tot /etc/shadow, welke gelabeld is met het shadow_t type:
    $ ls -Z /etc/shadow
    -r--------  root root system_u:object_r:shadow_t:s0    /etc/shadow
    
  2. Een SELinux tactiekregel zegt dat het aan processen die in het passwd_t domein draaien toegestaan wordt om te lezen en schrijven naar bestanden gelabeld met het shadow_t type. Het shadow_t type wordt alleen toegepast bij bestanden die nodig zijn voor een verandering van wachtwoord. Dit omvat /etc/gshadow, /etc/shadow, en hun backup bestanden.
  3. Een SELinux tactiekregel zegt dat het passwd_t domein entrypoint toestemming heeft voor het passwd_exec_t type.
  4. Als een gebruiker de /usr/bin/passwd toepassing uitvoert, zal het shell proces van de gebruiker overgaan naar het passwd_t domein. Met SELinux, omdat de standaard actie weigeren is, en er een regel bestaat die toestaat (onder andere) dat toepassingen die draaien in het passwd_t domein toegang hebben tot bestanden gelabeld met het shadow_t type, is het de passwd toepassing toegestaan om toegang te hebben tot /etc/shadow, en dus om het wachtwoord van de gebruiker te vernieuwen.
Dit voorbeeld is niet volledig,en wordt gebruikt als een basis voorbeeld om domein overgangen uit te leggen. Hoewel er in werkelijkheid een regel is die subjects, die in het passwd_t domein draaien, toestaan om toegang te hebben tot objecten met het shadow_t bestandslabel type, moet er voldaan worden aan andere SELinux tactiekregels voordat het subject kan overgaan naar een nieuw domein. In dit voorbeeld, verzekert Type Enforcement dat:
  • het passwd_t domein kan alleen betreden worden door het uitvoeren van een toepassing gelabeld met het passwd_exec_t type; kan alleen uitgevoerd worden met gemachtigde gedeelde bibliotheken, zoals het lib_t type; en kan niet uitgevoerd worden enig andere toepassing.
  • alleen gemachtigde domeinen, zoals passwd_t, kunnen naar bestanden schrijven met het shadow_t type. Zelfs als andere processen draaien met root gebruiker rechten, kunnen deze processen niet schrijven naar bestanden gelabeld met het shadow_t type, omdat deze niet draaien in het passwd_t domein.
  • alleen gemachtigde domeinen kunnen overgaan naar het passwd_t domein. Bijvoorbeeld, het sendmail proces draaiend in het sendmail_t domein heeft geen geldige reden om passwd uit te voeren; daarom kan het nooit overgaan naar het passwd_t domein.
  • processen die draaien in het passwd_t domein kunnen alleen lezen en schrijven naar gemachtigde types, zoals bestanden gelabeld met etc_t of shadow_t types. Dit verhindert de passwd toepassing om misleid te worden om willekeurige bestanden te lezen of te schrijven.