24
1 Fedora 13 SELinux FAQ Veel gestelde vragen over Security Enhanced Linux Karsten Wade Paul W. Frields Scott Radvan Copyright © 2010 Red Hat, Inc.. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https:// fedoraproject.org/wiki/Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries. All other trademarks are the property of their respective owners. Samenvatting Deze FAQ beantwoordt vele vragen over Security-Enhanced Linux. De informatie in deze FAQ is waardevol voor wie SELinux nieuw is. Deze FAQ is echter niet gemaakt om een volledig overzicht van SELinux te bieden. Voor gedetailleerde gidsen en instructies over het begrijpen en gebruiken van

SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

1

Fedora 13SELinux FAQ

Veel gestelde vragen over Security Enhanced Linux

Karsten WadePaul W. FrieldsScott Radvan

Copyright © 2010 Red Hat, Inc..

The text of and illustrations in this document are licensed by Red Hat under a CreativeCommons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanationof CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. Theoriginal authors of this document, and Red Hat, designate the Fedora Project asthe "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, ifyou distribute this document or an adaptation of it, you must provide the URL for theoriginal version.

Red Hat, as the licensor of this document, waives the right to enforce, and agrees notto assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.

Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora,the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the UnitedStates and other countries.

For guidelines on the permitted uses of the Fedora trademarks, refer to https://fedoraproject.org/wiki/Legal:Trademark_guidelines.

Linux® is the registered trademark of Linus Torvalds in the United States and othercountries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in theUnited States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the EuropeanUnion and other countries.

All other trademarks are the property of their respective owners.

SamenvattingDeze FAQ beantwoordt vele vragen over Security-Enhanced Linux. De informatie in deze FAQ iswaardevol voor wie SELinux nieuw is. Deze FAQ is echter niet gemaakt om een volledig overzichtvan SELinux te bieden. Voor gedetailleerde gidsen en instructies over het begrijpen en gebruiken van

Page 2: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

2

SELinux, refereer je eerst naar de SELinux gebruiker gids en de Gids voor het beheren van beperkteservices. Deze zijn beschikbaar op http://docs.fedoraproject.org

1. SELinux .................................................................................................................................. 2

Externe hulpbronnen• NSA SELinux hoofd website — http://www.nsa.gov/research/selinux/index.shtml

• NSA SELinux FAQ — http://www.nsa.gov/research/selinux/faqs.shtml

• SELinux project wiki — http://selinuxproject.org/

• SELinux Wikipedia pagina — http://en.wikipedia.org/wiki/Security-Enhanced_Linux

• SELinux gemeenschap pagina — http://selinux.sourceforge.net

• Officieuze SELinux FAQ — http://www.crypt.gen.nz/selinux/faq.html

• Referentie tactiek — http://oss.tresys.com/

• SELinux tactiek ontwikkeling cursus — https://www.redhat.com/training/security/courses/rhs429.html

• Starten met SE Linux — http://www.linuxtopia.org/online_books/getting_started_with_SELinux/index.html

• Lijst van SELinux object klasses en rechten — http://tresys.com/selinux/obj_perms_help.shtml

• Fedroa mail lijst — mailto:[email protected]; lees de archieven of abonneer je ophttps://admin.fedoraproject.org/mailman/listinfo/selinux

• De SELinux gebruiker gids en de Gids voor het beheren van beperkte services op http://docs.fedoraproject.org

• Op IRC - irc.freenode.net, #fedora-selinux en #selinux

1. SELinuxVraag:Wat is SELinux?

Antwoord:SELinux (Security-Enhanced Linux) in Fedora is een implementatie van verplichte toegangcontrole in de Linux kernel met gebruik van het Linux Security Modules (LSM) raamwerk.Standaard Linux beveiliging is een discretionair toegang controle model.

Discretionaire toegang controle (DAC)DAC is standaard Linux beveiliging, en het biedt minimale bescherming voor foutievesoftware of malware gedraaid als een normale gebruiker of root. Gebruikers kunnen naareigen goeddunken riskante toegang niveaus toekennen.

Verplichte toegang controle (MAC)MAC biedt volledige controle over alle interacties van software. Tactiek gedefinieerd doorbeheer controleert nauwgezet de interactie tussen gebruiker en proces op het systeem, enkan bescherming bieden voor foutieve software of malware gedraaid als elke gebruiker.

In a DAC model, file and resource decisions are based solely on user identity and ownershipof the objects. Each user and program run by that user has complete discretion over the user'sobjects. Malicious or flawed software can do anything with the files and resources it controls

Page 3: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

3

through the user that started the process. If the user is the super-user or the application issetuid or setgid to root, the process can have root level control over the entire file system.

Een MAC systeem heeft deze problemen niet. Ten eerste kun je via beheer een beveiligingtactiek definiëren voor alle processen en objecten. Ten tweede controleer je alle processenen objecten via de kernel, in het geval van SELinux. Ten derde worden beslissingen gemaaktgebaseerd op alle beschikbare beveiliging relevante informatie, en niet slechts de identiteit vande voor authentiek verklaarde gebruiker.

MAC in SELinux staat je toe om korrelachtige rechten te bieden aan alle subjecten (gebruikers,programma's, processen) en objecten (bestanden, apparaten). In de praktijk denk je bijsubjecten aan processen, objecten zijn de doelen van een proces operatie. Je kunt een procesveilig de rechten toestaan die het nodig heeft om zijn functie uit te voeren, en meer niet.

The SELinux implementation uses role-based access control (RBAC), which provides abstracteduser-level control based on roles, and Type Enforcement® (TE). TE uses a table, or matrix tohandle access controls, enforcing policy rules based on the types of processes and objects.Process types are called domains, and a cross-reference on the matrix of the process's domainand the object's type defines their interaction. This system provides a high level of granularity ina Linux system.

Vraag:Wat is SELinux tactiek?

Antwoord:De SELinux tactiek beschrijft de toegang rechten voor alle subjecten en objecten, dus het gehelesysteem van gebruikers, programma's, en processen en de bestanden en apparaten waarmeeze werken. Fedora tactiek wordt geleverd in een pakket, met een bijbehorend bron pakket. Dehuidig geleverde tactiek pakketten zijn:

selinux-policy-<version>.noarch.rpmDit pakket is gemeenschappelijk voor alle tactiek types en bevat configuratie bestanden/manual pagina's. Dit omvat de interface bestanden voor de ontwikkel omgeving. Dit vervangthet -source pakket uit het verleden. Dit pakket bevat de interface bestanden gebruikt in deReferentie tactiek (Reference Policy)tezamen met een Makefile en een klein gereedschapmet de naam sepolgen gebruikt om een tactiek template bestand te genereren. Deinterface bestanden bevinden zich in de /usr/share/selinux/devel/include map.Als je alle tactiek bestanden wilt zien die gebruikt worden om de Referentie tactiek tebouwen moet je het src.rpm installeren.

Vraag:Wat is er met de strikte tactiek gebeurd?

Antwoord:De strikte tactiek is sinds Red Hat Enterprise Linux 5 en Fedora Core 5 het equivalent van degerichte tactiek met de onbeperkte domeinen verwijdert. Dit betekent dat voor alle gebruikerseen type gedefinieerd moest zijn zoals staff_t of user_t. Bovendien moest er ook een tactiekgeschreven worden door alle processen die opgestart worden door init. Sinds Fedora 9 is destrikte tactiek verwijderd en opgegaan in de gerichte tactiek.

Vraag:Welke programma's worden beschermd door SELinux tactiek?

Antwoord:Het aantal programma's waarvoor SELinux tactiek gedefinieerd is verandert steeds enevolueert. Verschillende versies van tactiek bewaken meer of minder uitvoerbare programma's.Bij conventie hebben alle beperkte uitvoerbare programma's een label type dat eindigt opexec_t. Het SELinux gereedschappen pakket (setools) bevat de seinfo toepassing welke je degeïnstalleerde tactiek laat onderzoeken.

Page 4: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

4

# seinfo -t | grep exec_t | wc -l620

Vraag:Wat is de Referentie tactiek?

Antwoord:De Reference Policy is een projeect onderhouden door Tresys Technology (http://www.tresys.com/) en ontworpen om de gehele SELinux tactiek opnieuw te schrijven opeen manier die eenvoudiger te gebruiken en te begrijpen is. Om dit te doen, gebruikt het deconcepten modulariteit, abstractie, en goed-gedefinieerde interfaces. Refereer naar http://oss.tresys.com/ voor meer informatie over de Reference Policy.

Merk op dat Referentie tactiek niet een nieuw type tactiek is. Het is echter een nieuwe basiswaar tactieken mee gebouwd kunnen worden.

Vraag:Wat zijn bestand contexten?

Antwoord:Bestand contexten worden gebruikt door het setfiles commando om blijvende labels tegenereren welke de beveiliging context voor een bestand of map beschrijven.

Fedora levert het fixfiles script, welke vier opties ondersteunt: check, relabel, relabelen verify. Dit script staat gebruikers toe om het bestandssysteem te her-labelen zonder dathet selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regelgebruik is vriendelijker dan het standaard setfiles commando.

Vraag:Hoe bekijk ik de beveiliging context van een bestand, gebruiker, of proces?

Antwoord:De nieuwe optie -Z is de korte methode voor het tonen van de context van een subject of object:

ls -Z file.foo id -Zps -eZ

Vraag:Wat is het verschil tussen een domein en een type?

Antwoord:Er is geen verschil tussen een domein en een type, hoewel domein soms gebruikt wordt om terefereren naar het type van een proces. Het gebruik van domein op deze manier stamt uit deDomein en Type afdwinging modellen, waar domeinen en types verschillend zijn.

Vraag:Wat zijn tactiek modules?

Antwoord:SELinux tactieken zijn modulair, wat betekent dat een verandering niet vereist dat de geheletactiek bron opgehaald moet worden, het dan te veranderen, het compileren, en daarna dehuidige tactiek met de nieuwe te vervangen. Dit betekent dat ontwikkelaars van derden tactiekmodules kunnen leveren met hun toepassingen, en dat het daarna toegevoegd kan worden aande tactiek zonder dat de gehele tactiek omgeschakeld moet worden. De nieuwe module wordtdan toegevoegd aan de module opslag, wat resulteert in een nieuwe tactiek die een combinatieis van de vorige tactiek en de nieuwe module.

Dit werkt in feite door het scheiden van de compileer en link stappen in de tactiek bouwprocedure. Tactiek modules worden gecompileerd van de broncode, en gelinkt als zegeïnstalleerd worden in de module opslag (zie Managed Policy). Deze gelinkte tactiek wordtdaarna in de kernel geladen voor afdwinging.

Page 5: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

5

Het primaire commando voor het afhandelen van modules is semodule, welke jou basis functieslaat uitvoeren zoals het installeren, upgraden, of verwijderen van modules. Andere nuttigecommando's zijn checkmodule, wat de module compiler is en geïnstalleerd wordt met decheckpolicy rpm, en semodule_package, wat een tactiek pakket bestand (.pp) maakt van eengecompileerde tactiek module.

Modules worden gewoonlijk opgeslagen als een tactiek pakket bestand (.pp extensie) in /usr/share/selinux/tactieknaam/. Hier moet je tenminste base.pp vinden, wat de basismodule is.

Om te weten te komen hoe je een eenvoudige tactiek module schrijft, bekijk je Local PolicyCustomizations.

Vraag:Wat is beheerde tactiek?

Antwoord:Er bestaat een bibliotheek, libsemanage, welke gebruikersruimte gereedschappen eeninterface biedt om het beheer van tactiek eenvoudiger te maken. Alle tactiek beheer moet dezebibliotheek gebruiken voor toegang tot de tactiek opslag. De tactiek opslag bevat alle tactiekinformatie en wordt gevonden in /etc/selinux/tactieknaam/modules/.

Je moet de opslag nooit direct bewerken. In plaats daarvan gebruik je de gereedschappen diegelinkt zijn met libsemanage. Een voorbeeld gereedschap is semanage, wat een commando-regel gereedschap is voor het beheren van een groot deel van de tactiek zoals SELinuxgebruiker afbeelding, SELinux poort afbeelding, en bestand context ingangen. Anderevoorbeelden van gereedschappen die libsemanage gebruiken zijn semodule welke gebruiktwordt voor het beheren van de SELinux tactiek modules geïnstalleerd in de tactiek opslag ensetsebool welke gebruikt wordt voor het beheer van SELinux tactiek booleans. Bovendienworden er op dit moment grafische gereedschappen ontwikkeld die de functionaliteit gebruikengeboden door libsemanage.

1.2. SELinux controleren

Vraag:Hoe installeer ik SELinux (niet)?

Antwoord:De installer volgt de keuze die je maakt in het Firewall configuratie scherm. De standaarddraaiende tactiek is de gerichte tactiek, en deze wordt standaard aangezet.

Vraag:Wat moet ik doen als beheerder om SELinux te configureren voor mijn systeem?

Antwoord:The answer might be nothing! There are many Fedora users that don't even realize that theyare using SELinux. SELinux provides protection for their systems with an out-of-the-boxconfiguration. That said, there are a couple of things an administrator might want to do toconfigure their system. These include:

booleansBooleans zijn runtime instellingen die omgeschakeld kunnen worden om SELinux tactiekgedrag te veranderen zonder dat een nieuwe tactiek geschreven hoeft te worden. Er zijnvele Booleans die ingesteld kunnen worden in Fedora, en ze staan een beheerder toeom SELinux nauwkeurig te kunnen configureren afhankelijk van zijn vereisten. Om debeschikbare booleans te bekijken en hun instelling te veranderen, gebruik je system-config-selinux of de commando-regel gereedschappen getsebool en setsebool.

Page 6: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

6

aanpasbare bestand contexten instellenBestanden in een SELinux systeem hebben een beveiliging context welke opgeslagen wordtin de uitgebreide attribuut van het bestand (gedrag van variëren van bestandssysteem totbestandssysteem, maar dit is hoe ext3 werkt). Deze worden automatisch ingesteld doorrpm, maar soms wil een gebruiker een bepaalde context instellen voor een bestand. Eenvoorbeeld kan zijn het instellen van de context voor een public_html map zodat apacheer toegang tot heeft, zoals getoond in How do I make a user public_html directory workunder SELinux.

Voor een lijst van types die aan bestanden kunt toekennen, refereer je naar /etc/selinux/targeted/contexts/customizable_types. Dit zijn types die veeltoegekend worden aan bestanden door gebruikers en beheerders. Om deze in te stellengebruik je het chcon commando. Merk op dat de types in customizable_types ookbewaard blijven na her-labelen, zodat het her-labelen van het systeem ze niet zal raken.

zich slecht gedragende bibliotheken laten werkenEr zijn vele bibliotheken beschikbaar die zich slecht gedragen en die proberen de geheugenbescherming te doorbreken die SELinux biedt. Deze bibliotheken moeten eigenlijkgerepareerd worden, dus maak een bug rapport aan voor de bibliotheek beheerder.Dat gezegd hebbende, deze bibliotheken kunnen aan het werk gekregen worden. Meerinformatie en oplossingen die bibliotheken laten werken kan gevonden worden in I havea process running as unconfined_t, and SELinux is still preventing my application fromrunning.

Vraag:Hoe zet ik SELinux bescherming aan/uit voor specifieke daemons voor de gerichte tactiek?

Antwoord:Gebruik system-config-selinux, ook bekend als het SELinux beheer grafischegereedschap, om de Boolean waardes van specifieke daemons te controleren. Bijvoorbeeld,als je SELinux uit moet zetten om Apache in jouw omgeving correct te laten draaien, kun jede waarde in system-config-selinux uitzetten. Deze verandering zet de overgang naarde tactiek uit gedefinieerd in apache.te, wathttpd toestaat om binnen de reguliere DACbeveiliging te blijven.

De getsebool en setsebool commando's kunnen ook gebruikt worden, ook op systemendie het system-config-selinux gereedschap niet hebben. Refereer naar de manualpagina's voor deze commando's: getsebool(8) en setsebool(8) voor meer details overhun werking.

Vraag:In het verleden heb ik een local.te bestand geschreven in tactiek broncode voor mijn localeaanpassing van de tactiek, hoe moet ik dit nu doen>

Antwoord:Since Fedora Core 5, a modular policy is used, so you don't have to have the completepolicy source any more. Now, you can just create a local policy module for your local policycustomizations. To do this, follow these steps.

1. Mak een tijdelijke map aan, en ga naar die map.

$ mkdir foo$ cd foo

2. Maak lege te, if, en fc bestanden aan.

Page 7: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

7

$ touch local.te local.if local.fc

3. Bewerk het local.te bestand door de juiste inhoud toe te voegen. Bijvoorbeeld:

policy_module(local, 1.0)

require { attribute httpdcontent; type smbd_t;}

allow smbd_t httpdcontent:dir create_dir_perms;allow smbd_t httpdcontent:{ file lnk_file } create_file_perms;

Er zijn drie onderdelen in dit bestand.

• De policy_module roept invoeg statements aan om de module te laten werken,inclusief het benoemen ban de module en de vereiste system rollen, klassen, en rechten.Wees er zeker van dat de naam hier benoemd wordt (local in dit geval) overeenkomt metde naam die je aan het bestand gaf (local.te).

• Het require blok laat de symbolen zien die deze module gebruikt die gedeclareerdmoeten worden in andere modules. In dit geval vereisen we het attribuut httpdcontenten het type smbd_t. Merk op dat alle types en attributen die je in regels gebruikt hiervereist zijn, behalve als je ze zelf hieronder benoemt.

• De rest van de regels is de tactiek, en bestaat in dit geval alleen uit een aantal allowregels. Je kunt ook type benoemingen, dontaudit statements, referentie aanroepen, of demeeste andere dingen die normaal in een te bestand gaan hier plaatsen.

4. De tactiek module bouwen.

$ make -f /usr/share/selinux/devel/MakefileCompliling targeted local module/usr/bin/checkmodule: loading policy configuration from tmp/local.tmp/usr/bin/checkmodule: policy configuration loaded/usr/bin/checkmodule: writing binary representation (version 5) to tmp/local.modCreating targeted local.pp policy packagerm tmp/local.mod.fc tmp/local.mod

Merk op dat dit checkmodule gebruikt, welke onderdeel is van de checkpolicy rpm. Weeser dus zeker van dat je deze rpm geïnstalleerd hebt voor je dit doet.

5. Wordt root, en installeer de tactiek module met semodule.

$ su -Password:# semodule -i local.pp

Page 8: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

8

Modules worden uniek geïdentificeerd door hun naam

Dit betekent dat als je later een andere local.pp toevoegt, het degene die je zojuistgeladen hebt zal vervangen. Dus je moet deze local.te bewaren en er iets aantoevoegen als je later tactiek aanpassingen moet maken. Als je het kwijt raakt, maar je wiltjouw vorige tactiek houden, geef dan de nieuwe locale tactiek module een andere naam(b.v. local2.te).

Vraag:Ik heb een paar avc weigeringen die ik wil laten toestaan, hoe doe ik dat?

Antwoord:Als je specifieke AVC boodschappen hebt kun je audit2allow gebruiken om een Typeafdwinging bestand te maken die klaar is om te laden als een tactiek module.

audit2allow -M local < /tmp/avcs

Dit maakt een local.pp aan die je dan in de kernel kunt laden met semodule -i local.pp.Je kunt ook de local.te bewerken om extra aanpassingen te maken. Om een module temaken die alle weigeringen sinds het vorige opstarten van het systeem toestaat, voer je hetvolgende uit:

audit2allow -m local -l -i /var/log/messages > local.te

Merk op dat het bovenstaande aanneemt dat je de audit daemon niet gebruikt. Als je de auditdaemon wel gebruikt, dan moet je /var/log/audit/audit.log gebruiken in plaats van /var/log/messages als jouw log bestand. Dit genereert een local.te bestand die op hetvolgende lijkt:

module local 1.0;

require { class file { append execute execute_no_trans getattr ioctl read write }; type httpd_t; type httpd_w3c_script_exec_t; };

allow httpd_t httpd_w3c_script_exec_t:file { execute execute_no_trans getattr ioctl read };

You can hand edit this file, removing allow statements that you don't want to allow, and thenrecompile and reload it using

• checkmodule -M -m -o local.mod local.te om het te bestand te compileren. Merkop dat checkmodule onderdeel is van de checkpolicy rpm, dus deze moet je geïnstalleerdhebben.

• semodule_package -o local.pp -m local.mod om een tactiek pakket aan te maken.

Page 9: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

9

• semodule -i local.pp to add it to the current machine's running policy. This installs anew module called local with these rules into the module store.

Belangrijk

Om dit nieuw aangemaakte module pakket te laden in de kernel, is het vereist dat jesemodule -i local.pp uitvoert.

Merk op dat als je later een andere module installeert met de naam local, het deze modulezal vervangen. Als je deze regels wilt houden, dan moet je of toekomstige aanpassingentoevoegen aan deze local.te, of je moet toekomstige aanpassingen een andere naamgeven.

Vraag:Hoe kan ik helpen met het schrijven van tactiek?

Antwoord:Jouw hulp wordt zeker gewaardeerd.

• Je kunt beginnen met je aan te sluiten bij de Fedora SELinux mail lijst. Je kunt je abonnerenen de archieven lezen op https://admin.fedoraproject.org/mailman/listinfo/selinux.

• De officieuze FAQ bevat wat algemene informatie over het schrijven van tactiek. Refereernaar http://www.crypt.gen.nz/selinux/faq.html voor meer informatie.

• Een andere hulpbron is de Writing SE Linux policy HOWTO, die zich on-line bevindt op http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html.

Omdat de Fedora tactiek is gebaseerd op de Reference Policy, moet je ook kijken naar dedocumentatie op de project pagina. Een andere uitstekende bron van informatie zijn devoorbeeld tactiek bestanden in /usr/share/selinux/devel.

Als je een nieuw tactiek domein wilt aanmaken, kun je kijken naar de interface bestanden in de /usr/share/selinux/devel sub-mappen.

De dingen eenvoudiger maken met sepolgen

Het gereedschap sepolgen is een gemakkelijke manier om SELinux tactiek aan te maken. Devolgende procedure is een voorbeeld van het gebruik van sepolgen om de vereiste tactiek aante maken voor een daemon met de naam mydaemon:

sepolgen /usr/sbin/mydaemon

sepolgen voert dan het volgende uit:

1. Zoekt naar geschikte templates in paden zoals /var/lib, /var/run, /etc/init.d/rc.d/mydaemon:

rpm -qlf /usr/sbin/mydaemon

2. Zoekt naar syslog, setuid, setgid, enz. en voegt de juiste toegang toe:

Page 10: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

10

nm -D /usr/sbin/mydaemon

Er worden dan vier bestanden aangemaakt:

mydaemon.te - Bevat alle types en allow regels die voor deze daemon ontdekt zijn.mydaemon.if - Bevat interfaces die gebruikt worden met de types gemaakt voor deze daemon.mydaemon.fc - Bevat bestand context afbeelding voor types en paden op schijf.mydaemon.sh - Is een hulp shell script gebruikt voor het compileren/installeren van de tactiek en het correct labelen van de paden.

De tactiek schrijver hoeft dan alleen maar mydaemon.sh uit te voeren en de tactiek zalgecompileerd en geïnstalleerd worden - de daemon is dan klaar om te beginnen met testen.

De volgende procedure kan je helpen om het test ptoces te begrijpen:

begin: service mydaemon start run tests against mydaemon check for AVC messages if None Break; audit2allow -R >> mydaemon.te Verify the policy is good or fix it. ./mydaemon.sh goto begin

Vraag:Hoe schakel ik om van de tactiek die ik nu gebruik?

Antwoord: Wees voorzichtig met het omschakelen van tactiek

Anders dan het uitproberen van een nieuwe tactiek op een test machine voor onderzoekdoeleinden, moet je serieus jouw situatie overwegen voordat je omschakelt naar eenandere tactiek op een productie systeem. Het omschakelen zelf is ongecompliceerd. Dezemethode is tamelijk veilig, maar je moet het eerst uitproberen op een test machine.

Om de automatische methode te gebruiken, voer je het Security Level Configurationgereedschap uit. In het hoofd GUI menu selecteer je Systeem → Beheer → SELinuxManagement, of in een terminal voer je system-config-selinux uit. Verander de tactiekzoals gewenst en verzeker je ervan dat de Relabel bij de volgende systeem opstart optieaangezet is.

Je kunt deze stappen ook handmatig uitvoeren met de volgende procedure:

1. Bewerk /etc/selinux/config en verander het type en de mode van de tactiek:

SELINUXTYPE=tactiek-naam SELINUX=permissive

Deze stap verzekert dat we na het opnieuw opstarten niet buiten gesloten worden. SELinuxdraait met de juiste tactiek, maar het staat je niet toe om in te loggen als er een probleem iszoals niet correcte labeling van bestanden.

Page 11: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

11

2. Stel het systeem in om het bestandssysteem opnieuw te labelen bij een nieuwe opstart:

touch /.autorelabel

3. Start het systeem opnieuw op. Een schone start met de nieuwe tactiek staat alle systeemprocessen toe om op te starten met de juiste context, en laat alle problemen met de nieuwetactiek zien.

4. Bevestig dat jouw veranderingen effect hebben met het volgende commando:

sestatus -v

Terwijl het nieuwe systeem in de toelatende mode draait, check je /var/log/messages voor avc: denied boodschappen. Deze kunnen een probleem aangeven datopgelost moet worden om het systeem zonder problemen met de nieuwe tactiek te latendraaien.

5. Als er zeker van bent dat het systeem stabiel draait met de nieuwe tactiek, zet je deafdwingende mode aan met SELINUX=enforcing. Je kunt opnieuw opstarten ofsetenforce 1 uitvoeren om afdwingend in real-time aan te zetten.

Vraag:Hoe maak ik een back-up van bestanden in een SELinux bestandssysteem?

Antwoord:Je kunt nu het tar commando normaal gebruik, je hoeft star niet meer te gebruiken. Ook hetBacula1 programma ondersteunt de xattr extensies bij het gebruik van SELinux, en kan vanSELinux bestandssystemen een correcte back-up maken.

Vraag:Hoe laat ik een gebruiker public_html correct werken met SELinux?

Antwoord:Dit proces neemt aan dat je gebruiker publieke HTML mappen hebt aangezet in jouw Apacheconfiguratie bestand. Dit proces behandelt allen het verstrekken van statische Web inhoud.Voor meer informatie over Apache en SELinux, refereer je naar de SELinux Managing ConfinedServices Guide op http://docs.fedoraproject.org.

1. Als je nog geen ~/public_html map hebt, maak je het aan en vul je het met bestandenen mappen die aangeboden moeten worden.

cd ~mkdir public_htmlcp /path/to/content ~/public_html

2. At this point, httpd is configured to serve the contents, but you still receive a 403forbidden error. This is because httpd is not allowed to read the security type for thedirectory and files as they are created in the user's home directory. Change the securitycontext of the folder and its contents recursively using the -R option:

ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:user_home_t public_htmlchcon -R -t httpd_user_content_t public_html/ ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:httpd_user_content_t public_html/

Page 12: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

12

ls -Z public_html/-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t bar.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t baz.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t foo.html

Je kunt op een later moment opmerken dat het gebruiker veld, hier ingesteld op user_u,veranderd wordt naar system_u. Dit heeft geen invloed op de werking van de gerichtetactiek. Het veld dat van belang is is het type veld.

3. Jouw statische web pagina's worden nu correct aangeboden. Als je nog steeds fouten hebt,wees er dan zeker van dat de Boolean die het gebruik van persoonlijke mappen toestaataangezet is. Je kunt dit instellen met system-config-selinux. Selecteer de Booleantab en selecteer Allow httpd to read home directories. De veranderingenhebben meteen effect.

Vraag:Hoe zet ik SELinux uit tijdens het opstarten?

Antwoord:Stel SELINUX=disabled in /etc/selinux/config.

Als alternatief kun je selinux=0 toevoegen aan jouw kernel boot parameters. Deze optie wordtechter niet aanbevolen.

Wees voorzichtig met het uitzetten van SELinux

Als je opstart met selinux=0, zullen alle bestande die je aanmaakt terwijl SELinuxuitgezet is geen SELinux context informatie hebben. Het bestandssysteem wordtgemarkeerd voor her-labeling bij de volgende opstart. Als een onverwacht probleemjou belet om normaal opnieuw op te starten, moet je misschien opstarten in de enkele-gebruiker mode voor herstel.

Vraag:Hoe zet ik de afdwingende mode uit bij het opstarten?

Antwoord:Je kunt de SELinux mode specificeren met het configuratie bestand /etc/sysconfig/selinux.

# 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 - Only targeted network daemons are protected.#\tmls - Multi Level Security protection.SELINUXTYPE=targeted

Het instellen van de waarde op enforcing is hetzelfde als het toevoegen van enforcing=1aan de kernel boot parameters. Het instellen van de waarde op permissive is hetzelfde als hettoevoegen van enforcing=0 aan de kernel boot parameters.

Het instellen van de waarde naar disabled is echter niet hetzelfde als de selinux=0 kernelboot parameter. In plaats van het volledig uitzetten van SELinux in de kernel, zet de disabledinstelling afdwingend uit en slaat het laden van een tactiek over.

Page 13: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

13

SELinux configuratie volgorde

De commando-regel kernel parameter schuift het configuratie bestand terzijde.

Vraag:Hoe zet ik de afdwingende mode tijdelijk uit zonder opnieuw op te moeten starten?

Antwoord:Soms moet je een actie uitvoeren die normaal tegengehouden wordt door de tactiek. Voer hetcommando setenforce 0 uit om in real-time de afdwingende mode uit te zetten. Als je klaarbent, voer je setenforce 1 om afdwingend weer aan te zetten.

Vraag:Hoe zet ik systeem aanroep audit aan/uit bij het opstarten?

Antwoord:Voeg audit=1 aan jouw kernel commando-regel toe om systeem aanroep audit aan te zetten.Voeg audit=0 aan jouw kernel commando-regel toe om systeem aanroep audit uit te zetten.

Standaard staat systeem aanroep audit aan. Als het aan is, biet het informatie over systeemaanroepen die uitgevoerd zijn als SELinux een weigering boodschap genereert. De foutboodschap is nuttig voor het debuggen van tactiek.

Vraag:Hoe zet ik systeem aanroep audit tijdelijk uit zonder opnieuw op te moeten starten?

Antwoord:Voer auditctl -e 0 uit. Merk op dat dit commando geen effect heeft op SELinux AVCweigeringen

Vraag:Hoe krijg ik status informatie over mijn SELinux installatie?

Antwoord:Als root voer je het commando /usr/sbin/sestatus -v uit. Voor meer informatie refereer jenaar de sestatus(8) manual pagina.

Vraag:Hoe schrijf een tactiek om een domein toe te staan pam_unix.so te gebruiken?

Antwoord:Het is aan zeer weinig domeinen in de SELinux wereld toegestaan om het /etc/shadowbestand te lezen. Er zijn beperking regels die voorkomen dat tactiek schrijvers code schrijvenzoals

allow mydomain_t shadow_t:file read;

In RHEL4 kun je jouw domein instellen om het unix_chkpwd commando te gebruiken. Degemakkelijkste manier is om het unix_chkpwd attribuut te gebruiken. Dus als je tactiek schrijftvoor een ftpd daemon moet iets schrijven zoals

daemon_domain(vsftpd, `auth_chkpwd')

This would create a context where vsftpd_t -> chkpwd_exec_t -> system_chkpwd_t which canread /etc/shadow, while vsftpd_t is not able to read it.

In Fedora en Red Hat Enterprise Linux 5 en later, voeg je deze regel toe

Page 14: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

14

auth_domtrans_chk_passwd(vsftpd_t)

Vraag:Ik heb een nieuw tactiek pakket aangemaakt, waar moet ik dit plaatsen om er zeker van te zijndat het in de kernel geladen wordt?

Antwoord:Je moet het commando semodule -i mijnapp.pp uitvoeren. Dit verandert de tactiek dieopgeslagen is op de machine. Jouw tactiek module wordt nu geladen met de rest van de tactiek.Je kunt zelfs het pp bestand van het systeem verwijderen.

semodule -l laat de huidig geladen modules zien.

#semodule -i myapp 1.2.1

Als je later het tactiek pakket wilt verwijderen, kun je semodule -r mijnapp uitvoeren.

1.3. Problemen oplossen

Vraag:Waar worden SELinux AVC boodschappen (weigering logs, enz.) op geslagen?

Antwoord:Boodschappen kunnen gevonden worden in /var/log/messages behalve als je er voor kiestom de audit daemon te installeren en aan te zetten, in welk geval AVC boodschappen zich in /var/log/audit/audit.log zullen bevinden.

Vraag:My application isn't working as expected and I am seeing avc: denied messages. How do I fixthis?

Antwoord:Deze boodschap betekent dat de huidige SELinux tactiek de toepassing niet toestaat eenbepaalde actie uit te voeren. Er zijn een aantal redenen hoe dit kan gebeuren.

First, one of the files the application is trying to access could be mislabeled. If the AVC messagerefers to a specific file, inspect its current label with ls -alZ /path/to/file. If it seemswrong, use the command restorecon -v /path/to/file to restore the file's defaultcontext. If you have a large number of denials related to files, you may want to use fixfilesrelabel, or run restorecon -R /path to recursively relabel a directory path.

Weigeringen worden soms veroorzaakt door een configuratie verandering in het programmadat de weigering boodschap teweegbrengt. Bijvoorbeeld, als je Apache verandert zodat het ookluistert op poort 8800, moet je ook de beveiliging tactiek, apache.te, veranderen.

Als je problemen hebt om een specifieke toepassing zoals Apache aan het werk te krijgen,refereer je naar How to use system-config-selinux voor informatie over het uitzetten vanafdwinging voor alleen die toepassing.

Vraag:Why doesn't SELinux give me the full path in an error message?

Antwoord:To answer this, let's first examine the structure of a typical SELinux AVC error message. Items ofnote in this example are in bold:

node=host.example.com type=AVC msg=audit(12/13/2006 11:28:14.395:952) : avc: denied { getattr } for pid=7236 comm=vsftpd name=public_html dev=dm-0 ino=9601649

Page 15: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

15

scontext=system_u:system_r:ftpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=dir

node=host.example.com type=SYSCALL msg=audit(12/13/2006 11:28:14.395:952) : arch=i386 syscall=lstat64 success=no exit=0 a0=8495230 a1=849c830 a2=874ff4 a3=328d28 items=0 ppid=7234 pid=7236 auid=dwalsh uid=dwalsh gid=dwalsh euid=dwalsh suid=dwalsh fsuid=dwalsh egid=dwalsh sgid=dwalsh fsgid=dwalsh tty=(none) comm=vsftpd exe=/usr/sbin/vsftpd subj=system_u:system_r:ftpd_t:s0 key=(null)

Deze AVC boodschap bestaat uit twee records, de actuele AVC record en de SYSCALL record.De kernel genereert beide records als het SELinux systeem toegang weigert. Deze AVCboodschap geeft aan dat SELinux /usr/sbin/vsftpd belet om de getattr toegang uit tevoeren op een dir met de naam public_html.

Maar welke bepaalde public_html map heeft het probleen?

De AVC records zelf tonen niet het volledige pad naar de problematische public_html map inkwestie. Dit wordt gedaan voor performance redenen. Omdat AVC boodschappen niet vaak voormoeten komen, is het niet de moeite van de overhead waard om het kernel rapport het volledigepad te laten bevatten. De AVC records bevatten echter het apparaat (dm-0), en de inode inkwestie (9601649). Je kunt deze apparaat en inode informatie gebruiken om het correcte pad tevinden als het bestand en/of map nog bestaat.

De langzame manier:

# find / -inum 9601649

Een betere manier:

Het setroubleshoot gereedschap kan het locate commando gebruiken om te proberen het padin kwestie te reconstrueren:

# locate -r /public_html$

/home/dwalsh/public_html/home/obama/public_html...(vervolgt)

setroubleshoot gebruikt dan stat om de inode te verkrijgen van ieder bestand dat teruggevenwerd en vergelijkt deze met de waardes in de AVC boodschap; als ze overeenkomen, analyseerthet het volledige pad. Je moet natuurlijk het mlocate geïnstalleerd hebben en draaiend met cronom deze paden te verzamelen.

Refereer naar http://danwalsh.livejournal.com/34903.html naar meer details over dit onderwerp.

Vraag:I installed on a system with a pre-existing /home partition, and now I can't log in. What do I do?

Antwoord:Jouw /home partitie is niet correct gelabeld. Je kunt dit op twee manieren gemakkelijkrepareren.

Als je /home recursief wilt her-labelen:

/sbin/restorecon -v -R /home

Page 16: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

16

Als je er zeker van wilt zijn dat er geen andere bestanden zijn die foutief gelabeld zijn kun je hetgehele bestandssysteem her-labelen:

/sbin/fixfiles relabel

Het policycoreutils pakket moet geïnstalleerd zijn om fixfiles te gebruiken.

Vraag:Kan ik, na het her-labelen van mijn /home met gebruik van setfiles of fixfiles, /home nogsteeds lezen met een systeem waarin SELinux niet aangezet is?

Antwoord:Je kunt de bestanden lezen vanaf een niet-SELinux distributie, of een waarin SELinux uitgezetis. Bestanden die echter aangemaakt zijn door een systeem dat SELinux niet gebruikt hebbengeen beveiliging context, noch de bestanden die je verwijdert en opnieuw aanmaakt. Dit kan eenuitdaging zijn met bestanden zoals ~/.bashrc. Je moet /home her-labelen als je Fedora metSELinux aangezet opnieuw opstart.

Vraag:Hoe deel ik mappen met NFS tussen Fedora en niet-SELinux systemen?

Antwoord:NFS ondersteunt transparant vele bestandssysteem types, en het kan ook gebruikt worden ommappen te delen tussen SELinux en niet-SELinux systemen.

Als je een niet-SELinux bestandssysteem aankoppelt met NFS, behandelt SELinux standaardalle bestanden in de deling alsof ze een nfs_t context hebben. Je kunt de standaardcontext handmatig terzijde schuiven met de context= optie. Het volgende commando laatde bestanden in een NFS aangekoppelde map voor SELinux een context te hebben vansystem_u:object_r:tmp_t:

mount -t nfs -o context=system_u:object_r:tmp_t server:/shared/foo /mnt/foo

Als SELinux een bestandssysteem exporteert via NFS, hebben nieuw aangemaakte bestandende context van de map waarin ze aangemaakt zijn. Met andere woorden, de aanwezigheid vanSELinux op het op afstand aangekoppelde systeem heeft geen effect op de locale beveiligingcontexten.

Vraag:How can I create a new Linux user account with the user's home?

Antwoord:Je kunt jouw nieuwe gebruiker aanmaken met het standaard useradd commando. Je moeteerst root worden.

Voor de gerichte tactiek:

su - rootid -Zroot:system_r:unconfined_tuseradd eengebruikerls -Z /homedrwx------ eengebruiker eengebruiker root:object_r:user_home_dir_t /home/eengebruiker

De initiële context voor een nieuwe gebruikers map heeft een identiteit root. Het daarnavolgend her-labelen van het bestandssysteem verandert de identiteit naar system_u. Deze zijnfunctioneel hetzelfde omdat de rol en type identiek zijn (object_r:user_home_dir_t.)

Page 17: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

17

Vraag:Verandert het su commando mijn SELinux identiteit en rol?

Antwoord:Het su commando voert een volledige domein overgang uit en verandert jouw rol. Dit isgemakkelijker dan het gebruik van het newrole commando omdat newrole vereist dat jetwee wachtwoorden opgeeft - een om je te identificeren als de gebruiker, en een ander om je teidentificeren als root.

Andere vormen van Linux/UNIX® identiteit veranderingen, bijvoorbeeld setuid(2),veroorzaken geen SELinux identiteit verandering.

Vraag:I'm having troubles with avc errors filling my logs for a particular program. How do I choose notto audit the access for it?

Antwoord:Als je geen audit wilt uitvoeren voor dmesg, bijvoorbeeld, wil je dit in jouw dmesg.te bestandzetten:

dontaudit dmesg_t userdomain:fd { use };

Dit elimineert de fout output naar de terminal voor alle gebruiker domeinen, inclusief user,staff en sysadm.

Vraag:Even running in permissive mode, I'm getting a large number of avc denied messages.

Antwoord:In de niet-afdwingende mode, moet je in feite meer boodschappen krijgen dan in deafdwingende mode. De kernel logt iedere toegang weigering alsof je in een afdwingende modebent. Omdat je niet beperkt bent door tactiek afdwinging, kun je meer acties uitvoeren, watresulteert in nog meer gelogde weigeringen.

Als een toepassing draait in een afdwingende mode toegang wordt geweigerd om een aantalbestanden in een map te lezen, wordt het gestopt op het begin van de actie. In een niet-afdwingende mode wordt de toepassing niet gestopt om af te dalen in de map boom, en wordteen weigering boodschap gegenereerd voor ieder bestand dat in de map gelezen wordt.

Vraag:I get a specific permission denial only when SELinux is in enforcing mode, but I don't see anyaudit messages in /var/log/messages (or /var/log/audit/audit.log if using the auditdaemon). How can I identify the cause of these silent denials?

Antwoord:De meest voorkomende reden voor een stille weigering is de aanwezigheid van een explicietedontaudit regel in de tactiek om audit boodschappen te onderdrukken. De dontaudit regelwordt vaak op deze manier gebruikt als een goedaardige weigering de audit logs opvult.

Om te zoeken naar jouw bepaalde weigering, zet je audit aan voor alle dontaudit regels:

semodule -b /usr/share/selinux/targeted/enableaudit.pp

Page 18: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

18

Aangezette dontaudit output is zeer uitgebreid.

Audit aanzetten voor alle dontaudit regels zal waarschijnlijk een grote hoeveelheid auditinformatie produceren, waarvan de meeste niet relevant is voor jouw weigering.

Gebruik deze techniek alleen als je specifiek zoekt naar een audit boodschap voor eenweigering die stil schijn op te treden. Je wilt dontaudit regels zo spoedig mogelijk weeraanzetten.

Zodra je jouw probleem gevonden hebt kun je teruggaan naar de standaard mode door hetuitvoeren van

semodule -b /usr/share/selinux/targeted/base.pp

Vraag:Waarom zie ik geen output als ik bepaalde daemons in debug of interactieve mode draai?

Antwoord:SELinux zet toegang tot de tty apparaten expres uit om te voorkomen dat daemons terugcommuniceren met den controlerende terminal. Deze communicatie is een potentieel beveiliginglek omdat zulke daemons commando's kunnen invoeren op de controlerende terminal. Eenkapot of in gevaar gebracht programma kan dit lek gebruiken om serieuze problemen teveroorzaken.

Er zijn een aantal manieren waarop de standaard output van daemons kunt afvangen. Eenmethode is om de output met een pijp naar het cat commando te sturen.

snmpd -v | cat

Bij het debuggen van een daemon, wil je misschien de overgang van de daemon naar zijnspecifieke domein uitzetten. Je kunt dit doen met gebruik van system-config-selinux ofsetsebool op de commando-regel.

De laatste optie is om de afdwingende mode uit te zetten tijdens het debuggen. Geef hetcommando setenforce 0 om de afdwingende mode uit te zetten, en gebruik het commandosetenforce 1 om SELinux weer aan te zetten als je klaar bent met debuggen.

Vraag:Als ik een vernieuwing uitvoer van het tactiek pakket (bijvoorbeeld, met gebruik van yum), watgebeurt er dan met de tactiek? Wordt het automatisch vernieuwd?

Antwoord:De tactiek laadt zichzelf opnieuw in als het pakket vernieuwd wordt. Dit gedrag vervangt hethandmatige make load.

In bepaalde situaties moet je het bestandssysteem misschien opnieuw labelen. Dit kan optredenals onderdeel van een SELinux fout reparatie waarbij bestand contexten ongeldig worden, ofals de tactiek vernieuwing veranderingen maakt in het bestand /etc/selinux/targeted/contexts/files/file_contexts.

Nadat het bestandssysteem opnieuw gelabeld is, is een reboot niet vereist, maar is nuttig omte verzekeren dat elk proces en elk programma in het juiste domein draait. Dit is sterk afhankelijkvan de veranderingen in de vernieuwde tactiek.

Page 19: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

19

Om te her-labelen heb je meerdere opties. Je kunt het fixfiles commando gebruiken:

fixfiles relabel && reboot

Als alternatief gebruik je het /.autorelabel mechanisme:

touch /.autorelabel && reboot

Vraag:Als de tactiek meegeleverd met een toepassing pakket verandert op een manier dat her-labelen vereist, zal RPM dan het her-labelen afhandelen voor de bestanden waarvan het pakketeigenaar is?

Antwoord:Ja. De beveiliging context voor de bestanden waarvan het pakket eigenaar is wordenopgeslagen in de koptekst data van het pakket. De bestand contexten worden direct na hetcpio kopiëren, als de pakket bestanden op de schijf gezet worden.

Vraag:Why do binary policies distributed with Fedora, such as /etc/selinux/<policyname>/policy/policy.<version>, and those I compile myself have different sizes and MD5checksums?

Antwoord:Als je een tactiek pakket installeert, voor voor-gecompileerde binaire tactiek bestanden direct in/etc/selinux geplaatst. De verschillende bouw omgevingen zullen doel bestanden maken dieverschillende groottes en MD5 checksums hebben.

Vraag:Zullen nieuwe tactiek pakketten mijn systeem uitzetten?

Antwoord:There is a possibility that changes in the policy package or in the policy shipping with anapplication package can cause errors, more denials, or other unknown behaviors. You candiscover which package caused the breakage by reverting policy and application packagesone at a time. If you don't want to return to the previous package, the older version of theconfiguration files will be saved with the extension .rpmsave. Use the mailing lists, bugzilla,and IRC to help you work through your problem. If you are able, write or fix policy to resolve yourproblem.

Vraag:Mijn console wordt overspoeld met boodschappen. Hoe zet ik dit uit?

Antwoord:Om werkzame controle terug te krijgen, zet je de kernel boodschappen naar de console uit metdit commando:

dmesg -n 1

Vraag:Kan ik de standaard tactiek testen zonder de tactiek broncode te installeren?

Antwoord:Je kunt de standaard tactiek testen door het installeren van alleen de selinux-policy-policyname en policycoreutils pakketten. Zonder dat de tactiek broncodegeïnstalleerd is, automatiseert het fixfiles commando het her-labelen van hetbestandssysteem.

Page 20: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

20

Het commando fixfiles relabel is het equivalent van make relabel. Tijdens het her-labelen, verwijdert het alle bestanden in /tmp, en verschoont bestanden die oude context labelskunnen hebben.

Andere commando's zijn fixfiles check, welek controleert voor verkeerd gelabeldebestanden, en fixfiles restore, welke verkeerd gelabelde bestanden repareert maar debestanden in /tmp niet verwijdert. Het fixfiles commando accepteert geen lijst van mappenals argument, omdat het het gehele bestandssysteem her-labelt. Als je een specifiek map padmoet her-labelen, gebruik je restorecon.

Vraag:Waarom hebben een aantal van mijn KDE toepassingen problemen met SELinux?

Antwoord:KDE uitvoerbare programma's verschijnen altijd als kdeinit, wat beperkt wat er gedaan kanworden met SELinux tactiek. Dit komt omdat elke KDE toepassing draait in het domein voorkdeinit.

Er izjn vaak problemen als SELinux geïnstalleerd wordt omdat het niet mogelijk id om /tmp en/var/tmp te her-labelen. Er is geen goede manier om te bepalen welk bestand welke contextmoet hebben.

De oplossing is om volledig uit te loggen uit KDE en alle KDE tijdelijke bestanden te verwijderen:

rm -rf /var/tmp/kdecache-<username> rm -rf /var/tmp/<other_kde_files>

Bij de volgende keer inloggen, moet jouw probleem hersteld zijn.

Vraag:Waarom werkt SELINUX=disabled niet voor mij?

Antwoord:Wees voorzichtig met lege ruimte in het bestand /etc/sysconfig/selinux. De code is erggevoelig voor lege ruimte, zelfs voor een spatie achter een regel.

Vraag:Ik heb een proces draaiend als unconfined_t, en SELinux belet nog steeds dat mijntoepassing draait.

Antwoord:Wij zijn begonnen met het unconfined_t domein iets te begrenzen. SELinux beperkt bepaaldegeheugen bescherming operatie. Hier volgt een lijst van die weigeringen, en mogelijke redenenen oplossingen voor die weigeringen. Voor meer informatie over deze beperkingen refereer jenaar http://people.redhat.com/drepper/selinux-mem.html.

Deze worden in /var/log/messages (of /var/log/audit/audit.log als je de auditdaemon gebruikt) getoond als avc weigeringen. Deze komen ook tevoorschijn bij het draaien vanprogramma's met fouten zoals

error while loading shared libraries: /usr/lib/libavutil.so.49:cannot restore segment prot after reloc: Permission denied

wat aangeeft dat de bibliotheek probeert een tekst relocatie uit te voeren, wat mislukt. Tekstrelocaties zijn slecht, maar kunnen toegestaan worden met de eerste hint hieronder. Hieronderstaan de SELinux geheugen rechten die verboden zijn, en ook hints voor het aanpakken vandeze weigeringen.

Page 21: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

21

execmodDit is gewoonlijk gebaseerd op een bibliotheek label. Je kunt de context van de bibliotheekpermanent veranderen met de volgende commando's

# /usr/sbin/semanage fcontext -a -t textrel_shlib_t '/usr/lib/libavutil.so.49.0.0'# /sbin/restorecon -v /usr/lib/libavutil.so.49.0.0

met de betrokken bibliotheek met problemen in plaats van /usr/lib/libavutil.so.49.0.0. Jouw toepassing moet nu in staat zijn om te draaien. Rapporteerdit als een bug op http://bugzilla.redhat.com.

execstackProbeer execstack -c BIBLIOTHEEK. Probeer nu jouw toepassing opnieuw. Als detoepassing nu werkt, was de bibliotheek foutief gemarkeerd om execstack te vereisen.Rapporteer deze bug op http://bugzilla.redhat.com.

execmem, execheapEen boolean voor elk van deze geheugen check fouten wordt aangeboden. Dus als je eentoepassing draait die een van deze rechten nodig heeft, kun je de boolean allow_exec*aanzetten om het probleem te repareren. Bijvoorbeeld als je probeert een toepassing tedraaien en je krijgt een AVC boodschap die een execstack fout bevat. Je kunt de Booleaninstellen met:

setsebool -P allow_execstack=1

Vraag:Wat betekenen deze rpm fouten?

Antwoord:restorecon reset /etc/modprobe.conf context system_u:object_r:etc_runtime_t->system_u:object_r:modules_conf_trestorecon reset /etc/cups/ppd/homehp.ppd context user_u:object_r:cupsd_etc_t->system_u:object_r:cupsd_rw_etc_t

Tijdens het vernieuwing proces draait het selinux pakket restorecon op het verschil van de vorigeinstalleer tactiek file_context en de nieuw installeer tactiek context. Dit handhaaft de correctebestand context op schijf.

libsepol.sepol_genbools_array: boolean hidd_disable_trans no longer in policy

Dit geeft aan dat de vernieuwde tactiek de boolean uit de tactiek heeft verwijderd.

Vraag:Ik wil een daemon draaien op een niet-standaard poort maar SELinux wil me dat niet toestaan.Hoe krijg ik dit werkende?

Antwoord:Je kunt het semanage commando gebruiken om extra poorten te definiëren. Dus neem aan datje wilt dat httpd in staat is om te luisteren op poort 8082. Je moet dit commando invoeren.

semanage port -a -p tcp -t http_port_t 8082

Page 22: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux FAQ

22

Vraag:Ik ben een PHP script aan het schrijven dat bestanden moet aanmaken en ze mogelijk ookuitvoeren. SELinux voorkomt dit. War moet ik doen?

Antwoord:Ten eerste moet je nooit toestaan dat een systeem service alles kan uitvoeren wat het schrijft.Dit geeft een aanvaller de mogelijkheid om kwaadwillende code te uploaden naar de server enhet dan uit te voeren, wat iets is dat we willen voorkomen.

Als je alleen maar toe moet staan fat jouw script (niet-uitvoerbare) bestanden aanmaakt, dan isdat mogelijk. Dat gezegd hebbende, moet je voorkomen dat systeem toepassingen schrijven inde /tmp map, omdat gebruikers de neiging hebben om de /tmp map ook te gebruiken. Het isbeter om ergens een map aan te maken waarvan het apache proces de eigenaar is en je scripttoe te staan hiernaar te schrijven. Je moet de map labelen met httpd_sys_script_rw_t,wat apache zal toestaan om bestanden in die map te lezen en te schrijven. Deze map moet zichergens bevinden waar apache toegang tot heeft (zelfs $HOME/public_html/).

Vraag:Ik stel het swappen naar een bestand in, maar ik zie AVC boodschappen in log bestanden?

Antwoord:Je moet het swap bestand identificeren voor SELinux door het instellen van zij bestand contextnaar swapfile_t.

chcon -t swapfile_t SWAPFILE

Vraag:Kun je de relabelto/relabelfrom rechten uitleggen?

Antwoord:For files, relabelfrom means "Can domain D relabel a file from (i.e. currently in) type T1?" andrelabelto means "Can domain D relabel a file to type T2?", so both checks are applied upona file relabeling, where T1 is the original type of the type and T2 is the new type specified by theprogram.

Nuttige documenten om te bekijken:

• Object klasse en rechten samenvatting door Tresys http://tresys.com/selinux/obj_perms_help.shtml

• Implementing SELinux as an LSM technisch rapport (beschrijft rechten checks op per-haakbasis) http://www.nsa.gov/selinux/papers/module-abs.cfm. Dit is ook beschikbaar in hetselinux-doc pakket (en is daar meer up-to-date).

• Integrating Flexible Support for Security Policies into the Linux Operating System - technischrapport (beschrijft originele ontwerp en implementatie, inclusief samenvatting tabellen vanklasses, rechten, en welke rechten checks worden toegepast op welke systeem aanroepen.Het is niet geheel up-to-date met de huidige implementatie, maar toch een goede hulpbron).http://www.nsa.gov/selinux/papers/slinux-abs.cfm

1.4. SELinux inzetten

Vraag:Welke bestandssystemen kan ik gebruiken voor SELinux?

Antwoord:Het bestandssysteem moet xattr labels ondersteunen in de juiste security.* naam ruimte.Naast ext2/ext3/ext4, heeft XFS recentelijk ondersteuning toegevoegd voor de noodzakelijkelabels.

Page 23: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

SELinux

23

Merk op dat XFS SELinux ondersteuning niet werkte in de upstream Linux kernels versies 2.6.14en 2.6.15, maar dit is hersteld (een work-around) in 2.6.16. Jouw kernel moet deze versie zijn oflater als je ervoor kiest om XFS te gebruiken met SELinux.

Vraag:Welke invloed heeft SELinux op de systeem performance?

Antwoord:Dit is iets wat moeilijk te meten is, en is sterk afhankelijk van het afstemmen en gebruik van hetsysteem dat SELinux draait. De laatste keer dat de performance werd gemeten, resulteerdein een impact van ongeveer 7% voor compliet niet afgestemde code. Opeenvolgendeveranderingen in systeem componenten zoals netwerken hebben dit in sommige gevallenwaarschijnlijk slechter gemaakt. SELinux performance afstemmen blijft een prioriteit van hetontwikkel team.

Vraag:In welke types van inzetten, toepassingen, en systemen moet ik me sterk maken voor SELinux?

Antwoord:Oorspronkelijk werd SELinux gebruikt voor servers aangesloten op het Internet om een paargespecialiseerde functies uit te voeren en waar het kritisch is om heel krachtige beveiliging tehebben. Beheerders strippen van zo'n systeem gewoonlijk alle extra software en services, endraaien een zeer kleine, gefocusseerde set van services. Een Web server of een mail server iseen goed voorbeeld.

In deze rand servers kun je de tactiek heel erg strikt maken. Het kleine aantal interactiesmet andere componenten maak dit strikt maken eenvoudiger. Een toegepast systeem welkegespecialiseerde toepassingen van derden draait zal ook een goede kandidaat zijn.

In de toekomst zal SELinux zich op alle omgevingen richten. Om dit doel te bereiken moetende gemeenschap en onafhankelijke software verkoeprs (ISVs) samenwerken met de SELinuxontwikkelaars om de benodigde tactiek te produceren.

Vraag:Welke invloed heeft SELinux op toepassingen van derden?

Antwoord:EEn doel bij het implementeren van een gerichte SELinux tactiek in Fedora is het toestaan dattoepassingen van derden werken zonder veranderingen. De gerichte tactiek is transparant voordie niet-geadresseerde toepassingen, het het valt terug op standaard Linux DAC beveiliging.Deze toepassingen zullen echter niet draaien op een extra veilige manier. Jij of een andereaanbieder moet tactiek schrijven om deze toepassingen te beschermen met MAC beveiliging.

Het is onmogelijk om te voorspellen hoe elke toepassing van derden zich gedraagt in SELinux,zelfs bij het draaien van de gerichte tactiek. Je kunt misschien in staat zijn om problemen op telossen die ontstaan door het veranderen van de tactiek. Je kunt misschien vinden dat SELinuxtot nu toe onbekende beveiliging problemen met jouw toepassing blootlegt. Je moet misschiende toepassingen veranderen om ze onder SELinux te laten werken.

Merk op dat met de toevoeging van Policy Modules, het nu mogelijk is voor ontwikkelaars vanderden om tactiek modules toe te voegen aan hun toepassing. Als je een ontwikkelaar vanderden bent, of een pakket-onderhouder, overweeg dan om een tactiek module toe te voegenaan jouw pakket. Dit zal je toestaan om het gedrag van jouw toepassing te beveiliging met dekracht van SELinux voor elke gebruiker die jouw pakket installeert.

Een belangrijke waarde die Fedora testers en gebruikers aan de gemeenschap geven is hetuitgebreide testen van toepassingen van derden. Met dat in gedachte kun je jouw ervaringenvoor discussie overbrengen op de juiste mail lijst, zoals de fedora-selinux lijst, refereer naarhttps://admin.fedoraproject.org/mailman/listinfo/selinux.

Page 24: SELinux FAQ - Veel gestelde vragen over Security Enhanced ......het selinux-policy-targeted-sources pakket geïnstalleerd is. Het commando-regel gebruik is vriendelijker dan het standaard

24