Uitgave 1.3
Copyright © 2009 Red Hat, Inc.
Mono-spaced Bold
Om de inhoud van het bestandmijn_onwijsgoed_verkopende_boek
in uw huidige directory te zien, voert u het commandocat mijn_onwijsgoed_verkopende_boek
in bij de shell-prompt en drukt u op Enter om het commando uit te laten voeren.
Druk op Enter om het commando te laten uitvoeren.Druk op Ctrl+Alt+F1 om naar de eerste virtuele terminal over te schakelen. Druk op Ctrl+Alt+F7 om terug te keren naar uw X-Windows sessie.
Mono-spaced Bold
. Voorbeeld:
Onder bestandsgerelateerde klassen vallenfilesystem
voor bestandsystemen,file
voor bestanden, endir
voor directories. Elke klasse heeft haar eigen set van permissies.
Kies Muis Voorkeuren te openen. In de Knoppen tab, klik de Linkshandige muis checkbox aan en klik om de primaire muisknop van links naar rechts te wisselen (waardoor de muis beter geschikt is geworden voor linkshandig gebruik).uit de hoofdmenubalk omOm een speciaal teken in een gedit bestand op te nemen, kiest u uit de hoofdmenubalk. Vervolgens kiest u uit de Tekentabel menubalk, typ de naam van het teken in het Zoek veld en klik . Het teken dat u zoekt zal worden gemarkeerd in de Tekentafel. Dubbel-klik op dit teken om het in de Te kopiëren tekst veld op te nemen en klik dan de knop. Keer terug naar uw document en kies uit de gedit menubalk.
Mono-spaced Bold Italic
of Proportional Bold Italic
Om verbinding te maken met een andere computer met behulp van ssh, typt ussh
bij een shell prompt.gebruikersnaam
@domein.naam
Hetmount -o remount
commando mount opnieuw het genoemde bestandsysteem. Om bijvoorbeeld hetfile-system
/home
bestandsysteem opnieuw te mounten, gebruikt men hetmount -o remount /home
commando.Om de versie van een huidig geïnstalleerd pakket te zien, gebruikt u hetrpm -q
commando. Dit zal het volgende resultaat opleveren:package
.
package-version-release
Wanneer de Apache HTTP Server verzoeken accepteert, zet het childprocessen of threads ter afhandeling in. Deze groep van childprocessen of threads staan bekend als een server-pool. Onder Apache HTTP Server 2.0 is de verantwoordelijkheid voor het creëren en onderhouden van deze server-pools toegewezen aan een groep modules genaamd Multi-Processing Modules (MPMs). Anders dan bij de andere modules kan slechts één module van de MPM groep door de Apache HTTP Server geladen zijn.
Mono-spaced Roman
en als volgt gepresenteerd:
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
Mono-spaced Roman
maar worden alsvolgt gepresenteerd en benadrukt:
package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } }
ls -l
commando om de bestandsrechten te zien:
$ ls -l file1 -rwxrw-r-- 1 user1 group1 0 2009-04-30 15:42 file1
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.
ls -Z
commando:
$ ls -Z file1 -rwxrw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
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.
sudo
en su
, zowel als ze te verhinderen om bestanden en toepassingen in hun persoonlijke map uit te voeren - als dat ingesteld is, dit belet gebruikers om verdachte bestanden vanuit hun persoonlijke mappen op te starten.
named
daemon, en andere processen.
[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.
[3] Tekst bestanden die informatie bevatten, zoals hostnaam naar IP adres omzetting, die gebruikt wordt door DNS servers.
[4] Cox, Mark. "Risk report: Three years of Red Hat Enterprise Linux 4". Published 26 February 2008. Accessed 28 August 2008: http://www.redhatmagazine.com/2008/02/26/risk-report-three-years-of-red-hat-enterprise-linux-4/.
[5] Marti, Don. "A seatbelt for server software: SELinux blocks real-world exploits". Published 24 February 2008. Accessed 28 August 2008: http://www.linuxworld.com/news/2008/022408-selinux.html?page=1.
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
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
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.
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.
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.
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:
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
/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
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.
passwd_t
domein entrypoint
toestemming heeft voor het passwd_exec_t
type.
/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.
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:
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.
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.
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.
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.
ps -eZ
commando om de SELinux context voor processen te bekijken. Bijvoorbeeld:
/usr/bin/passwd
commando uit. Vul geen nieuw wachtwoord in.
ps -eZ | grep passwd
commando uit. De output lijkt op het volgende:
unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 13212 pts/1 00:00:00 passwd
Ctrl+C
in de eerste tab om de passwd toepassing te stoppen.
/usr/bin/passwd
toepassing (gelabeld met het passwd_exec_t
type) wordt uitgevoerd, gaat het shell proces van de gebruiker over naar het passwd_t
domein. Denk eraan: het type definieert een domein voor een proces, en een type voor bestanden.
ps -eZ
commando om de SELinux context voor draaiende processen te zien. Het volgende is een beperkt voorbeeld van de output, en kan op jouw systeem anders zijn:
system_u:system_r:setroubleshootd_t:s0 1866 ? 00:00:08 setroubleshootd system_u:system_r:dhcpc_t:s0 1869 ? 00:00:00 dhclient system_u:system_r:sshd_t:s0-s0:c0.c1023 1882 ? 00:00:00 sshd system_u:system_r:gpm_t:s0 1964 ? 00:00:00 gpm system_u:system_r:crond_t:s0-s0:c0.c1023 1973 ? 00:00:00 crond system_u:system_r:kerneloops_t:s0 1983 ? 00:00:05 kerneloops system_u:system_r:crond_t:s0-s0:c0.c1023 1991 ? 00:00:00 atd
system_r
rol wordt gebruikt voor systeem processen, zoals daemons. Type Enforcement afzondert dan elk domein.
id -Z
commando om de SELinux context te zien die verbonden is met jouw Linux gebruiker:
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
unconfined_u
gebruiker, draait in de unconfined_r
rol, en draait in het unconfined_t
domein. s0-s0
is een MLS reeks, die in dit geval hetzelfde is als s0
. De categorieën waar naar de gebruiker toegang heeft zijn gedefinieerd door c0.c1023
, wat betekent alle categorieën (c0
tot en met c1023
).
unconfined_t
domein, en systeem processen opgestart door init draaien in het initrc_t
domein - deze beide domeinen zijn onbeperkt.
httpd
proces draait in het httpd_t
domein. Als een beperkt proces in gevaar wordt gebracht door een aanvaller zal, afhankelijk van de SELinux tactiek instellingen, de toegang van de aanvaller naar hulpbronnen, en de mogelijke schade die aangericht kan worden, beperkt zijn.
httpd
) leest van bestanden die niet correct gelabeld zijn, zoals bestanden bedoelt voor gebruik met Samba. Dit is een voorbeeld, en moet niet gebruikt worden in een productieomgeving. Het neemt aan dat de httpd, wget, setroubleshoot-server, en audit pakketten geinstalleerd zijn, dat de SELinux gerichte tactiek wordt gebruikt, en dat SELinux draait in de afdwingende (enforcing) modus.
sestatus
commando uit om te bevestigen dat SELinux is aangezet, het draait in de afdwingende modus, en dat de gerichte tactiek wordt gebruikt:
$ /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.
touch /var/www/html/testfile
commando om een bestand aan te maken.
ls -Z /var/www/html/testfile
commando om de SELinux context te bekijken:
-rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/testfile
testfile
bestand gelabeld met de SELinux unconfined_u
gebruiker. RBAC wordt gebruikt voor processen, niet voor bestanden. Rollen hebben geen betekenis voor bestanden - de object_r
rol is een algemene rol gebruikt voor bestanden (op blijvende opslag en netwerkbestandsystemen). In de /proc/
map, kunnen bestanden die gerelateerd zijn aan processen de system_r
rol gebruiken.[6] Het httpd_sys_content_t
type staat het httpd
proces toe om toegang te krijgen tot dit bestand.
service httpd start
commando om het httpd
proces te starten. Als httpd
met succes opstart verschijnt de volgende output:
# /sbin/service httpd start Starting httpd: [ OK ]
wget http://localhost/testfile
commando. Behalve als er veranderingen in de standaard instelling gemaakt zijn zal dit commando slagen:
--2009-05-06 23:00:01-- http://localhost/testfile Resolving localhost... 127.0.0.1 Connecting to localhost|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 0 [text/plain] Saving to: `testfile' [ <=> ] 0 --.-K/s in 0s 2009-05-06 23:00:01 (0.00 B/s) - `testfile' saved [0/0]
chcon
commando herlabelt bestanden; zulke label veranderingen zullen echter niet blijven bestaan als het bestandssysteem opnieuw gelabeld wordt. Voor permanente veranderingen die een herlabeling van het bestandssysteem zullen overleven, gebruik je het semanage
commando, dat later besproken wordt. Als de Linux root gebruiker draai je het volgende commando om het type te veranderen naar een type dat door Samba gebruikt wordt:
chcon -t samba_share_t /var/www/html/testfile
ls -Z /var/www/html/testfile
commando om de veranderingen te bekijken:
-rw-r--r-- root root unconfined_u:object_r:samba_share_t:s0 /var/www/html/testfile
httpd
proces toegang toe tottestfile
. Ga naar een map waar je Linux gebruiker schrijfrechten heeft, en voer het wget http://localhost/testfile
commando uit. Behalve als er veranderingen in de standaard instelling gemaakt zijn zal dit commando falen:
--2009-05-06 23:00:54-- http://localhost/testfile Resolving localhost... 127.0.0.1 Connecting to localhost|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2009-05-06 23:00:54 ERROR 403: Forbidden.
rm -i /var/www/html/testfile
commando om testfile
te verwijderen.
httpd
draait, voer je als de Linux root gebruiker het service httpd stop
commando uit om httpd
te stoppen:
# /sbin/service httpd stop Stopping httpd: [ OK ]
httpd
proces toegang toestaan tot testfile
in stap 7, zal SELinux toegang weigeren omdat het bestand gelabeld was met een type waarnaar het httpd
proces geen toegang heeft. Na stap 7 wordt een fout weggeschreven naar /var/log/messages
die lijkt op het volgende:
May 6 23:00:54 localhost setroubleshoot: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/testfile (samba_share_t). For complete SELinux messages. run sealert -l c05911d3-e680-4e42-8e36-fe2ab9f8e654
/var/log/messages.YYYYMMDD
formaat gebruiken. Als syslog-ng draait, kunnen eerdere log bestanden een /var/log/messages.X
formaat gebruiken. Als de setroubleshootd
en auditd
processen draaien, worden fouten naar /var/log/audit/audit.log
weggeschreven likend op het volgende:
type=AVC msg=audit(1220706212.937:70): avc: denied { getattr } for pid=1904 comm="httpd" path="/var/www/html/testfile" dev=sda5 ino=247576 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file type=SYSCALL msg=audit(1220706212.937:70): arch=40000003 syscall=196 success=no exit=-13 a0=b9e21da0 a1=bf9581dc a2=555ff4 a3=2008171 items=0 ppid=1902 pid=1904 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
/var/log/httpd/error_log
lijkend op het volgende:
[Wed May 06 23:00:54 2009] [error] [client 127.0.0.1
] (13)Permission denied: access to /testfile denied
setroubleshootd
en auditd
daemons. Deze daemons draaien standaard. Het stoppen van een van deze daemons verandert waar de SELinux weigeringen weggeschreven worden. Refereer naar Paragraaf 5.2, “Welk log bestand wordt gebruikt” voor meer informatie.
initrc_t
domein, onbeperkte kernel processen draaien in het kernel_t
domein, en onbeperkte Linux gebruikers draaien in het unconfined_t
domein. Voor onbeperkte processen worden SELinux tactiekregels toegepast, maar de bestaande tactiekregels staan processen die in onbeperkte domeinen draaien bijna alle toegang toe. Processen die draaien in onbeperkte domeinen vallen terug op het gebruik van alleen de DAC regels. Als een onbeperkt proces in gevaar wordt gebracht, verhindert SELinux een aanvaller niet om toegang te krijgen tot systeemhulpbronnen en data, maar de DAC regels worden natuurlijk nog gebruikt. SELinux is een beveiligingsverbetering boven op DAC regels - het vervangt deze niet.
httpd
) als het onbeperkt draait toegang kan krijgen tot data die bedoeld is voor gebruik met Samba. Merk op: in Fedora 11 draait het httpd
proces standaard in het beperkte httpd_t
domein. Dit is een voorbeeld en moet niet in een productieomgeving gebruikt worden. Het neemt aan dat de httpd, wget, setroubleshoot-server, en audit pakketten geinstalleerd zijn, dat de SELinux gerichte tactiek gebruikt wordt, en dat SELinux in de afdwingende modus is:
sestatus
commando uit om te bevestigen dat SELinux is aangezet, het draait in de afdwingende modus, en dat de gerichte tactiek wordt gebruikt:
$ /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.
touch /var/www/html/test2file
commando uit om een bestand te maken.
ls -Z /var/www/html/test2file
commando uit om de SELinux context te zien:
-rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/test2file
test2file
bestand gelabeld met de SELinux unconfined_u
gebruiker. RBAC wordt gebruikt voor processen, niet voor bestanden. Rollen hebben geen betekenis voor bestanden - de object_r
rol is een algemene rol gebruikt voor bestanden (op blijvende opslag en netwerkbestandssystemen). In de /proc/
map, kunnen bestanden die gerelateerd zijn aan processen de system_r
rol gebruiken.[7] Het httpd_sys_content_t
type staat het httpd
proces toe om toegang te krijgen tot dit bestand.
chcon
commando herlabelt bestanden; zulke label veranderingen zullen echter niet blijven bestaan als het bestandssysteem opnieuw gelabeld wordt. Voor permanente veranderingen die een herlabeling van het bestandssysteem zullen overleven, gebruik je het semanage
commando, dat later besproken wordt. Als de Linux root gebruiker draai je het volgende commando om het type te veranderen naar een type dat door Samba gebruikt wordt:
chcon -t samba_share_t /var/www/html/test2file
ls -Z /var/www/html/test2file
commando uit om de veranderingen te bekijken:
-rw-r--r-- root root unconfined_u:object_r:samba_share_t:s0 /var/www/html/test2file
service httpd status
commando uit om te bevestigen dat het httpd
proces niet draait:
$ /sbin/service httpd status httpd is stopped
service httpd stop
commando uit als de Linux root gebruiker om het httpd
proces te stoppen:
# /sbin/service httpd stop Stopping httpd: [ OK ]
httpd
proces onbeperkt te laten draaien, voer je het volgende commando uit als de Linux root gebruiker om het type van /usr/sbin/httpd
te veranderen naar een type dat niet overgaat naar een beperkt domein:
chcon -t unconfined_exec_t /usr/sbin/httpd
ls -Z /usr/sbin/httpd
commando uit om te bevestigen dat /usr/sbin/httpd
is gelabeld met het unconfined_exec_t
type:
-rwxr-xr-x root root system_u:object_r:unconfined_exec_t /usr/sbin/httpd
service httpd start
commando om het httpd
proces te starten. Als httpd
met succes opstart verschijnt de volgende output:
# /sbin/service httpd start Starting httpd: [ OK ]
ps -eZ | grep httpd
commando uit om httpd
te zien draaien in het unconfined_t
domein:
$ ps -eZ | grep httpd unconfined_u:system_r:unconfined_t7721
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7723
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7724
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7725
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7726
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7727
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7728
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7729
? 00:00:00 httpd unconfined_u:system_r:unconfined_t7730
? 00:00:00 httpd
wget http://localhost/test2file
commando uit. Behalve als er veranderingen in de standaard instelling gemaakt zijn, zal dit commando slagen:
--2009-05-07 01:41:10-- http://localhost/test2file Resolving localhost... 127.0.0.1 Connecting to localhost|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 0 [text/plain] Saving to: `test2file.1' [ <=> ]--.-K/s in 0s 2009-05-07 01:41:10 (0.00 B/s) - `test2file.1' saved [0/0]
httpd
proces geen toegang heeft tot bestanden gelabeld met het samba_share_t
type, draait httpd
in het onbeperkte unconfined_t
domein, en valt terug op het gebruiken van DAC regels, en dus zal het wget
commando slagen. Als httpd
in het beperkte httpd_t
domein had gedraaid, dan zou het wget
commando gefaald hebben.
restorecon
commando herlaadt de standaard SELinux context voor bestanden. Als de Linux root gebruiker voet je het restorecon -v /usr/sbin/httpd
commando uit om de standaard SELinux context voor /usr/sbin/httpd
te herladen:
# /sbin/restorecon -v /usr/sbin/httpd restorecon reset /usr/sbin/httpd context system_u:object_r:unconfined_notrans_exec_t:s0->system_u:object_r:httpd_exec_t:s0
ls -Z /usr/sbin/httpd
commando uit om te bevestigen dat /usr/sbin/httpd
is gelabeld met het httpd_exec_t
type:
$ ls -Z /usr/sbin/httpd -rwxr-xr-x root root system_u:object_r:httpd_exec_t /usr/sbin/httpd
/sbin/service httpd restart
commando uit om httpd
opnieuw te starten. Na het herstarten, voer je het ps -eZ | grep httpd
commando uit om te bevestigen dat httpd
in het beperkte httpd_t
domein draait:
# /sbin/service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] # ps -eZ | grep httpd unconfined_u:system_r:httpd_t 8880 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8882 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8883 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8884 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8885 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8886 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8887 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8888 ? 00:00:00 httpd unconfined_u:system_r:httpd_t 8889 ? 00:00:00 httpd
rm -i /var/www/html/test2file
commando uit om test2file
te verwijderen.
httpd
draait, voer je als de Linux root gebruiker het service httpd stop
commando uit om httpd
te stoppen:
# /sbin/service httpd stop Stopping httpd: [ OK ]
semanage login -l
commando als de Linux root gebruiker:
# /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
__default__
login ( welke is afgebeeld op de SELinux unconfined_u
gebruiker). Het volgende definieert de standaard afbeelding:
__default__ unconfined_u s0-s0:c0.c1023
unconfined_u
gebruiker. Het neemt aan dat de Linux root gebruiker onbeperkt draait, wat standaard het geval is in Fedora 11:
/usr/sbin/useradd newuser
commando uit om een nieuwe Linux gebruiker aan te maken met de naam newuser.
passwd newuser
command to assign a password to the Linux newuser user:
# passwd newuser Changing password for user newuser. New UNIX password:Enter a password
Retype new UNIX password:Enter the same password again
passwd: all authentication tokens updated successfully.
id -Z
commando uit om de context van een Linux gebruiker te bekijken:
[newuser@localhost ~]$ id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
/usr/sbin/userdel -r newuser
commando uit als de Linux root gebruiker om het te verwijderen, te samen met de persoonlijke map van de Linux newuser.
unconfined_t
domein naar zijn eigen beperkt domein, zullen onbeperkte Linux gebruikers nog steeds vallen onder de beperkingen van dat beperkte domein. Het beveilings voordeel hiervan is dat, zelfs als een Linux gebruiker onbeperkt draait, de toepassing beperkt blijft, en dat daardoor de uitbuiting van een fout in de toepassing beperkt kan worden door de tactiek. Merk op: dit beschermt het systeem niet voor de gebruiker. In plaats daarvan worden de gebruiker en het systeem beschermd tegen mogelijke schade veroorzaakt door een fout in de toepassing.
Gebruiker | Domein | X Window systeem | su en sudo | Uitvoeren in persoonlijke map en /tmp/ | Netwerken |
---|---|---|---|---|---|
guest_u | guest_t | nee | nee | optioneel | nee |
xguest_u | xguest_t | ja | nee | optioneel | alleen Firefox |
user_u | user_t | ja | nee | optioneel | ja |
staff_u | staff_t | ja |
alleen sudo
| optioneel | ja |
guest_t
, xguest_t
, en user_t
domeinen kunnen alleen set user ID (setuid) toepassingen draaien als SELinux tactiek dat toestaat (zoals passwd
). Ze kunnen de su
en /usr/bin/sudo
setuid toepassingen niet draaien, en kunnen daarom deze toepassingen niet gebruiken om de Linux root gebruiker te worden.
guest_t
domein hebben geen netwerk toegang, en kunnen alleen inloggen met een terminal (inclusief ssh
; ze kunnen inloggen met ssh
, maar kunnen ssh
niet gebruiken om te verbinden met andere systemen).
xguest_t
domein hebben is om met Firefox te verbinden met web pagina's.
xguest_t
, user_t
en staff_t
domeinen kunnen inloggen met het X Window systeem en een terminal.
staff_t
domein geen rechten om toepassingen met /usr/bin/sudo
uit te voeren. Deze rechten moeten ingesteld worden door een beheerder.
guest_t
en xguest_t
domeinen geen toepassingen in hun persoonlijke mappen of /tmp/
uitvoeren, wat hun tegenhoudt om toepassingen op te starten (welke de rechten van de gebruiker erven) in mappen waartoe ze schrijftoegang hebben. Dit helpt om foutieve of kwaadwillige toepassingen te verhinderen om bestanden waarvan ze eigenaar zijn te veranderen.
user_t
en staff_t
domeinen toepassingen in hun persoonlijke mappen en /tmp/
uitvoeren. Refereer naar Paragraaf 6.6, “Booleans voor gebruikers die toepassingen uitvoeren” voor informatie over het toestaan en tegenhouden van gebruikers om toepassingen in hun persoonlijke mappen en /tmp/
uit te voeren.
mount
commando; het aankoppelen van NFS bestandssystemen; en hoe je SELinux context behoudt bij het kopiëren en archiveren van bestanden en mappen.
semanage
, restorecon
, audit2allow
, semodule
, load_policy
, en setsebool
, voor het uitvoeren en beheren van SELinux.
system-config-selinux
, een grafisch gereedschap voor het beheren van SELinux.
/usr/share/selinux/devel/policygentool
en /usr/share/selinux/devel/policyhelp
, en ook voorbeeld tactiek bestanden. Dit pakket is opgegaan in het selinux-policy pakket.
policy
: levert SELinux tactieken. Voor gerichte tactiek, installeer je selinux-policy-targeted. Voor MLS, installeer je selinux-policy-mls. In Fedora 8 is de strikte tactiek opgegaan in de gerichte tactiek, wat toestaat dat beperkte en onbeperkte gebruikers tegelijk kunnen bestaan op hetzelfde systeem.
sealert
(welke door dit pakket geleverd wordt).
apol
, seaudit
, en sediffx
gereedschappen. Het setools-console pakket levert de seaudit-report
, sechecker
, sediff
, seinfo
, sesearch
, findcon
, replcon
, en indexcon
commadoregel gereedschappen. Refereer naar de Tresys Technology SETools pagina voor meer informatie over deze gereedschappen.
avcstat
, getenforce
, getsebool
, matchpathcon
, selinuxconlist
, selinuxdefcon
, selinuxenabled
, setenforce
, en togglesebool
gereedschappen.
s0-s0:c0.c1023
, naar een eenvoudiger te lezen vorm, zoals SystemLow-SystemHigh
. Dit pakket is standaard niet geinstalleerd.
yum install pakket-naam
commando. Bijvoorbeeld, om het mcstrans pakket te installeren, voer je het yum install mcstrans
commando uit. Om alle geinstalleerde pakketten in Fedora 11 te vernieuwen, voer je het yum update
commando uit.
yum
om pakketten te beheren.
audit2allow -M
.
setroubleshootd
en auditd
daemons. Deze daemons draaien standaard.
/var/log/audit/audit.log
geschreven:
type=AVC msg=audit(1223024155.684:49): avc: denied { getattr } for pid=2000 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=399185 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:samba_share_t:s0 tclass=file
setroubleshootd
draait, wat standaard het geval is, worden weigeringsboodschappen van /var/log/audit/audit.log
ook vertaald naar een eenvoudiger te lezen vorm en naar /var/log/messages
gestuurd:
May 7 18:55:56 localhost setroubleshoot: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/file1 (samba_share_t). For complete SELinux messages. run sealert -l de7e30d6-5488-466d-a606-92c9f40d316d
Daemon | Log Location |
---|---|
auditd on | /var/log/audit/audit.log |
auditd off; rsyslogd on | /var/log/messages |
setroubleshootd, rsyslogd, and auditd on | /var/log/audit/audit.log . Easier-to-read denial messages also sent to /var/log/messages |
auditd
, rsyslogd
, en setroubleshootd
daemons in te stellen om automatisch op te starten bij het opstarten van het systeem, voer je de volgende commando's uit als de Linux root gebruiker:
/sbin/chkconfig --levels 2345 auditd on
/sbin/chkconfig --levels 2345 rsyslog on
/sbin/chkconfig --levels 345 setroubleshoot on
service service-naam
status
commando om te controleren of deze services draaien, bijvoorbeeld:
$ /sbin/service auditd status
auditd (pid 1318
) is running...
service-naam
is stopped
), voer je het service service-naam
start
commando uit als de Liinux root gebruiker om ze te starten. Bijvoorbeeld:
# /sbin/service setroubleshoot start Starting setroubleshootd: [ OK ]
/etc/selinux/config
bestand is het hoofd SELinux configuratie bestand. Het controleert de SELinux modus en de te gebruiken SELinux tactiek:
# 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
SELINUX=enforcing (afdwingend)
SELINUX
optie stelt de modus in waarin SELinux draait. SELinux heeft drie modes: enforcing (afdwingend), permissive (toelatend), en disabled (uitgezet). Als de afdwingende modus gebruikt wordt, wordt de SELinux tactiek afgedwongen, en SELinux verbiedt toegang gebaseerd op SELinux tactiekregels. Weigeringsboodschappen worden gelogd. Als de toelatende modus gebruikt wordt, wordt de SELinux tactiek niet afgedwongen. SELinux verbiedt geen toegang, maar weigeringen voor acties die geweigerd zouden zijn als SELinux in de afdwingende modus zou zijn, worden gelogd. In de uitgezette modus, is SELinux uitgezet (de SELinux module wordt niet registreerd bij de Linux kernel), en alleen DAC regels worden gebruikt.
SELINUXTYPE=targeted (gericht)
SELINUXTYPE
optie stelt de te gebruiken SELinux tactiek in. Gerichte tactiek is de standaard tactiek. Verander deze optie alleen als je de MLS tactiek wilt gebruiken. Om de MLS tactiek te gebruiken, installeer je het selinux-policy-mls pakket, je configureert SELINUXTYPE=mls
in /etc/selinux/config
; en je start je systeem opnieuw op.
/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
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.
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.
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
getenforce
commando geeft Disabled
terug:
$ /usr/sbin/getenforce Disabled
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.
/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
/sbin/chkconfig --levels 345 setroubleshoot on
commando uit. Hierdoor start setroubleshootd
automatisch op als het systeem in runlevel 3, 4, en 5 draait.
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
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. ****
*
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.
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.
/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
getenforce
commando Enforcing
terug geeft:
$ /usr/sbin/getenforce Enforcing
/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
SELinux-user gebruikersnaam
is already defined
waarschuwingen te negeren als ze voorkomen, waarin gebruikersnaam
unconfined_u
, guest_u
, of xguest_u
kan zijn:
/usr/sbin/semanage user -a -S targeted -P user -R "unconfined_r system_r" -r s0-s0:c0.c1023 unconfined_u
/usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 __default__
/usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 root
/usr/sbin/semanage user -a -S targeted -P user -R guest_r guest_u
/usr/sbin/semanage user -a -S targeted -P user -R xguest_r xguest_u
SELINUX=disabled
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
getenforce
commando Disabled
terug geeft:
$ /usr/sbin/getenforce Disabled
/usr/sbin/setenforce
commando om te veranderen tussen afdwingende en toelatende mode. Veranderingen gemaakt met /usr/sbin/setenforce
zijn niet blijvend na een heropstarten van het systeem. Om naar de afdwingende modus te veranderen, voer je als de Linux root gebruiker het /usr/sbin/setenforce 1
commando uit. Om naar de toelatende modus te veranderen, voer je het /usr/sbin/setenforce 0
commando uit. Gebruik het /usr/sbin/getenforce
commando om de huidige SELinux modus te bekijken.
semanage boolean -l
commando uit als de Linux root gebruiker. Het volgende voorbeeld laat niet alle Booleans zien:
# /usr/sbin/semanage boolean -l SELinux boolean Description ftp_home_dir -> off Allow ftp to read and write files in the user home directories xen_use_nfs -> off Allow xen to manage nfs files xguest_connect_network -> on Allow xguest to configure Network Manager
SELinux boolean
kolom laat de lijst van Boolean namen zien. De Description
kolom laat zien of de Booleans aan of uit zijn, en wat ze doen.
ftp_home_dir
Boolean uit, dit belet de FTP daemon (vsftpd
) om bestanden in de persoonlijke mappen van de gebruiker te lezen of te schrijven:
ftp_home_dir -> off Allow ftp to read and write files in the user home directories
getsebool -a
commando laat een lijst zien van de Booleans, of ze nu aan of uit zijn, maar geeft geen beschrijving van elke Boolean. Het volgende voorbeeld laat niet alle Booleans zien:
$ /usr/sbin/getsebool -a allow_console_login --> off allow_cvs_read_shadow --> off allow_daemons_dump_core --> on
getsebool boolean-naam
commando uit om alleen de status van de boolean-naam
Boolean te laten zien:
$ /usr/sbin/getsebool allow_console_login allow_console_login --> off
$ getsebool allow_console_login allow_cvs_read_shadow allow_daemons_dump_core allow_console_login --> off allow_cvs_read_shadow --> off allow_daemons_dump_core --> on
setsebool boolean-naam
x
commando zet Booleans aan of uit, waarin boolean-naam
de naam van een Boolean is, en x
of on
is om de Boolean aan te zetten, of off
is om hem uit te zetten.
httpd_can_network_connect_db
Boolean zien:
httpd_can_network_connect_db
Boolean uit, wat Apache HTTP scripts en modules belet om te verbinden met database servers:
$ /usr/sbin/getsebool httpd_can_network_connect_db httpd_can_network_connect_db --> off
setsebool httpd_can_network_connect_db on
commando uit als de Linux root gebruiker.
getsebool httpd_can_network_connect_db
commando om te bevestigen dat de Boolean aangezet is:
$ /usr/sbin/getsebool httpd_can_network_connect_db httpd_can_network_connect_db --> on
setsebool -P boolean-naam
on
commando uit als de Linux root gebruiker:
# /usr/sbin/setsebool -P httpd_can_network_connect_db on
setsebool httpd_can_network_connect_db off
commando uit. Voor veranderingen die blijvend zijn na het herstarten, voer je het setsebool -P httpd_can_network_connect_db off
commando uit.
nfs_t
type. En ook zijn standaard Samba delingen aangekoppeld op de client zijde gelabeld met een standaard context gedefinieerd door tactiek. In algemene tactieken gebruikt deze standaard context het cifs_t
type.
nfs_t
of cifs_t
types te lezen. Dit kan bestandssystemen die met deze types gelabeld zijn beletten om aangekoppeld te worden en daarna gelezen of geexporteerd te worden door andere services. Booleans kunnen aan of uit gezet worden om te bepalen welke services toestemming hebben om toegang te krijgen tot de nfs_t
enecifs_t
types.
setsebool
en semanage
commando's moeten uitgevoerd worden als de Linux root gebruiker. Het setsebool -P
commando maakt blijvende veranderingen. Gebruik de -P
optie niet als je niet wilt dat veranderingen blijvend zijn na het opnieuw opstarten van het systeem:
nfs_t
type):
/usr/sbin/setsebool -P httpd_use_nfs on
cifs_t
type):
/usr/sbin/setsebool -P httpd_use_cifs on
/usr/sbin/setsebool -P samba_share_nfs on
vsftpd
)/usr/sbin/setsebool -P allow_ftpd_use_nfs on
/usr/sbin/setsebool -P allow_ftpd_use_cifs on
/usr/sbin/semanage boolean -l | grep nfs
/usr/sbin/semanage boolean -l | grep cifs
ls -Z
commando:
$ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
unconfined_u
), een rol (object_r
), een type (user_home_t
), en een niveau (s0
). Deze informatie wordt gebruikt om toegangscontrole beslissingen te maken. Op DAC systemen wordt toegang gecontroleerd op basis van Linux gebruiker en groep ID's. SELinux tactiekregels worden toegepast na de DAC regels. SELinux tactiekregels worden niet gebruikt als DAC regels als eerste toegang weigeren.
chcon
, semanage fcontext
, en restorecon
.
chcon
commando verandert de SELinux context voor bestanden. Deze veranderingen overleven het herlabelen van een bestandssysteem niet, en ook het /sbin/restorecon
commando niet. SELinux tactiek controleert welke gebruikers in staat zijn om de SELinux context voor elk bestand te veranderen. Als chcon
gebruikt wordt, kunnen gebruikers alle of een deel van de SELinux context veranderen. Een foutief bestands type is een vaak voorkomende fout als SELinux toegang weigert.
chcon -t type
bestandsnaam
commando uit om het bestandstype te veranderen, waarin type
een type is, zoals httpd_sys_content_t
, en bestandsnaam
een bestand of een map is.
chcon -R -t type
mapnaam
commando uit om het type van een map en zijn inhoud te veranderen, waarin type
een type is, zoals httpd_sys_content_t
, en mapnaam
een mapnaam is.
cd
commando uit zonder argumenten om naar je persoonlijke map te gaan.
touch file1
commando uit om een nieuw bestand aan te maken. Gebruik het ls -Z file1
commando om de SELinux context voor file1
te zien:
$ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
file1
de SELinux unconfined_u
gebruiker, de object_r
rol, het user_home_t
type, en het s0
niveau. Voor een beschrijving van ieder onderdeel van de SELinux context, refereer je naar Hoofdstuk 3, SELinux context.
chcon -t samba_share_t file1
commando uit om het type te veranderen naar samba_share_t
. De -t
optie verandert alleen het type. Bekijk de verandering met ls -Z file1
:
$ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:samba_share_t:s0 file1
/sbin/restorecon -v file1
commando om de SELinux context voor het file1
bestand te herstellen. Gebruik de -v
optie om te zien wat er verandert:
$ /sbin/restorecon -v file1 restorecon reset file1 context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:user_home_t:s0
samba_share_t
, hersteld naar het juiste user_home_t
type. Als gerichte tactiek gebruikt wordt (de standaard SELinux tactiek in Fedora 11), leest het /sbin/restorecon
commando de bestanden in de /etc/selinux/targeted/contexts/files/
map om te zien welke SELinux context bestanden moeten hebben.
file1
een map was.
/var/www/html/
):
mkdir /web
commando uit om een nieuwe map aan te maken, en daarna het touch /web/file{1,2,3}
commando om 3 lege bestanden aan te maken (file1
, file2
, en file3
). De /web/
map en zijn bestanden zijn gelabeld met het default_t
type:
# ls -dZ /web drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web # ls -lZ /web -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file3
chcon -R -t httpd_sys_content_t /web/
commando uit om het type van de /web/
map (en zijn inhoud) te veranderen naar httpd_sys_content_t
:
# chcon -R -t httpd_sys_content_t /web/ # ls -dZ /web/ drwxr-xr-x root root unconfined_u:object_r:httpd_sys_content_t:s0 /web/ # ls -lZ /web/ -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
/sbin/restorecon -R -v /web/
commando uit om de standaard SELinux context te herstellen:
# /sbin/restorecon -R -v /web/ restorecon reset /web context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0 restorecon reset /web/file2 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0 restorecon reset /web/file3 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0 restorecon reset /web/file1 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
chcon
.
/usr/sbin/semanage fcontext
commando verandert de SELinux context voor bestanden. Als de gerichte tactiek gebruikt wordt, worden veranderingen die met dit commando gemaakt zijn toegevoegd aan het /etc/selinux/targeted/contexts/files/file_contexts
bestand als de veranderingen gemaakt zijn voor bestanden die bestaan in file_contexts
, of worden toegevoegd aan file_contexts.local
voor nieuwe bestanden en mappen, zoals het aan maken van een /web/
map. setfiles
, welke gebruikt wordt als een bestandssysteem geherlabeld wordt, en /sbin/restorecon
, welke de standaard SELinux context herstelt, lezen deze bestanden. Dit betekent dat veranderingen gemaakt door /usr/sbin/semanage fcontext
blijvend zijn, zelfs als het bestandssysteem opnieuw gelabeld wordt. SELinux tactiek controleert of gebruikers in staat zijn de SELinux context van een bepaald bestand kunnen veranderen.
/usr/sbin/semanage fcontext -a opties
bestandsnaam
|mapnaam
commando uit, waarbij je er aan moet denken om voor een bestand of map het volledige pad te gebruiken.
/sbin/restorecon -v bestandsnaam
|mapnaam
commando uit om de context veranderingen toe te passen.
touch /etc/file1
commando uit om een nieuw bestand aan te maken. Standaard worden nieuw aangemaakte bestanden in de /etc/
gelabeld met het etc_t
type:
# ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
/usr/sbin/semanage fcontext -a -t samba_share_t /etc/file1
commando uit om het type van file1
te veranderen naar samba_share_t
. De -a
optie voegt een nieuwe optekening toe, en de -t
optie definieert een type (samba_share_t
). Merk op: het uitvoeren van dit commando verandert niet direct het type - file1
is nog steeds gelabeld met het etc_t
type:
# /usr/sbin/semanage fcontext -a -t samba_share_t /etc/file1 # ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
/usr/sbin/semanage fcontext -a -t samba_share_t /etc/file1
commando voegt de volgende regel toe aan /etc/selinux/targeted/contexts/files/file_contexts.local
:
/etc/file1 unconfined_u:object_r:samba_share_t:s0
/sbin/restorecon -v /etc/file1
commando uit om het type te veranderen. Omdat het semanage
commando een regel aan file.contexts.local
heeft toegevoegd voor /etc/file1
, verandert het /sbin/restorecon
commando het type naar samba_share_t
:
# /sbin/restorecon -v /etc/file1 restorecon reset /etc/file1 context unconfined_u:object_r:etc_t:s0->system_u:object_r:samba_share_t:s0
rm -i /etc/file1
commando uit om file1
te verwijderen.
/usr/sbin/semanage fcontext -d /etc/file1
commando uit om de context toegevoegd voor /etc/file1
te verwijderen. Als de context verwijderd is, zal het uitvoeren van restorecon
het type veranderen naar etc_t
, in plaats van samba_share_t
.
mkdir /web
commando uit om een nieuwe map aan te maken. Deze map is gelabeld met het default_t
type:
# ls -dZ /web drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web
ls
-d
optie laat ls
informatie tonen over een map, in plaats van zijn inhoud, en de -Z
optie laat ls
de SELinux context tonen (in dit voorbeeld, unconfined_u:object_r:default_t:s0
).
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t /web
commando uit om het type van /web/
te veranderen naar httpd_sys_content_t
. De -a
optie voegt een nieuwe aantekening toe, en de -t
optie definieert een type (httpd_sys_content_t
). Merk op: het uitvoeren van dit commando verandert niet direct het type - /web/
is nog steeds gelabeld met het default_t
type:
# /usr/sbin/semanage fcontext -a -t httpd_sys_content_t /web # ls -dZ /web drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t /web
commmando voegt de volgende regel toe aan /etc/selinux/targeted/contexts/files/file_contexts.local
:
/web unconfined_u:object_r:httpd_sys_content_t:s0
/sbin/restorecon -v /web
commando uit om het type te veranderen. Omdat het semanage
commando een regel aan file.contexts.local
heeft toegevoegd voor /web
, verandert het /sbin/restorecon
commando het type naar httpd_sys_content_t
:
# /sbin/restorecon -v /web restorecon reset /web context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
/web/
is verwijderd, zijn bestanden en mappen aangemaakt in de /web/
map gelabeld met het httpd_sys_content_t
type.
/usr/sbin/semanage fcontext -d /web
commando uit om de toegevoegde context voor /web/
te verwijderen.
/sbin/restorecon -v /web
commando uit om de standaard SELinux context te herstellen.
/var/www/html/
):
mkdir /web
commando uit om een nieuwe map aan te maken, en daarna het touch /web/file{1,2,3}
commando om 3 lege bestanden aan te maken (file1
, file2
, en file3
). De /web/
map en zijn bestanden zijn gelabeld met het default_t
type:
# ls -dZ /web drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web # ls -lZ /web -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file3
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
commando uit om het type van de /web/
, en de bestanden hierin, te veranderen naar httpd_sys_content_t
. De -a
optie voegt een nieuwe aantekening toe, en de -t
optie definieert een type (httpd_sys_content_t). De "/web(/.*)?"
reguliere expressie laat het semanage
commando veranderingen maken naar de /web/
map, en naar de bestanden daar in. Merk op: het uitvoeren van dit commando verandert niet direct het type - /web/
en de bestanden hierin zijn nog steeds gelabeld met het default_t
type:
# ls -dZ /web drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web # ls -lZ /web -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file3
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
commando voegt de volgende regel toe aan /etc/selinux/targeted/contexts/files/file_contexts.local
:
/web(/.*)? system_u:object_r:httpd_sys_content_t:s0
/sbin/restorecon -R -v /web
commando uit om het type van de /web/
map, en alle bestanden hierin, te veranderen. De -R
optie staat voor recursief, wat betekent dat alle bestanden en mappen onder de /web/
map gelabeld worden met het httpd_sys_content_t
type. Omdat het semanage
commando een regel toevoegde aan file.contexts.local
voor /web(/.*)?
, verandert het /sbin/restorecon
commando de types naar httpd_sys_content_t
:
# /sbin/restorecon -R -v /web restorecon reset /web context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0 restorecon reset /web/file2 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0 restorecon reset /web/file3 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0 restorecon reset /web/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
/web/
map gelabeld worden met het httpd_sys_content_t
type.
/usr/sbin/semanage fcontext -d "/web(/.*)?"
commando uit om de context toegevoegd voor "/web(/.*)?"
te verwijderen.
/sbin/restorecon -R -v /web
om de standaard SELinux context te herstellen.
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t /test
commando uit. De /test/
map hoeft niet te bestaan. Dit commando voegt de volgende context toe aan /etc/selinux/targeted/contexts/files/file_contexts.local
:
/test system_u:object_r:httpd_sys_content_t:s0
/usr/sbin/semanage fcontext -d bestandsnaam
|mapnaam
commando uit, waarin bestandsnaam
|mapnaam
het eerste onderdeel is in file_contexts.local
. Het volgende is een voorbeeld van een context in file_contexts.local
:
/test system_u:object_r:httpd_sys_content_t:s0
/test
is. Om te voorkomen dat de /test/
map gelabeld wordt met httpd_sys_content_t
na het draaien van /sbin/restorecon
, of na een bestandssysteem herlabeling, voer je het volgende commando uit als de Linux root gebruiker om de context van file_contexts.local
te verwijderen:
/usr/sbin/semanage fcontext -d /test
/web(/.*)?
, gebruik je aanhalingstekens om de reguliere expressie:
/usr/sbin/semanage fcontext -d "/web(/.*)?"
/usr/sbin/semanage
.
/usr/sbin/semanage fcontext -a
, gebruik dan het volledige pad naar het bestand of de map om te voorkomen dat bestanden verkeerd worden gelabeld na een systeem herlabeling, of nadat het /sbin/restorecon
commando is uitgevoerd.
file_t
type. Dit moet het enigste gebruik zijn van dit type, zodat bestanden zonder context op een schijf onderscheiden kunnen worden in de tactiek, en in het algemeen onbereikbaar worden gehouden voor beperkte domeinen. Het file_t
type moet niet bestaan op correct gelabelde bestandssystemen, omdat alle bestanden op een systeem dat SELinux draait en SELinux context moeten hebben, en het file_t
type wordt nooit gebruikt in bestandscontext configuratie[11].
default_t
type wordt gebruikt voor bestanden die niet passen bij elk ander patroon in de bestandscontext configuratie, zodat zulke bestanden onderscheiden kunnen worden van bestanden op schijf die geen context hebben, en ze worden in het algemeen onbereikbaar gehouden voor beperkte domeinen. Als je een nieuwe top-niveau map aanmaakt, zoals /mijnmap/
, zal deze misschien gelabeld worden met het default_t
type. Als services toegang nodig hebben naar zo'n map, vernieuw dan de bestandscontext voor deze loocatie. Refereer naar Paragraaf 5.7.2, “Permanente veranderingen: semanage fcontext” voor details over het toevoegen van een context aan de bestandscontext configuratie.
mount -o context
commando om bestaande uitgebreide attributen ter zijde te schuiven, of om een andere, standaard context op te geven voor bestandssystemen die geen uitgebreide attributen ondersteunen. Dit is nuttig als je niet vertrouwt dat een bestandssysteem de juiste attriburen levert, bijvoorbeeld, verwijderbare media gebruikt in meerdere systemen. Het mount -o context
commando kan ook gebruikt worden om labeling te ondersteunen voor bestandssystemen die geen uitgebreide attributen ondersteunen, zoals de File Allocation Table (FAT) of NFS bestandssystemen. De context opgegeven met de context
optie wordt niet naar schijf geschreven, de originele context blijft bewaard, en kan gezien worden door aan te koppelen zonder een context
optie (als het bestandssysteem om te beginnen uitgebreide attributen heeft).
mount -o context=SELinux_user:role:type:level
commando om het gewenste bestandssysteem aan te koppelen. Context veranderingen worden niet naar schijf geschreven. Standaard worden NFS aankoppelingen op de client zijde gelabeld met een standaard context gedefinieerd door tactiek voor NFS bestandssystemen. In algemene tactieken gebruikt deze standaard context het nfs_t
type. Zonder extra aankoppel opties, kan dit het delen van NFS bestandssytemen via andere services beletten, zoals de Apache HTTP server. Het volgende voorbeeld koppelt een NFS bestandssysteem zodanig aan dat het gedeeld kan worden via de Apache HTTP server:
# mount server:/export /local/mount/point -o\ context="system_u:object_r:httpd_sys_content_t:s0"
-o context
optie; omdat echter de context veranderingen niet naar schijf geschreven worden in deze situaties, wordt de context opgegeven met de context
optie alleen vastgehouden als de context
optie wordr gebruikt bij de volgende aankoppeling, en als dezelfde context wordt opgegeven.
-o context
optie, gebruik dan de SELinux system_u
gebruiker en de object_r
rol, en concentreer je op het type. Als je de MLS tactiek of multi-categorie beveiliging niet gebruikt, gebruik je het s0
niveau.
context
optie, zijn context veranderingen (door gebruikers en processen) verboden. Bijvoorbeeld, het uitvoeren van chcon
op een bestandssysteem aangekoppeld met een context
optie resulteert in een Operation not supported
fout.
file_t
type. Als het wenselijk is om een andere standaard context te gebruiken, koppel dan het bestandssysteem aan met de defcontext
optie.
/dev/sda2
) aan naar de nieuw aangemaakte /test/
map. Het veronderstelt dat er geen regels zijn in /etc/selinux/targeted/contexts/files/
die een context definieren voor de /test/
map:
# mount /dev/sda2 /test/ -o defcontext="system_u:object_r:samba_share_t:s0"
defcontext
optie definieert dat system_u:object_r:samba_share_t:s0
"de standaard beveiligingscontext voor niet gelabelde bestanden"[12] is.
/test/
) van het bestandssysteem behandeld alsof het is gelabeld met de context opgegeven door defcontext
(dit label wordt niet op schijf bewaard). Dit heeft gevolgen voor het labelen van bestanden die in /test/
aangemaakt worden: nieuwe bestanden erven het samba_share_t
type en deze labels worden op schijf bewaard.
/test/
terwijl het bestandssysteem was aangekoppeld met een defcontext
optie houden hun labels vast.
nfs_t
type. Alfhankelijk van de tactiek instelling, zullen services, zoals de Apache HTTP server en MySQL, misschien niet in staat zijn om bestanden te lezen die gelabeld zijn met het nfs_t
type. Dit kan verhinderen dat bestandssystemen die met dit type gelabeld zijn aangekoppeld worden en daarna gelezen of geexporteerd door andere services.
context
optie tijdens het aankoppelen om het nfs_t
type terzijde te schuiven. Gebruik de volgende context optie om NFS bestandssystemen aan te koppelen zodat ze gedeeld kunnen worden via de Apache HTTP server:
mount server:/export /local/mount/point -o\ context="system_u:object_r:httpd_sys_content_t:s0"
context
optie alleen behouden als de context
optie wordt gebruikt tijdens de volgende aankoppeling, en als dezelfde context wordt opgegeven.
context
opties, kunnen Booleans aangezet worden om services toe te staan om toegang te hebben tot bestandssystemen gelabeld met het nfs_t
type. Refereer naar Paragraaf 5.6.3, “Booleans voor NFS en CIFS” voor instructies over het instellen van Booleans om services toegang te geven tot het nfs_t
type.
/export
, welke twee submappen heeft, web/
en database/
. De volgende commando's proberen twee aankoppelingen te maken van een enkele NFS export, en proberen iedere keer de context terzijde te schuiven:
# mount server:/export/web /local/web -o\ context="system_u:object_r:httpd_sys_content_t:s0" # mount server:/export/database /local/database -o\ context="system_u:object_r:mysqld_db_t:s0"
/var/log/messages
geschreven:
kernel: SELinux: mount invalid. Same superblock, different security settings for (dev 0:15, type nfs)
-o nosharecache,context
opties. Het volgende voorbeeld koppelt meerdere aankoppelingen voor een enkele NFS export, met een andere context voor iedere aankoppeling (wat een enkele service toestaat om toegang tot iedere te hebben):
# mount server:/export/web /local/web -o\ nosharecache,context="system_u:object_r:httpd_sys_content_t:s0" # mount server:/export/database /local/database -o\ nosharecache,context="system_u:object_r:mysqld_db_t:s0"
server:/export/web
locaal aangekoppeld naar /local/web/
, waarbij alle bestanden gelabeld worden met het httpd_sys_content_t
type, wat Apache HTTP server toegang toestaat. server:/export/database
wordt locaal aangekoppeld naar /local/database
, waarbij alle bestanden gelabeld worden met het mysqld_db_t
type, wat MySQL toegang toestaat. Deze veranderingen worden niet naar schijf geschreven.
nosharecache
opties laten je dezelfde submap van een export meerdere keren aankoppelen met verschillende contexten (bijvoorbeeld, het meerdere keren aankoppelen van /export/web
). Koppel dezelfde submap van een export niet meerdere keren aan met verschillende contexten, omdat dit een overlappende aankoppeling maakt, waarbij bestanden bereikbaar zijn met twee verschillende contexten.
/etc/fstab
of een automounter map, en gebruik de gewenste context als een aankoppel optie. Het volgende voorbeeld voegt een regel toe aan /etc/fstab
voor een NFS context aankoppeling:
server:/export /local/mount/ nfs context="system_u:object_r:httpd_sys_content_t:s0" 0 0
user_home_t
type:
$ touch file1 $ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
/etc/
, wordt het nieuwe bestand aangemaakt overeenkomstig de standaard labelingsregels voor de /etc/
map. Een bestand kopiëren (zonder extra opties) hoeft de originele context niet te behouden:
$ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 # cp file1 /etc/ $ ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
file1
gekopieerd wordt naar /etc/
, en als /etc/file1
niet bestaat, wordt /etc/file1
aangemaakt als een nieuw bestand. Zoals in het voorbeeld hierboven is getoond, wordt /etc/file1
gelabeld met het etc_t
type, overeenkomstig de standaard labelingsregels.
cp
opties op heeft gegeven om de context van het originele bestand te behouden, zoals --preserve=context
. SELinux tactiek kan beletten dat contexten behouden blijven tijdens het kopiëren.
cp
commando, en er worden geen opties meegegeven, wordt het type geerfd van de doel, ouders map:
$ touch file1 $ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 $ ls -dZ /var/www/html/ drwxr-xr-x root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/ # cp file1 /var/www/html/ $ ls -Z /var/www/html/file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
file1
aangemaakt in de persoonlijke map van de gebruiker, en wordt gelabeld met het user_home_t
type. De /var/www/html/
map is gelabeld met het httpd_sys_content_t
type, zoals getoond met het ls -dZ /var/www/html/
commando. Als file1
wordt gekopieerd naar /var/www/html/
, erft het het httpd_sys_content_t
type, zoals het ls -Z /var/www/html/file1
commando laat zien.
cp --preserve=context
commando om de context te behouden tijdens het kopiëren:
$ touch file1 $ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 $ ls -dZ /var/www/html/ drwxr-xr-x root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/ # cp --preserve=context file1 /var/www/html/ $ ls -Z /var/www/html/file1 -rw-r--r-- root root unconfined_u:object_r:user_home_t:s0 /var/www/html/file1
file1
aangemaakt in de persoonlijke map van de gebruiker, en wordt gelabeld met het user_home_t
type. De /var/www/html/
map is gelabeld met het httpd_sys_content_t
type, zoals het ls -dZ /var/www/html/
coomado laat zien. Het gebruik van de --preserve=context
optie behoudt de SELinux context tijdens het kopiëren. Zoals het ls -Z /var/www/html/file1
commando laat zien is het user_home_t
type van file1
behouden toen het bestand gekopieerd werd naar /var/www/html/
.
cp -Z
commando om de context van de doel kopie te veranderen. Het volgende voorbeeld is uitgevoerd in de persoonlijke map van de gebruiker:
$ touch file1 $ cp -Z system_u:object_r:samba_share_t:s0 file1 file2 $ ls -Z file1 file2 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 -rw-rw-r-- user1 group1 system_u:object_r:samba_share_t:s0 file2 $ rm file1 file2
-Z
optie. Zonder de -Z
optie, zou file2
gelabeld zijn met de unconfined_u:object_r:user_home_t
context.
# touch /etc/file1 # ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1 # touch /tmp/file2 # ls -Z /tmp/file2 -rw-r--r-- root root unconfined_u:object_r:user_tmp_t:s0 /tmp/file2 # cp /tmp/file2 /etc/file1 # ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
/etc/file1
, gelabeld met het etc_t
type, en /tmp/file2
, gelabeld met het user_tmp_t
type. Het cp /tmp/file2 /etc/file1
commando overschrijft file1
met file2
. Na het kopiëren, laat het ls -Z /etc/file1
zien dat file1
gelabeld is met het etc_t
type, niet het user_tmp_t
type van /tmp/file2
welke /etc/file1
heeft vervangen.
/var/www/html/
, welke gebruikt wordt door de Apache HTTP server. Omdat het bestand is verplaatst, erft het niet de juiste SELinux context:
cd
commando uit zonder argumenten om naar je persoonlijke map te gaan. Als je daar bent, voer je het touch file1
commando uit om een bestand aan te maken. Dit bestand is gelabeld met het user_home_t
type:
$ ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
ls -dZ /var/www/html/
commando uit om de SELinux context van de /var/www/html/
map te zien:
$ ls -dZ /var/www/html/ drwxr-xr-x root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
/var/www/html/
map gelabeld met het httpd_sys_content_t
type. Bestanden en mappen aangemaakt in de /var/www/html/
map erven dit type, en dus zijn ze ermee gelabeld.
mv file1 /var/www/html/
commando uit om file1
te verplaatsen naar de /var/www/html/
map. Omdat het bestand is verplaatst behoudt het zijn huidige user_home_t
type:
# mv file1 /var/www/html/ # ls -Z /var/www/html/file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 /var/www/html/file1
user_home_t
type. Als alle bestanden die een web pagina vormen gelabeld zijn met het user_home_t
type, of een ander type dat de Apache HTTP server niet kan lezen, wordt toegang geweigerd als je probeert ze te benaderen met Firefox of op tekst gebaseerde webbrowsers.
mv
commando kan een verkeerde SELinux context tot gevolg hebben, en processen, zoals de Apache HTTP server en Samba, beletten om toegang te krijgen tot die bestanden en mappen.
/usr/sbin/matchpathcon
commando om te controleren of bestanden en mappen de juiste SELinux context hebben. Van de matchpathcon(8) manual pagina: "matchpathcon
ondervraagt de systeem tactiek en levert de standaard beveiligings context behorend bij het bestandspad."[13]. Het volgende voorbeeld laat het gebruik van het /usr/sbin/matchpathcon
commando zien om te bevestigen dat bestanden in de /var/www/html/
map correct gelabeld zijn:
touch /var/www/html/file{1,2,3}
commando uit om drie bestanden (file1
, file2
, en file3
) aan te maken. Deze bestanden erven het httpd_sys_content_t
type van de /var/www/html/
map:
# touch /var/www/html/file{1,2,3} # ls -Z /var/www/html/ -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
chcon -t samba_share_t /var/www/html/file1
commando uit om het type van file1
te veranderen naar samba_share_t
. Merk op: de Apache HTTP server kan geen bestanden of mappen lezen die gelabeld zijn met het samba_share_t
type.
/usr/sbin/matchpathcon
-V
optie vergelijkt de huidige SELinux contect met de juiste, standaard context in SELinux tactiek. Voer het /usr/sbin/matchpathcon -V /var/www/html/*
commando uit om alle bestanden in de /var/www/html/
map te controleren:
$ /usr/sbin/matchpathcon -V /var/www/html/* /var/www/html/file1 has context unconfined_u:object_r:samba_share_t:s0, should be system_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2 verified. /var/www/html/file3 verified.
/usr/sbin/matchpathcon
commando legt uit dat file1
is gelabeld met het samba_share_t
type, maar het zou gelabeld moeten zijn met het httpd_sys_content_t
type:
/var/www/html/file1 has context unconfined_u:object_r:samba_share_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
file1
, voer je als de Linux root gebruiker het /sbin/restorecon -v /var/www/html/file1
commando uit:
# /sbin/restorecon -v /var/www/html/file1 restorecon reset /var/www/html/file1 context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
tar
behoudt standaard geen uitgebreide attributen. Omdat SELinux context bewaard wordt in uitgebreide attributen, kan de context verloren raken als bestanden gearchiveerd worden. Gebruik tar --selinux
om archieven te maken die de context behouden. Als een Tar archief bestanden zonder uitgebreide attributen bevat, of je wilt dat de uitgebreide attributen overeenkomen met de systeemstandaard, voer het archiveren dan uit met /sbin/restorecon
:
$ tar -xvf archive.tar
| /sbin/restorecon -f -
/sbin/restorecon
commando uit te voeren.
touch /var/www/html/file{1,2,3}
commando uit om drie bestanden (file1
, file2
, en file3
) aan te maken. Deze bestanden erven het httpd_sys_content_t
type van de /var/www/html/
map:
# touch /var/www/html/file{1,2,3} # ls -Z /var/www/html/ -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
cd /var/www/html/
commando uit om naar de /var/www/html/
map te gaan. Als je in die map bent, voer je als de Linux root gebruiker het tar --selinux -cf test.tar file{1,2,3}
uit om een Tar archief met de naam test.tar
te maken.
mkdir /test
commando uit om een nieuwe map aan te maken, en daarna voer je het chmod 777 /test/
commando uit om alle gebruikers volledige toegang tot de /test/
map te geven.
cp /var/www/html/test.tar /test/
commando uit om het test.tar
bestand naar de /test/
map te kopiëren.
cd /test/
comando uit om naar de /test/
map te gaan. Als je in die map bent, voer je het tar -xvf test.tar
commando uit om het Tar archief uit te pakken.
ls -lZ /test/
commando uit om de SELinux context te bekijken. Het httpd_sys_content_t
type is behouden gebleven, in plaats van veranderd te zijn naar default_t
, wat gebeurt zou zijn als de --selinux
optie niet gebruikt was:
$ ls -lZ /test/ -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3 -rw-r--r-- user1 group1 unconfined_u:object_r:default_t:s0 test.tar
/test/
map niet langer nodig is, voer je als de Linux root gebruiker het rm -ri /test/
commando uit om het te verwijderen te samen met de bestanden er in.
tar
, zoals de --xattrs
optie die alle uitgebreide attributen behoudt.
star
behoudt standaard geen uitgebreide attributen. Omdat SELinux context bewaard wordt in uitgebreide attributen, kan de context verloren gaan als de bestanden gearchiveerd worden. Gebruik star -xattr -H=exustar
om archieven te maken die context behouden. Het star pakket is standaard niet geinstalleerd. Om star
te installeren, voer je als de Linux root gebruiker het yum install star
commando uit.
touch /var/www/html/file{1,2,3}
commando uit om drie bestanden (file1
, file2
, en file3
) aan te maken. Deze bestanden erven het httpd_sys_content_t
type van de /var/www/html/
map:
# touch /var/www/html/file{1,2,3} # ls -Z /var/www/html/ -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
cd /var/www/html/
commando uit om naar de /var/www/html/
map te gaan. Als je in die map bent, voer je als de Linux root gebruiker het star -xattr -H=exustar -c -f=test.star file{1,2,3}
commando uit om een Star archief met de naam test.star
te maken:
# star -xattr -H=exustar -c -f=test.star file{1,2,3} star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
mkdir /test
commando uit om een nieuwe map aan te maken, en daarna voer je het chmod 777 /test/
commando uit om alle gebruikers volledige toegang tot de /test/
map te geven.
cp /var/www/html/test.star /test/
commando uit om het test.star
bestand te kopiëren naar de /test/
map.
cd /test/
commando uit om naar de /test/
map te gaan. Als je in die map bent, voer je het star -x -f=test.star
commando uit om het Star archief uit te pakken:
$ star -x -f=test.star star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
ls -lZ /test/
commando uit om de SELinux context te bekijken. Het httpd_sys_content_t
type is behouden gebleven, in plaats van veranderd te zijn naar default_t
, wat gebeurt zou zijn als de --selinux
optie niet gebruikt was:
$ ls -lZ /test/ -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3 -rw-r--r-- user1 group1 unconfined_u:object_r:default_t:s0 test.star
/test/
map niet langer nodig is, voer je als de Linux root gebruiker het rm -ri /test/
commando uit om het te verwijderen te samen met de bestanden er in.
star
niet langer nodig is, voer je als de Linux root gebruiker het yum remove star
commando uit om het pakket te verwijderen.
star
.
[8] Brindle, Joshua. "Re: blurb for fedora setools packages" Email aan Murray McAllister. 1 November 2008. Elke bewerking en verandering in deze versie is gedaan door Murray McAllister.
[9] Managing Software with yum, geschreven door Stuart Ellis, bewerkt door Paul W. Frields, Rodrigo Menezes, en Hugo Cisneiros.
[10] Refereer naar http://en.wikipedia.org/wiki/Runlevel voor informatie over runlevels.
[11]
Bestanden in /etc/selinux/targeted/contexts/files/
definieren context voor bestanden en mappen. Bestanden in deze map worden gelezen door restorecon
en setfiles
om bestanden en mappen te herstellen naar hun standaard context.
[12] Morris, James. "Filesystem Labeling in SELinux". Published 1 October 2004. Accessed 14 October 2008: http://www.linuxjournal.com/article/7426.
[13] De matchpathcon(8) manual pagina, zoals verstuurd met het libselinux-utils pakket Fedora, is geschreven door Daniel Walsh. Alle bewerkingen of veranderingen in deze versie zijn gemaakt door Murray McAllister.
su
en sudo
commando's uit te voeren om de Linux root gebruiker te worden. Dit helpt om het systeem te beschermen tegen de gebruiker. Refereer naar Paragraaf 4.3, “Beperkte en onbeperkte gebruikers” voor meer informatie over beperkte gebruikers in Fedora 11.
semanage login -l
commando uit om de afbeelding van Linux gebruikers op SELinux gebruikers te zien:
# /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
__default__
(welke is afgebeeld op de SELinux unconfined_u
gebruiker). Als een Linux gebruiker wordt aangemaakt met het useradd
commando, worden ze afgebeeld op de SELinux unconfined_u
gebruiker indien er geen opties zijn opgegeven. Het volgende definieert de standaard afbeelding:
__default__ unconfined_u s0-s0:c0.c1023
unconfined_u
gebruiker draaien in het unconfined_t
domein. Dit kan getoond worden door het uitvoeren van het id -Z
commando terwijl je ingelogd bent als een Linux gebruiker afgebeeld op unconfined_u
:
$ id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
unconfined_t
domein draaien, worden SELinux tactiekregels toegepast, maar er bestaan tactiekregels die Linux gebruikers die in het unconfined_t
domein draaien bijna alle toegang toestaan. Als onbeperkte Linux gebruikers een toepassing uitvoeren waarvan de SELinux tactiek definieert dat het kan overgaan van het unconfined_t
domein naar zijn eigen beperkte domein, zijn onbeperkte Linux gebruikers nog steeds onderworpen aan de beperkingen van het beperkte domein. Het beveiligings voordeel hiervan is dat, zelfs als een Linux gebruiker onbeperkt draait, de toepassing beperkt blijft, en dat daardoor de uitbuiting van een fout in de toepassing beperkt kan worden door tactiek. Merk op: dit beschermt het systeem niet tegen de gebruiker. In plaats daarvan worden de gebruiker en het systeem beschermd tegen mogelijke schade veroorzaakt door een fout in de toepassing.
useradd
, gebruik je de -Z
optie om op te geven op welke SELinux gebruiker ze afgebeeld worden. Het volgende voorbeeld maakt een nieuwe Linux gebruiker aan, useruuser, en beeldt die gebruiker af op de SELinux user_u
gebruiker. Linux gebruikers afgebeeld op de SELinux user_u
gebruiker draaien in het user_t
domein. In dit domein zijn Linux gebruikers niet in staat om setuid toepassingen te draaien tenzij SELinux tactiek dit toestaat (zoals passwd
), en kunnen ze su
of sudo
niet uitvoeren, wat hen tegenhoudt om met deze commando's de Linux root gebruiker te worden.
/usr/sbin/useradd -Z user_u useruuser
commando uit om een nieuwe Linux gebruiker (useruuser) aan te maken die afgebeeld wordt op de SELinux user_u
gebruiker.
semanage login -l
commando uit om de afbeelding van de Linux useruuser
gebruiker op user_u
te zien:
# /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 useruuser user_u s0
passwd useruuser
commando uit om een wachtwoord toe te kennen aan de Linux useruuser gebruiker:
# passwd useruuser Changing password for user useruuser. New UNIX password:Enter a password
Retype new UNIX password:Enter the same password again
passwd: all authentication tokens updated successfully.
user_u
), en stelt de bijbehorende SELinux context in. De shell van de Linux gebruiker wordt dan opgestart met deze context. Voer het id -Z
commando uit om de context van een Linux gebruiker te bekijken:
[useruuser@localhost ~]$ id -Z user_u:user_r:user_t:s0
/usr/sbin/userdel -r useruuser
commando uit als de Linux root gebruiker om het te verwijderen te samen met zijn persoonlijke map.
unconfined_u
gebruiker (het standaard gedrag), en je wilt de SELinux gebruiker waarop ze afgebeeld zijn veranderen, gebruik je het semanage login
commando. Het volgende voorbeeld maakt een nieuwe Linux gebruiker aan met de naam newuser, en beeldt dan die Linux gebruiker af op de SELinux user_u
gebruiker:
/usr/sbin/useradd newuser
commando uit om een nieuwe Linux gebruiker (newuser) aan te maken. Omdat deze gebruiker de standaard afbeelding gebruikt, verschijnt deze niet in de de /usr/sbin/semanage login -l
output:
# /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
user_u
gebruiker, voer je het volgende commando uit als de Linux root gebruiker:
/usr/sbin/semanage login -a -s user_u newuser
-a
optie voegt een nieuwe aantekening toe, en de -s
optie specificeert de SELinux gebruiker waarop de Linux gebruiker afgebeeld wordt. Het laatse argument, newuser
, is de Linux gebruiker die je wilt afbeelden op de opgegeven SELinux gebruiker.
user_u
te bekijken, voer je het semanage login -l
commando uit als de Linux root gebruiker:
# /usr/sbin/semanage login -l Login Name SELinux User MLS/MCS Range __default__ unconfined_u s0-s0:c0.c1023 newuser user_u s0 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023
passwd newuser
command to assign a password to the Linux newuser user:
# passwd newuser Changing password for user newuser. New UNIX password:Enter a password
Retype new UNIX password:Enter the same password again
passwd: all authentication tokens updated successfully.
id -Z
commando uit om de SELinux context van newuser te bekijken:
[newuser@rlocalhost ~]$ id -Z user_u:user_r:user_t:s0
userdel -r newuser
commando uit als de Linux root gebruiker om het te verwijderen, te samen met zijn persoonlijke map. Ook de afbeelding van de Linux newuser gebruiker op user_u
wordt verwijderd:
# /usr/sbin/userdel -r newuser # /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
__default__
login (welke afgebeeld wordt op de SELinux unconfined_u
gebruiker). Als je nieuwe Linux gebruikers, en Linux gebruikers die niet specifiek afgebeeld zijn op een SELinux gebruiker, standaard wilt instellen om beperkt te zijn, verander je de standaard afbeelding met het semanage login
commando.
unconfined_u
naar user_u
:
/usr/sbin/semanage login -m -S targeted -s "user_u" -r s0 __default__
semanage login -l
commando uit als de Linux root gebruiker om te bevestigen dat de __default__
login is afgebeeld op user_u
:
# /usr/sbin/semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023
semanage login -l
output, worden ze afgebeeld op user_u
, via de __default__
login.
__default__
login af te beelden op de SELinux unconfined_u
gebruiker:
/usr/sbin/semanage login -m -S targeted -s "unconfined_u" -r\ s0-s0:c0.c1023 __default__
yum install xguest
commando uit om het xguest pakket te installeren. Installeer ook de benodigde afhankelijkheden.
getenforce
commando om er zeker van te zijn dat SELinux in de afdwingende modus draait:
$ /usr/sbin/getenforce Enforcing
Guest
account toegevoegd aan GDM. Om in te loggen klik je op het Guest
account:
/tmp/
, waarnaar ze schrijfrechten hebben, helpt om te voorkomen van foutieve of kwaadwillige toepassingen bestanden veranderen waarvan de gebruiker eigenaar is. In Fedora 11 kunnen Linux gebruikers in de guest_t
en xguest_t
domeinen standaard geen toepassingen in hun persoonlijke mappen of in /tmp/
; Linux gebruikers in de user_t
en staff_t
domeinen kunnen dit echter wel.
setsebool
commando. Het setsebool
commando moet uitgevoerd worden als de Linux root gebruiker. Het setsebool -P
commando maakt de veranderingen blijvend. Geruik de -P
optie niet als je niet wilt dat veranderingen blijvend zijn na een nieuwe systeem opstart:
guest_t
domein toe te staan toepassingen uit te voeren in hun persoonlijke mappen en /tmp/
:
/usr/sbin/setsebool -P allow_guest_exec_content on
xguest_t
domein toe te staan om toepassingen uit te voeren in hun persoonlijke mappen en /tmp/
:
/usr/sbin/setsebool -P allow_xguest_exec_content on
user_t
domein te beletten om toepassingen uit te voeren in hun persoonlijke mappen en /tmp/
:
/usr/sbin/setsebool -P allow_user_exec_content off
staff_t
domein te beletten toepassingen uit te voeren in hun persoonlijke mappen en /tmp/
:
/usr/sbin/setsebool -P allow_staff_exec_content off
audit2allow
.
Daemon | Log Location |
---|---|
auditd on | /var/log/audit/audit.log |
auditd off; rsyslogd on | /var/log/messages |
setroubleshootd, rsyslogd, and auditd on | /var/log/audit/audit.log . Easier-to-read denial messages also sent to /var/log/messages |
setroubleshootd
en auditd
daemons draaien, dan worden een gele ster en een waarschuwing getoond als toegang wordt geweigerd door SELinux:
Forbidden
You don't have permission to access file name
on this server
/var/log/messages
en /var/log/audit/audit.log
voor respectievelijk "SELinux is preventing"
en "denied"
fouten. Dit kan gedaan worden met het uitvoeren van de volgende commando's als de Linux root gebruiker:
grep "SELinux is preventing" /var/log/messages
grep "denied" /var/log/audit/audit.log
/var/www/html/
voor een website, wil een beheerder /srv/myweb/
gebruiken. In Fedora 11 is de /srv/
map gelabeld met het var_t
type. Bestanden en mappen aangemaakt in /srv/
erven dit type. Ook kunnen nieuw aangemaakte top-niveau mappen (zoals /myserver/
) gelabeld zijn met het default_t
type. SELinux belet de Apache HTTP server (httpd
) toegang tot beide deze types. Om toegang toe te staan, moet SELinux weten dat de bestanden in /srv/myweb/
toegankelijk moeten zijn voor httpd
:
# /usr/sbin/semanage fcontext -a -t httpd_sys_content_t \ "/srv/myweb(/.*)?"
semanage
commando voegt de context voor de /srv/myweb/
map (en alle bestanden en mappen er in) toe aan de SELinux bestandscontext configuratie[14]. Het semanage
commando verandert de context niet. Als de Linux root gebruiker voer je het restorecon
commando uit om de veranderingen toe te passen:
# /sbin/restorecon -R -v /srv/myweb
matchpathcon
commando controleert de context van een bestandspad en vergelijkt het met het standaard label voor dat pad. Het volgende voorbeeld laat het gebruik van matchpathcon
zien voor een map die verkeerd gelabelde bestanden bevat:
$ /usr/sbin/matchpathcon -V /var/www/html/* /var/www/html/index.html has context unconfined_u:object_r:user_home_t:s0, should be system_u:object_r:httpd_sys_content_t:s0 /var/www/html/page1.html has context unconfined_u:object_r:user_home_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
index.html
en page1.html
bestanden gelabeld met het user_home_t
type. Dit type wordt gebruikt voor bestanden in persoonlijke mapen van gebruikers. Het gebruik van het mv
commando om bestanden te verplaatsen vanuit je persoonlijke map kan als gevolg hebben dat de bestanden gelabeld zijn met het user_home_t
type. Dit type moet niet bestaan buiten persoonlijke mappen. Gebruik het restorecon
commando om het correcte type van zulke bestanden te herstellen:
# /sbin/restorecon -v /var/www/html/index.html restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
-R
optie:
# /sbin/restorecon -R -v /var/www/html/ restorecon reset /var/www/html/page1.html context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0 restorecon reset /var/www/html/index.html context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
matchpathcon
.
semanage
commando.
httpd_can_network_connect_db
Boolean aan:
# /usr/sbin/setsebool -P httpd_can_network_connect_db on
getsebool
en grep
commando's om te zien of er Booleans beschikbaar zijn die toegang toestaan. Bijvoorbeeld, gebruik het getsebool -a | grep ftp
commando om te zoeken naar Booleans gerelateerd met FTP:
$ /usr/sbin/getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off httpd_enable_ftp_server --> off tftp_anon_write --> off
/usr/sbin/getsebool -a
commando uit. Voor een lijst met Booleans, en uitleg over wat ieder is, en of ze aan of uit zijn, voer je het /usr/sbin/semanage boolean -l
commando uit als de Linux root gebruiker. Refereer naar Paragraaf 5.6, “Booleans” voor informatie over het tonen en instellen van Booleans.
semanage port -l | grep http
commando uit als de Linux root gebruiker om een lijst te zien van de aan http
gerelateerde poorten:
# /usr/sbin/semanage port -l | grep http http_cache_port_t tcp 3128, 8080, 8118 http_cache_port_t udp 3130 http_port_t tcp 80, 443, 488, 8008, 8009, 8443 pegasus_http_port_t tcp 5988 pegasus_https_port_t tcp 5989
http_port_t
poort type definieert de poorten waarnaar de Apache HTTP server kan luisteren, welke in dit geval zijn, de TCP poorten 80, 443, 488, 8008, 8009, en 8443. Als een beheerder httpd.conf
zodanig instelt dat httpd
luistert op poort 9876 (Listen 9876
), maar tactiek is niet vernieuwd om dit te weten, zal het service httpd start
commando falen:
# /sbin/service httpd start Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:9876 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:9876 no listening sockets available, shutting down Unable to open logs [FAILED]
/var/log/audit/audit.log
:
type=AVC msg=audit(1225948455.061:294): avc: denied { name_bind } for pid=4997 comm="httpd" src=9876 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
httpd
toe te staan te luisteren op een poort dat niet getoond wordt voor het http_port_t
poort type, voer je het semanage port
commando uit om een poort toe te voegen aan de tactiek configuratie[15]:
# /usr/sbin/semanage port -a -t http_port_t -p tcp 9876
-a
optie voegt een nieuwe aantekening toe, de -t
optie definieert een type, en de -p
option definieert een protocol. Het laatste argument is het poortnummer dat toegevoegd moet worden.
audit2allow
om een aangepaste tactiek module te maken om toegang toe te staan. Refereer naar Paragraaf 7.3.8, “Toegang toestaan: audit2allow” voor informatie over het gebruik van audit2allow
.
audit2allow
.
ls -l
commando om de standaard Linux rechten te zien:
$ ls -l /var/www/html/index.html -rw-r----- 1 root root 0 2009-05-07 11:06 index.html
index.html
. De root gebruiker heeft lees en schrijf rechten (-rw
), en leden van de root groep hebben lees rechten (-r-
). Alle anderen hebben geen toegang (---
). Standaard laten zulke rechten niet toe dat httpd
dit bestand leest. Om dit op te lossen, gebruik je het chown
commando om de eigenaar en de groep te veranderen. Dit commando moet uitgevoerd worden als de Linux root gebruiker:
# chown apache:apache /var/www/html/index.html
httpd
draait als de Linux apache gebruiker. Als je httpd
draait met een andere gebruiker, vervang je apache:apache
met die gebruiker.
dontaudit
regels. Deze regels komen veel voor in standaard tactiek. Het nadeel van dontaudit
is dat, hoewel SELinux toegang weigert, weigeringsboodschappen niet worden gelogd, wat het foutzoeken moeilijk maakt.
dontaudit
regels uit te zetten, zodat alle weigeringen gelogd worden, voer je het volgende commando uit als de Linux root gebruiker:
/usr/sbin/semodule -DB
-D
zet dontaudit
regels uit; de -B
optie bouwt de tactiek opnieuw op. Na het uitvoeren van semodule -DB
, probeer je de toepassing opnieuw die toestemmigs problemen vertoonde, en kijk of er nu SELinux weigeringen — relevant voor de toepassing — zijn gelogd. Wees voorzichtig met het beslissen welke weigeringen toegestaan moeten worden, omdat sommige genegeerd moeten worden en afgehandeld met dontaudit
regels. In geval van twijfel, of als je hulp zoekt, neem dan contact op met andere SELinux gebruikers en ontwikkelaars op een SELinux lijst, zoals fedora-selinux-list.
dontaudit
regels weer aan te zetten, voer je het volgende commando uit als de Linux root gebruiker:
/usr/sbin/semodule -B
dontaudit
regels, voer je het sesearch --dontaudit
commando uit. Versmal het zoeken met gebruik van de -s domein
optie en het grep
commando. Bijvoorbeeld:
$ sesearch --dontaudit -s smbd_t | grep squid WARNING: This policy contained disabled aliases; they have been removed. dontaudit smbd_t squid_port_t : tcp_socket name_bind ; dontaudit smbd_t squid_port_t : udp_socket name_bind ;
httpd
). Deze informatie kan in de standaard manual pagina zijn, of in een manual pagina met selinux
voor of achter de servicenaam.
samba_share_t
type, en ook Booleans die toestaan dat bestanden gelabeld met andere types dan samba_share_t
met Samba geexporteerd kunnen worden.
nfs_export_all_ro
of nfs_export_all_rw
aangezet moeten worden.
Red Hat SELinux BIND Security Profile
paragraaf). De named_selinux(8) manual pagina beschrijf dat named
standaard niet naar master zone bestanden kan schrijven, en om deze toegang toe te staan, de named_write_master_zones
Boolean aangezet moet worden.
domain
_disable_trans
Booleans beschikbaar om een toepassing te beletten om over te gaan naar een beperkt domein, en daarom draait het proces in een onbeperkt domein, zoals initrc_t
. Het aanzetten van zulke Booleans kan grote problemen veroorzaken. Bijvoorbeeld, als de httpd_disable_trans
Boolean aangezet is:
httpd
in het onbeperkte initrc_t
domein. Bestanden gemaakt door processen die in het initrc_t
domein draaien hebben misschien niet dezelfde labelingsregels toegepast gekregen als bestanden die draaien in het httpd_t
domein, wat potentieel toestaat dat processen verkeerd gelabelde bestanden maken. Dit veroorzaakt later toegangs problemen.
httpd_t
kunnen niet communiceren met initrc_t
, wat potentieel extra fouten veroorzaakt.
domain
_disable_trans
Booleans zijn verwijderd in Fedora 7, hoewel er geen vervanger voor was. Toelatende domeinen lossen de hierboven beschreven problemen op: overgangs regels worden toegepast, en bestanden worden aangemaakt met de juiste labels.
audit2allow
kon daarna gebruikt worden om te helpen met het schrijven van de tactiek. Dit maakte het gehele systeem kwetsbaar. Met toelatende domeinen, wordt alleen het domein in de nieuwe tactiek toelatend, zonder het hele systeem kwetsbaar te maken.
semanage permissive -a domein
commando uit, waarin domein
het domein is dat je toelatend wilt maken. Bijvoorbeeld, voer het volgende commando uit als de Linux root gebruiker om het httpd_t
domein (het domein waarin de Apache HTTP sever draait) toelatend te maken:
/usr/sbin/semanage permissive -a httpd_t
semodule -l | grep permissive
commando uit als de Linux root gebruiker. Bijvoorbeeld:
# /usr/sbin/semodule -l | grep permissive permissive_httpd_t 1.0
semanage permissive -d domein
commando uit als de Linux root gebruiker. Bijvoorbeeld:
/usr/sbin/semanage permissive -d httpd_t
SYSCALL
boodschap is verschillend voor toelatende domeinen. Het volgende is een voorbeeld AVC weigering ( en de bijbehorende systeem aanroep) van de Apache HTTP server:
type=AVC msg=audit(1226882736.442:86): avc: denied { getattr } for pid=2427 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file type=SYSCALL msg=audit(1226882736.442:86): arch=40000003 syscall=196 success=no exit=-13 a0=b9a1e198 a1=bfc2921c a2=54dff4 a3=2008171 items=0 ppid=2425 pid=2427 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
httpd_t
domein niet toelatend, en daarom wordt de actie geweigerd, en de SYSCALL
boodschap bevat success=no
. Het volgende is een voorbeeld AVC weigering voor dezelfde actie, behalve dat het semanage permissive -a httpd_t
commando is uitgevoerd om het httpd_t
domein toelatend te maken:
type=AVC msg=audit(1226882925.714:136): avc: denied { read } for pid=2512 comm="httpd" name="file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file type=SYSCALL msg=audit(1226882925.714:136): arch=40000003 syscall=5 success=yes exit=11 a0=b962a1e8 a1=8000 a2=0 a3=8000 items=0 ppid=2511 pid=2512 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
success=yes
in de SYSCALL
boodschap.
auditd
, rsyslogd
, en setroubleshootd
daemons draaien. Refereer naar Paragraaf 5.2, “Welk log bestand wordt gebruikt” voor informatie over het starten van deze daemons. Een aantal gereedschappen zijn beschikbaar voor het zoeken naar en bekijken van SELinux weigeringen, zoals ausearch
, aureport
, en sealert
.
ausearch
. Uit de ausearch(8) manual pagina: "ausearch
is een gereedschap dat de daemon logs kan onderzoeken voor gebeurtenissen gebaseerd op verscheidene zoek criteria"[16]. Het ausearch
gereedschap heeft toegang tot /var/log/audit/audit.log
, en moet daarom als de Linux root gebruiker uitgevoerd worden:
Zoeken naar | Commando |
---|---|
alle weigeringen | /sbin/ausearch -m avc |
weigeringen voor vandaag | /sbin/ausearch -m avc -ts today |
weigeringen van de laatste 10 minuten | /sbin/ausearch -m avc -ts recent |
-c comm-naam
optie, waarin comm-naam
de naam van het programma is[17], bijvoorbeeld, httpd
voor de Apache HTTP server, en smbd
voor Samba:
/sbin/ausearch -m avc -c httpd
/sbin/ausearch -m avc -c smbd
ausearch
opties.
aureport
. Uit de aureport(8) manual pagina: "aureport
is een gereedschap dat samenvattingsrapporten maakt van de systeem logs"[18]. Het aureport
gereedschap heeft toegang tot /var/log/audit/audit.log
, en moet daarom als de Linux root gebruiker uitgevoerd worden. Om een lijst te zien van SELinux weigeringen en hoe vaak ze zijn voorgekomen, voer je het aureport -a
commando uit. Het volgende is een vorbeeld output die twee weigeringen bevat:
# /sbin/aureport -a AVC Report ======================================================== # date time comm subj syscall class permission obj event ======================================================== 1. 05/01/2009 21:41:39 httpd unconfined_u:system_r:httpd_t:s0 195 file getattr system_u:object_r:samba_share_t:s0 denied 2 2. 05/03/2009 22:00:25 vsftpd unconfined_u:system_r:ftpd_t:s0 5 file read unconfined_u:object_r:cifs_t:s0 denied 4
aureport
opties.
sealert
, welke weigerings boodschappen leest die vertaald zijn door setroubleshoot-server. Weigeringen krijgen ID's toegekend, zoals te zien in /var/log/messages
. Het volgende is een voorbeeld weigering van messages
:
setroubleshoot: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/file1 (samba_share_t). For complete SELinux messages. run sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020
84e0b04d-d0ad-4347-8317-22e74f6cd020
. De -l
optie neemt een ID als argument. Het uitvoeren van het sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020
commando laat een gedetaileerde analyse zien waarom SELinux toegang weigerde, en een mogelijke oplossing om toegang toe te staan.
setroubleshootd
en auditd
daemons draaien, worden een gele ster en een waarschuwing getoond als toegang geweigerd wordt door SELinux. Het klikken op de ster start de sealert
GUI, en laat de weigeringen zien in HTML output:
sealert -b
commando uit om de sealert
GUI op te starten.
sealert -l \*
commando uit om een gedetaileerde analyse van alle weigeringen te zien.
sealert -a /var/log/audit/audit.log -H > audit.html
commando uit om een HTML versie te maken van de sealert
analyse, zoals te zien is met de sealert
GUI.
sealert
opties.
/var/log/audit/audit.log
. Het volgende is een voorbeeld AVC weigering (en de bijbehorende systeem aanroep) die optrad toen de Apache HTTP server (draaiende in het httpd_t
domein) probeerde om toegang te krijgen tot het /var/www/html/file1
bestand (gelabeld met het samba_share_t
type):
type=AVC msg=audit(1226874073.147:96): avc: denied { getattr } for pid=2465 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file type=SYSCALL msg=audit(1226874073.147:96): arch=40000003 syscall=196 success=no exit=-13 a0=b98df198 a1=bfec85dc a2=54dff4 a3=2008171 items=0 ppid=2463 pid=2465 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=6 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
{ getattr }
getattr
geeft aan dat het bron proces probeerde om de status informatie van het doel bestand te lezen. Dit treedt op voor het lezen van bestanden. Deze actie is geweigerd omdat toegang werd geprobeerd naar het bestand dat een verkeerd label had. Vaak geziene rechten zijn getattr
, read
, en write
.
httpd
"exe=
sectie van de systeem aanroep (SYSCALL
) boodschap, welke in dit geval exe="/usr/sbin/httpd"
is.
/var/www/html/file1
"unconfined_u:system_r:httpd_t:s0
"httpd_t
domein.
unconfined_u:object_r:samba_share_t:s0
"file1
. Merk op: het samba_share_t
type is niet bereikbaar voor processen die draaien in het httpd_t
domein.
tcontext
overeenkomen met de scontext
, bijvoorbeeld, als een proces probeert een systeem service uit te voeren dat de eigenschappen van dat draaiende proces zal veranderen, zoals een gebruikers ID. Ook kan de tcontext
overeenkomen met de scontext
als een proces probeert meer hulpbronnen (zoals geheugen) te gebruiken dan de normale limieten toestaan, wat resulteert in een beveiligings controle om te zien of dat proces gemachtigd is om die limieten te doorbreken.
SYSCALL
) boodachap, zijn twee items interessant:
success=no
: geeft aan of de weigering (AVC) afdwingend was of niet. success=no
geeft aan dat de system aanroep gefaald heeft (SELinux weigerde toegang). success=yes
geeft aan dat de systeem aanroep gelukt is - dit kan voorkomen bij toelatende domeinen of onbeperkte domeinen, zoals initrc_t
en kernel_t
.
exe="/usr/sbin/httpd
"
: het volledige pad naar het programma dat het proces heeft opgestart, welke in dit geval exe="/usr/sbin/httpd"
is.
scontext
) met de doel context (tcontext
). Moet het proces (scontext
) toegang hebben tot zo'n object (tcontext
)? Bijvoorbeeld, de Apache HTTP server (httpd_t
) moet alleen toegang hebben tot types gespecificeerd in de httpd_selinux(8) manual pagina, zoals httpd_sys_content_t
, public_content_t
, enzovoort, behalve als iets anders ingesteld was.
/var/log/messages
. Het volgende is een voorbeeld AVC weigering (gelogd naar messages
) die optrad toen de Apache HTTP server (draaiende in het httpd_t
domein) probeerde toegang te krijgen tot het /var/www/html/file1
bestand (gelabeld met het samba_share_t
type):
hostname
setroubleshoot: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/file1 (samba_share_t). For complete SELinux messages. run sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020
sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020
commando uit om de complete boodschap te zien. Dit commando werkt alleen op de locale machine, en presenteert dezelfde informatie als de sealert
GUI:
$ sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020 Summary: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/file1 (samba_share_t). Detailed Description: SELinux denied access to /var/www/html/file1 requested by httpd. /var/www/html/file1 has a context used for sharing by different program. If you would like to share /var/www/html/file1 from httpd also, you need to change its file context to public_content_t. If you did not intend to this access, this could signal a intrusion attempt. Allowing Access: You can alter the file context by executing chcon -t public_content_t '/var/www/html/file1' Fix Command: chcon -t public_content_t '/var/www/html/file1' Additional Information: Source Context unconfined_u:system_r:httpd_t:s0 Target Context unconfined_u:object_r:samba_share_t:s0 Target Objects /var/www/html/file1 [ file ] Source httpd Source Path /usr/sbin/httpd Port <Unknown> Hosthostname
Source RPM Packages httpd-2.2.10-2 Target RPM Packages Policy RPM selinux-policy-3.5.13-11.fc11 Selinux Enabled True Policy Type targeted MLS Enabled True Enforcing Mode Enforcing Plugin Name public_content Host Namehostname
PlatformLinux hostname 2.6.27.4-68.fc11.i686 #1 SMP Thu Oct
30 00:49:42 EDT 2008 i686 i686 Alert Count 4 First Seen Wed Nov 5 18:53:05 2008 Last Seen Wed Nov 5 01:22:58 2008 Local ID 84e0b04d-d0ad-4347-8317-22e74f6cd020 Line Numbers Raw Audit Messages node=hostname
type=AVC msg=audit(1225812178.788:101): avc: denied { getattr } for pid=2441 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284916 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file node=hostname
type=SYSCALL msg=audit(1225812178.788:101): arch=40000003 syscall=196 success=no exit=-13 a0=b8e97188 a1=bf87aaac a2=54dff4 a3=2008171 items=0 ppid=2439 pid=2441 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=3 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
/var/log/messages
. In dit voorbeeld, werd het httpd
proces toegang geweigerd tot een bestand (file1
), welke gelabeld is met het samba_share_t
type.
file1
gelabeld met het samba_share_t
type. Dit type wordt gebruikt voor bestanden en mappen die je wilt exporteren met Samba. De beschrijving suggereert het veranderen van het type naar een type dat bereikt kan worden door de Apache HTTP server en Samba, als die toegang gewenst is.
file1
te veranderen naar public_content_t
, welke toegankelijk is voor de Apache HTTP server en Samba.
selinux-policy-3.5.13-11.fc11
), maar die niet zal helpen om de reden van de weigering op te lossen.
/var/log/audit/audit.log
die verbonden zijn met de weigering. Refereer naar Paragraaf 7.3.6, “Ruwe audit boodschappen” voor informatie over ieder item in de AVC weigering.
audit2allow
te laten zien.
audit2allow
- maak SELinux tactiek toelatingsregels van de logs van geweigerde operaties"[19]. Na het onderzoeken van weigeren zoals in Paragraaf 7.3.7, “sealert boodschappen”, en als label veranderingen of Booleans aanzetten geen toegang toestaan, gebruik je audit2allow
om een locale tactiek module te maken. Nadat toegang geweigerd is door SELinux, presenteert het draaien van het audit2allow
commando Type Enforcement regels die de hiervoor geweigerde toegang toestaan.
audit2allow
zien om een tactiek module te maken:
/var/log/audit/audit.log
:
type=AVC msg=audit(1226270358.848:238): avc: denied { write } for pid=13349 comm="certwatch" name="cache" dev=dm-0 ino=218171 scontext=system_u:system_r:certwatch_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=dir type=SYSCALL msg=audit(1226270358.848:238): arch=40000003 syscall=39 success=no exit=-13 a0=39a2bf a1=3ff a2=3a0354 a3=94703c8 items=0 ppid=13344 pid=13349 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="certwatch" exe="/usr/bin/certwatch" subj=system_u:system_r:certwatch_t:s0 key=(null)
comm="certwatch"
) schrijf toegang ({ write }
) geweigerd naar een map gelabeld met het var_t
type (tcontext=system_u:object_r:var_t:s0
). Analyseer de weigering zoals in Paragraaf 7.3.7, “sealert boodschappen”. Als label veranderingen of Booleans aanzetten, geen toegang toestaan, gebruik je audit2allow
om een locale tactiek module te maken.
certwatch
weigering in stap 1, voer je het audit2allow -w -a
commando uit om een leesbare beschrijving te maken van de reden van de weigering. De -a
optie zorgt ervoor dat alle logs gelezen worden. De -w
optie produceert een leesbare beschrijving. Het audit2allow
programma neemt toegang tot /var/log/audit/audit.log
, en moet daarom uitgevoerd worden als de Linux root gebruiker:
# audit2allow -w -a type=AVC msg=audit(1226270358.848:238): avc: denied { write } for pid=13349 comm="certwatch" name="cache" dev=dm-0 ino=218171 scontext=system_u:system_r:certwatch_t:s0 tcontext=system_u:object_r:var_t:s0 tclass=dir Was caused by: Missing type enforcement (TE) allow rule. You can use audit2allow to generate a loadable module to allow this access.
audit2allow -a
commando uit om de Type Enforcement regel te bekijken toe de geweigerde toegang toestaat:
# audit2allow -a #============= certwatch_t ============== allow certwatch_t var_t:dir write;
Fedora
product, en je selecteert de selinux-policy
component. Voeg de output van de audit2allow -w -a
en audit2allow -a
commando's toe in zo'n foutrapport.
audit2allow -a
liet zien, voer je het audit2allow -a -M mycertwatch
commando uit als de Linux root gebruiker om de aangepaste module te maken. De -M
optie maakt een Type Enforcement bestand (.te
) met de naam opgegeven met de -M
in je huidige werkmap:
# audit2allow -a -M mycertwatch ******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i mycertwatch.pp # ls mycertwatch.pp mycertwatch.te
audit2allow
compileert de Type Enforcement regel ook naar een tactiek pakket (.pp
). Om de module te installeren, voer je het /usr/sbin/semodule -i mycertwatch.pp
commando uit als de Linux root gebruiker.
audit2allow
kunnen meer toegang toestaan dan nodig is. Het wordt aanbevolen dat tactiek die gemaakt is met audit2allow
voor bespreking opgestuurd wordt naar een SELinux lijst, zoals fedora-selinux-list. Als je denkt dat er een fout is in de tactiek, maak dat een foutrapport aan in Red Hat Bugzilla.
grep
commando om de input voor audit2allow
te versmallen. Het volgende voorbeeld laat het gebruik van grep
zien om alleen weigeringen te versturen naar audit2allow
die gerelateerd zijn aan certwatch
:
# grep certwatch /var/log/audit/audit.log | audit2allow -M mycertwatch2 ******************** IMPORTANT *********************** To make this policy package active, execute: # /usr/sbin/semodule -i mycertwatch2.pp
audit2allow
om tactiek modules te maken.
[14]
Bestanden in/etc/selinux/targeted/contexts/files/
definieren context voor bestanden en mappen. Bestanden in deze map worden gelezen door restorecon
en setfiles
om de standaard context van bestanden en mappen te herstellen.
[15]
Het semanage port -a
commando voegt een regle toe aan het /etc/selinux/targeted/modules/active/ports.local
bestand. merk op: standaard kan dit bestand alleen bekeken worden door de Linux root gebruiker.
[16] Van de ausearch(8) manual pagina, zoals verstuurd met het audit pakket in Fedora 11.
[17] Van de ausearch(8) manual pagina, zoals verstuurd met het audit pakket in Fedora 11.
[18] Uit de aureport(8) manual pagina, zoals verstuurd met het audit pakket in Fedora 11.
[19] Uit de audit2allow(1) manual pagina, zoals verstuurd met het policycoreutils pakket in Fedora 11.
Wijzigingen | |||||
---|---|---|---|---|---|
Herziening 1.3 | Tue May 12 2009 | ||||
| |||||
Herziening 1.2 | Mon Jan 19 2009 | ||||
| |||||
Herziening 1.1 | Sat Dec 6 2008 | ||||
| |||||
Herziening 1.0 | Tue Nov 25 2008 | ||||
|