Product SiteDocumentation Site

5.4. SELinux aanzetten en uitzetten

Gebruik de /usr/sbin/getenforce of /usr/sbin/sestatus commando's om de status van SELinux te controleren. Het getenforce commando geeft Enforcing, Permissive, of Disabled terug. Het getenforce geeft Enforcing terug als SELinux is aangezet (SELinux tactiekregels zijn afgedwongen):
$ /usr/sbin/getenforce
Enforcing
Het getenforce commando geeft Permissive terug als SELinux is aangezet, maar SELinux tactiekregels worden niet afgedwongen, en alleen DAC regels worden gebruikt. Het getenforce commando geeft Disabled terug als SELinux is uitgezet.
Het sestatus commando geeft de SELinux status en de gebruikte SELinux tactiek terug:
$ /usr/sbin/sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 23
Policy from config file:        targeted
SELinux status: enabled is returned when SELinux is enabled. Current mode: enforcing is returned when SELinux is running in enforcing mode. Policy from config file: targeted is returned when the SELinux targeted policy is used.

5.4.1. SELinux aanzetten

Op systemen waar SELinux is uitgezet, is de SELINUX=disabled optie ingesteld in /etc/selinux/config:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted
Dus het getenforce commando geeft Disabled terug:
$ /usr/sbin/getenforce
Disabled
Om SELinux aan te zetten:
  1. Gebruik de rpm -qa | grep selinux, rpm -q policycoreutils, en rpm -qa | grep setroubleshoot commando's om te bevestigen dat de SELinux pakketten geinstalleerd zijn. Deze gids neemt aan dat de volgende pakketten geinstalleerd zijn: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server en setroubleshoot-plugins. Als deze pakketten niet geinstalleerd zijn, installeer je ze als de Linux root gebruiker met het yum install pakket-naam commando. De volgende pakketten zijn optioneel: policycoreutils-gui, setroubleshoot, selinux-policy-devel, en mcstrans.
    Na het installeren van het setroubleshoot-server pakket, gebruik je het /sbin/chkconfig --list setroubleshoot commando om te bevestigen dat setroubleshootd opstart als het systeem draait in runlevel[10] 3, 4, en 5:
    $ /sbin/chkconfig --list setroubleshoot
    setroubleshoot  0:off   1:off   2:off   3:on    4:on    5:on    6:off
    
    Als de output anders is, voer je als de Linux root gebruiker het /sbin/chkconfig --levels 345 setroubleshoot on commando uit. Hierdoor start setroubleshootd automatisch op als het systeem in runlevel 3, 4, en 5 draait.
  2. Voordat SELinux wordt aangezet, moet elk bestand in het bestandssysteem gelabeld worden met een SELinux context. Voordat dit gebeurt, kunnen beperkte domeinen toegang geweigerd worden, wat je systeem ervan weerhoudt om correct op te starten. Om dit te voorkomen, configureer je SELINUX=permissive in /etc/selinux/config:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=permissive
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    
  3. Als de Linux root gebruiker voer je het reboot commando uit om het systeem opnieuw op te starten. Tijdens de volgende start worden de bestandssystemen gelabeld. Het label proces labelt alle bestanden met een SELinux context:
    *** Warning -- SELinux targeted policy relabel is required.
    *** Relabeling could take a very long time, depending on file
    *** system size and speed of hard drives.
    ****
    
    Elke * karakter in de onderste regel representeerd 1000 bestanden die gelabeld zijn. In het bovenstaande voorbeeld, representeren vier * karakters 4000 bestanden die gelabeld zijn. De tijd die het duurt om alle bestanden te labelen hangt af van het aantal bestanden op het systeem, en de snelheid van de harde schijf stations. Op moderne systemen kan dit proces 10 minuten duren.
  4. In de toelatende modus, wordt SELinux tactiek niet afgedwongen, maar weigeringen worden nog steeds gelogd voor acties die geweigerd zouden zijn als het systeem in de afdwingende modus zou draaien. Voordat je verandert naar de afdwingende modus, voer je als de Linux root gebruiker het grep "SELinux is preventing" /var/log/messages commando uit om te bevestigen dat SELinux geen acties heeft geweigerd tijdens het laatste opstarten. Als SELinux geen acties heeft geweigerd tijdens het laatste opstarten, geeft dit commando geen output terug. Refereer naar Hoofdstuk 7, Foutzoeken voor foutzoek informatie als SELinux toegang heeft geweigerd tijdens het opstarten.
  5. Als er geen weigeringsboodschappen in /var/log/messages waren, configureer je SELINUX=enforcing in /etc/selinux/config:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    
  6. Start je systeem opnieuw op. Na het opstarten, bevestig je dat het getenforce commando Enforcing terug geeft:
    $ /usr/sbin/getenforce
    Enforcing
    
  7. Als de Linux root gebruiker voer je het /usr/sbin/semanage login -l commando uit op de afbeelding tussen SELinux en Linux gebruikers te bekijken. De output moet als volgt zijn:
    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
    
Als dit niet het geval is, voer je als de Linux root gebruiker de volgende commando's uit om de gebruikersafbeeldingen te herstellen. Het is veilig om de SELinux-user gebruikersnaam is already defined waarschuwingen te negeren als ze voorkomen, waarin gebruikersnaam unconfined_u, guest_u, of xguest_u kan zijn:
  1. /usr/sbin/semanage user -a -S targeted -P user -R "unconfined_r system_r" -r s0-s0:c0.c1023 unconfined_u
    
  2. /usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 __default__
    
  3. /usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 root
    
  4. /usr/sbin/semanage user -a -S targeted -P user -R guest_r guest_u
    
  5. /usr/sbin/semanage user -a -S targeted  -P user -R xguest_r xguest_u
    

Belangrijk

Als systemen draaien in de toelatende of uitgezette modes, hebben gebruikers toestemming om bestanden verkeerd te labelen. Ook worden bestanden aangemaakt terwijl SELinux uitgezet is niet gelabeld. Dit veroorzaakt problemen als daarna de modus naar afdwingend wordt veranderd. Om te voorkomen dat verkeerd gelabelde of niet gelabelde bestanden problemen veroorzaken, worden bestandssystemen automatisch geherlabeld als de modus verandert van uitgezet naar de toelatende of afdwingende modus.


[10] Refereer naar http://en.wikipedia.org/wiki/Runlevel voor informatie over runlevels.