PERFORCE change 141873 for review
Remko Lodder
remko at FreeBSD.org
Mon May 19 20:04:06 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=141873
Change 141873 by remko at remko_guardian on 2008/05/19 20:03:10
WIP for the MAC chapter, should be around 80%.
Affected files ...
.. //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml#3 edit
Differences ...
==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml#3 (text+ko) ====
@@ -1,7 +1,9 @@
<!--
The FreeBSD Dutch Documentation Project
- $FreeBSD: doc/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml,v 1.2 2004/12/29 17:42:51 remko Exp $
+ $FreeBSD$
+ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml,v 1.22 2006/01/05 21:13:23 siebrand Exp $
+ Gebaseerd op: 1.49
-->
<chapter id="mac">
@@ -14,224 +16,2350 @@
</author>
</authorgroup>
</chapterinfo>
- <title>* Mandatory Access Control</title>
+
+ <title>Verplichte Toegangscontrole (MAC)</title>
<sect1 id="mac-synopsis">
- <title>* Samenvatting</title>
+ <title>Overzicht</title>
+
+ <indexterm><primary>MAC</primary></indexterm>
+
+ <indexterm>
+ <primary>verplichte toegangscontrole</primary>
+
+ <see>MAC</see>
+ </indexterm>
+
+ <indexterm><primary>mandatory access control</primary></indexterm>
+
+ <para>In &os; 5.X worden nieuwe beveiligingsuitbreidingen
+ geïntroduceerd uit het TrustedBSD project, dat is gebaseerd
+ op de &posix;.1e draft. Twee van de meest significante nieuwe
+ beveiligingsmechanismen zijn bestandssysteem
+ Toegangscontrolelijsten (<acronym>ACL's</acronym>) en
+ Verplichte Toegangscontrole (Mandatory Access Control of
+ <acronym>MAC</acronym>) facilities. Met Verplichte
+ Toegangscontrole kunnen nieuwe toegangscontrolemodules geladen
+ worden, waarmee nieuw beveiligingsbeleid opgelegd kan worden.
+ Een aantal daarvan bieden beveiliging aan hele kleine onderdelen
+ van het systeem, waardoor een bepaalde dienst weerbaarder wordt,
+ terwijl andere allesomvattende gelabelde beveiliging bieden op
+ alle vlakken en objecten. Het verplichte deel van de definitie
+ komt van het feit dat het opleggen van de controle wordt gedaan
+ door beheerders en het systeem en niet wordt overgelaten aan
+ de nukken van gebruikers, zoals wel wordt gedaan met
+ toegangscontrole naar goeddunken (discretionary access control of
+ <acronym>DAC</acronym>, de standaard bestands- en System V
+ <acronym>IPC</acronym> rechten in &os;).</para>
+
+ <para>In dit hoofdstuk wordt de nadruk gelegd op het
+ Verplichte Toegangscontrole Framework (MAC Framework) en een set
+ van te activeren beveiligingsbeleidsmodules waarmee verschillende
+ soorten beveiligingmechanismen wordt ingeschakeld.</para>
+
+ <para>Na het lezen van dit hoofdstuk weet de lezer:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Welke <acronym>MAC</acronym> beveiligingsbeleidsmodules
+ op dit moment in &os; beschikbaar zijn en welke mechanismen
+ daarbij horen;</para>
+ </listitem>
+
+ <listitem>
+ <para>Wat <acronym>MAC</acronym> beveiligingsbeleidsmodules
+ implementeren en het verschil tussen gelabeld en
+ niet-gelabeld beleid;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een systeem efficiënt ingesteld kan worden om
+ met het <acronym>MAC</acronym> framework te werken;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe het beleid van de verschillende
+ beveiligingsbeleidsmodules die in het <acronym>MAC</acronym>
+ framework zitten ingesteld kunnen worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een veiliger omgeving gemaakt kan worden met het
+ <acronym>MAC</acronym> framework en de getoonde
+ voorbeelden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe de <acronym>MAC</acronym> instellingen getest
+ kunnen worden om er zeker van te zijn dat het framework juist
+ is geïmplementeerd.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Aangeraden voorkennis:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Begrip van &unix; en &os; basiskennis (<xref
+ linkend="basics">);</para>
+ </listitem>
+
+ <listitem>
+ <para>Bekend zijn met de beginselen van het instellen en
+ compileren van de kernel (<xref
+ linkend="kernelconfig">);</para>
+ </listitem>
+
+ <listitem>
+ <para>Enigszins bekend zijn met beveiliging en wat dat te maken
+ heeft met &os; (<xref linkend="security">).</para>
+ </listitem>
+ </itemizedlist>
+
+ <warning>
+ <para>Het verkeerd gebruiken van de informatie in dit hoofdstuk
+ kan leiden tot het niet langer toegang hebben tot een systeem,
+ grote ergernis bij gebruikers of het niet langer kunnen
+ gebruiken van de mogelijkheden die X11 biedt. Nog belangrijker
+ is dat niet alleen op <acronym>MAC</acronym> vertrouwd moet
+ worden voor de beveiliging van een systeem. Het
+ <acronym>MAC</acronym> framework vergroot alleen het bestaande
+ beveiligingsbeleid. Zonder goede beveiligingsprocedures en
+ regelmatige beveiligingscontroles is een systeem nooit helemaal
+ veilig.</para>
+
+ <para>Het is ook van belang op te merken dat de voorbeelden in
+ dit hoofdstuk alleen voorbeelden zijn. Het is niet aan te
+ raden ze uit te rollen op een productiesysteem. Het
+ implementeren van de verschillende beveiligingsbeleidmodules
+ dient goed overdacht te worden. Iemand die niet helemaal
+ begrijpt hoe alles werkt, komt er waarschijnlijk achter dat die
+ het complete systeem van voor naar achter en weer terug
+ doorloopt en heel erg veel bestanden en mappen opnieuw moet
+ instellen.</para>
+ </warning>
<sect2>
- <title>* Wat zal niet worden behandeld</title>
+ <title>Wat niet wordt behandeld</title>
- <para></para>
+ <para>In dit hoofdstuk wordt een brede reeks
+ beveiligingsonderwerpen met betrekking tot het
+ <acronym>MAC</acronym> framework behandeld. De ontwikkeling
+ van nieuwe <acronym>MAC</acronym> beveiligingsbeleidmodules
+ wordt niet behandeld. Een aantal modules die bij het
+ <acronym>MAC</acronym> framework zitten hebben specifieke
+ eigenschappen voor het testen en ontwikkelen van (nieuwe)
+ modules. Daaronder vallen &man.mac.test.4;, &man.mac.stub.4;
+ en &man.mac.none.4;. Meer informatie over deze
+ beveiligingsbeleidsmodules en de mogelijkheden die ze bieden
+ staan in de hulppagina's.</para>
</sect2>
</sect1>
<sect1 id="mac-inline-glossary">
- <title>* Sleutelwoorden in dit hoofdstuk</title>
+ <title>Sleuteltermen in dit hoofdstuk</title>
+
+ <para>Voordat het lezen van dit hoofdstuk zonder voorkennis
+ mogelijk is, moeten er eerst een aantal sleuteltermen toegelicht
+ worden. Hiermee wordt hopelijk mogelijke verwarring en de
+ abrupte introductie van nieuwe termen en informatie
+ voorkomen.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>compartiment</emphasis>: een compartiment is
+ een verzameling van programma's en data die gepartitioneerd
+ of gescheiden dient te worden en waartoe gebruikers expliciet
+ toegang moeten krijgen op een systeem. Een compartiment
+ staat ook voor een groep - werkgroep, afdeling, project of
+ onderwerp. Door gebruik te maken van compartimenten is het
+ mogelijk om <quote>need-to-know</quote> beveiligingsbeleid in
+ te stellen.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>integriteit</emphasis>: integriteit, als
+ sleutelconcept, is het niveau van vertrouwen dat in data
+ gesteld kan worden. Als de integriteit van data wordt
+ vergroot, dan geldt dat ook voor het vertrouwen dat in die
+ data gesteld kan worden.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>label</emphasis>: een label is een
+ beveiligingsattribuut dat toegepast kan worden op bestanden,
+ mappen of andere onderdelen van een systeem. Het kan gezien
+ worden als een vertrouwelijkheidsstempel: als er een label op
+ een bestand is geplaatst, beschrijft dat de
+ beveiligingseigenschappen voor dat specifieke bestand en is
+ daarop alleen toegang voor bestanden, gebruikers, bronnen,
+ enzovoort, met gelijke beveiligingsinstellingen. De
+ betekenis en interpretatie van labelwaarden hangt af van de
+ instelling van de beleidseeneheid: hoewel sommige
+ beleidseenheden een label beschouwen als representatie van de
+ integriteit of het geheimhoudingsniveau van een object,
+ kunnen andere beleidseenheden label gebruik om regels voor
+ toegang in op te slaan.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>niveau</emphasis>: de verhoogde of verlaagde
+ instelling van een beveiligingsattribuut. Met het stijgen
+ van het niveau wordt ook aangenomen dat de veiligheid
+ stijgt.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>meervoudig label</emphasis>: de eigenschap
+ <option>multilabel</option> is een optie van het
+ bestandssysteem die in single user modus met &man.tunefs.8;,
+ tijdens het opstarten via het bestand &man.fstab.5; of
+ tijdens het maken van een nieuw bestandssysteem ingesteld kan
+ worden. Met deze optie wordt het voor een beheerder mogelijk
+ om verschillende <acronym>MAC</acronym> labels op
+ verschillende objecten toe te passen. Deze optie is alleen
+ van toepassing op beveiligingsbeleidsmodules die labels
+ ondersteunen.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>object</emphasis>: een object of systeemobject
+ is een entiteit waar informatie doorheen stroomt op
+ aanwijzing van een <emphasis>subject</emphasis>. Hieronder
+ valleen mappen, bestanden, velden, schermen, toetsenborden,
+ geheugen, maganetische opslag, printers en alle andere
+ denkbare apparaten waarmee data kan worden vervoerd of data
+ op kan worden opgeslagen. In de basis is een object een
+ opslageenheid voor data of een systeembron; toegang tot een
+ <emphasis>object</emphasis> betekent in feite toegang tot de
+ data.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>beleidseenheid</emphasis>: een verzameling van
+ regels die aangeven hoe doelstellingen bereikt moeten worden.
+ In een <emphasis>beleidseenheid</emphasis> staat meestal
+ beschreven hoe bepaalde eenheden behandeld dienen te worden.
+ In dit hoofdstuk wordt de term
+ <emphasis>beleidseenheid</emphasis> in deze context gezien
+ als een <emphasis>beveiligingsbeleidseenheid</emphasis>, wat
+ zoveel wil zeggen als een verzameling regels die bepaalt hoe
+ data en informatie stroomt en aangeeft wie toegang tot welke
+ data en informatie heeft.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>gevoeligheid</emphasis>: meestal gebruikt bij
+ het bespreken vna <acronym>MLS</acronym>. Een
+ gevoeligheidsniveau is een term die gebruikt wordt om te
+ beschrijven hoe belangrijk of geheim de data hoort te zijn.
+ Met het stijgen van het gevoeligheidsniveau stijgt ook het
+ belang van de geheimhouding of de confidentialiteit van de
+ data.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>enkelvoudig label</emphasis>: een enkelvoudig
+ label wordt gebruikt als een heel bestandssysteem gebruik
+ maakt van één label om het toegangsbeleid over
+ de datastromen af te dwingen. Als dit voor een
+ bestandssysteem is ingesteld, wat geldt als er geen gebruik
+ gemaakt wordt van de optie <option>multilabel</option>, dan
+ gehoorzamen alle bestanden aan dezelfde
+ labelinstelling.</para>
+ </listitem>
- <para></para>
+ <listitem>
+ <para><emphasis>subject</emphasis>: een subject is een gegeven
+ actieve entiteit die het stromen van informatie tussen
+ <emphasis>objects</emphasis> veroorzaakt, bijvoorbeekd een
+ gebruiker, gebruikersprocessortijd, systeemproces, enzovoort.
+ Op &os; is dit bijna altijd een thread die in een proces
+ namens een gebruiker optreedt.</para>
+ </listitem>
+ </itemizedlist>
</sect1>
<sect1 id="mac-initial">
- <title>* Uitleg van MAC</title>
+ <title>Uitleg over MAC</title>
+
+ <para>Met al deze nieuwe termen in gedachten, kan overdacht worden
+ het <acronym>MAC</acronym> framework de complete beveiliging van
+ een systeem kan vergroten. De verschillende
+ beveiligingsbeleidsmodules die het <acronym>MAC</acronym>
+ framework biedt zouden gebruikt kunnen worden om het netwerk en
+ bestandssystemen te beschermen, gebruikers toegang tot bepaalde
+ poorten en sockets kunnen ontzeggen en nog veel meer. Misschien
+ kunnen de beleidsmodules het beste gebruikt worden door ze samen
+ in te zetten, door meerdere beveiligingsbeleidsmodules te laden
+ om te komen tot een omgeving waarin de beveiliging uit meerdere
+ lagen is opgebouwd. In een omgeving waarin de beveiliging uit
+ meerdere lagen is opgebouwd zijn meedere beleidsmodules actief
+ om de beveiliging in de hand te houden. Deze aanpak is anders
+ dan een beleid om de beveiliging sec beter te maken, omdat
+ daarmee in het algemeen elementen in een systeem beveiligd worden
+ dat voor een specifiek doel wordt gebruikt. Het enige nadeel is
+ het benodigde beheer in het geval van meervoudige
+ bestandssysteemlabels, het instellen van toegang tot het netwerk
+ per gebruiker, enzovoort.</para>
+
+ <para>De nadelen zijn wel minimaal als ze worden vergeleken met
+ het immer durende effect van het framework. Zo zorgt
+ bijvoorbeeld de mogelijkheid om te kiezen welke beleidseenheden
+ voor een specifiek gebruik nodig zijn voor het zo laag mogelijk
+ houden van de beheerslast. Het terugdringen van ondersteuning
+ voor onnodige beleidseenheden kan de beschikbaarheid van systemen
+ verhogen en ook de keuzevrijheid vergroten. Voor een goede
+ implementatie worden alle beveiligingseisen in beschouwing
+ genomen en daarna worden de verschillende
+ beveiligingsbeleidsmodules effectief door het framework
+ geïmplementeerd.</para>
+
+ <para>Een systeem dat gebruik maakt van de mogelijkheden van
+ <acronym>MAC</acronym> dient dus tenminste de garantie te hebben
+ dat een gebruiker niet de mogelijkheid heeft naar eigen inzicht
+ beveiligingsattributen te wijzigen. Alle gebruikersprogramma's
+ en scripts moeten werken binnen de beperkingen die de
+ toegangsregels voorschrijven volgens de geselecteerde
+ beveiligingsbeleidsmodules. Het voorgaande impliceert ook dat de
+ volledige controle over de <acronym>MAC</acronym> toegangsregels
+ bij de systeembeheerder ligt.</para>
+
+ <para>Het is de taak van de systeembeheerder om zorgvuldig de
+ juiste beveiligingsbeleidsmodules te kiezen. Voor sommige
+ omgevingen kan het nodig zijn dat de toegang tot het netwerk
+ wordt beperkt. In dat soort gevallen zijn de beleidsmodules
+ &man.mac.portacl.4;, &man.mac.ifoff.4; en zelfs &man.mac.biba.4;
+ goede startpunten. In andere gevallen kan het nodig zijn dat
+ alleen de vertrouwelijkheid van bestandssysteemobjecten van
+ belang is. Dan zijn beleidsmodules zoals &man.mac.bsdextended.4;
+ en &man.mac.mls.4; voor dit doel gemaakt.</para>
+
+ <para>Beslissingen over beleid zouden gemaakt kunnen worden op
+ basis van het netwerkontwerp. Wellicht wordt alleen bepaalde
+ gebruikers toegestaan gebruik te maken van de mogelijkheden van
+ &man.ssh.1; om toegang te krijgen tot het netwerk of internet.
+ In dat geval is de juiste beleidsmodule &man.mac.portacl.4;.
+ Maar wat te doen voor bestandssystemen? Moet alle toegang tot
+ bepaalde mappen worden afgesneeden van andere gebruikersgroepen
+ of specifieke gebruikers, of moeten de toegang voor gebruikers
+ of programma's tot bespaalde bestanden worden ingesteld door
+ bepaalde objecten als geheim te bestempelen?</para>
+
+ <para>In het geval van het bestandssysteem, kan ervoor gekozen
+ worden om de toegang voor sommige objecten voor bepaalde
+ gebruikers als geheim te bestempelen, maar voor andere niet.
+ Bijvoorbeeld: een groot ontwikkelteam wordt opgedeeld in
+ kleinere eenheden individuen. Ontwikkelaars in project A horen
+ geen toegang te hebben tot objecten die zijn geschreven door
+ ontwikkelaars in project B. Maar misschien moeten ze wel toegang
+ hebben tot objecten die zijn geschreven door ontwikkelaars in
+ project C. Dat is nogal wat. Door gebruik te maken van de
+ verschillende beveiligingsbeleidsmodules in het
+ <acronym>MAC</acronym> framework kunnen gebruikers in hun groepen
+ worden opgedeeld en kan ze toegang gegeven worden tot de juiste
+ locaties zonder dat er angst hoeft te zijn voor het lekken van
+ informatie.</para>
+
+ <para>Zo heeft dus iedere beveiligingsbeleidsmodule een unieke
+ wijze om om te gaan met de totale beveiliging van een systeem.
+ Het kiezen van modules hoort gebaseerd te zijn op een zorgvuldig
+ uitgedacht beveiligingsbeleid. In veel gevallen wordt het totale
+ beveiligingsbeleid aangepast en opnieuw toegepast op een systeem.
+ Een goed begrip van de verschillende beveiligingsbeleidsmodules
+ die het <acronym>MAC</acronym> framework biedt helpt beheerders
+ bij het kiezen van de juiste beleidseenheden voor hun
+ situatie.</para>
+
+ <para>De standaard &os; kernel kent geen ondersteuning voor het
+ <acronym>MAC</acronym> framework en daarom dient de volgende
+ kerneloptie toegevoegd te worden voordat op basis van de
+ voorbeelden of informatie uit dit hoofdstuk wijzigen worden
+ gemaakt:</para>
+
+ <programlisting>options MAC</programlisting>
+
+ <para>Hierna dient de kernel herbouwd en geïnstalleerd te
+ worden.</para>
- <para></para>
+ <caution>
+ <para>Hoewel in de verschillende hulppagina's voor
+ <acronym>MAC</acronym> beleidsmodules staat dat ze in de kernel
+ gebouwd kunnen worden, is het mogelijk het systeem van het
+ netwerk af te sluiten en meer. Het implementeren van
+ <acronym>MAC</acronym> is net zoiets als het implementeren van
+ een firewall en er moet opgepast worden dat een systeem niet
+ totaal op slot gaat. Er dient rekening gehouden te worden met
+ het teruggaan naar een vorige instelling en het op afstand
+ implementeren van <acronym>MAC</acronym> dient bijzonder
+ voorzichtig te gebeuren.</para>
+ </caution>
</sect1>
<sect1 id="mac-understandlabel">
- <title>* MAC labels begrijpen</title>
+ <title>MAC labels begrijpen</title>
+
+ <para>Een <acronym>MAC</acronym> label is een beveiligingsattribuut
+ dat toegepast kan worden op subjects en objecten die door het
+ systeem gaan.</para>
+
+ <para>Bij het instellen van een label moet de gebruiker in staat
+ zijn om precies te begrijpen wat er gebeurt. De attributen die
+ voor een object beschikbaar zijn hangen af van de geladen
+ beleidsmodule en die interpreteren hun attributen op nogal
+ verschillende manieren. Het resultaat kan resulteren in
+ onverwacht en wellicht ongewenst gedrag van een systeem als
+ het beleid door een gebrek aan begrip verkeerd is
+ ingesteld.</para>
+
+ <para>Het beveiligingslaven op een object wordt gebruikt als
+ onderdeel van een beveiligingstoegangscontrolebeslissing door een
+ beleidseenheid. Voor sommige beleidseenheden bevat het label
+ zelf alle informatie die nodig is voor het maken van een
+ beslissing; in andere modellen kunnen de labels als onderdeel van
+ een grotere set verwerkt worden, enzovoort.</para>
+
+ <para>Zo staat bijvoorbeeld het instellen van het label
+ <literal>biba/low</literal> op een bestand voor een label dat
+ wordt beheerd door de beveiligingsbeleidsmodule Biba, met een
+ waarde van <quote>low</quote>.</para>
+
+ <para>Een aantal beleidsmodules die in &os; de mogelijkheid voor
+ labelen ondersteunen, bieden drie specifieke voorgedefinieerde
+ labels: low, high en equal. Hoewel ze in verschillende
+ beleidsmodules op een andere manier toegangscontrole afdwingen,
+ is er de garantie dat het label <literal>low</literal> de laagst
+ mogelijke instelling is, het label <literal>equal</literal> het
+ subject of object uitschakelt of ongemoeid laat en het label
+ <literal>high</literal> de hoogst mogelijk instelling afdwingt
+ die beschikbaar is in de beleidsmodules Biba en
+ <acronym>MLS</acronym>.</para>
+
+ <para>Binnen een bestandssysteemomgeving met een enkelvoudig label
+ kan er maar één label gebruikt worden op objecten.
+ Hiermee wordt een set van toegangsrechten op het hele systeem
+ opgelegd en dat is voor veel omgevingen voldoende. Er zijn
+ echter een aantal gevallen waarin het wenselijk is meervoudige
+ label in te stellen op subject of objecten in het
+ bestandssysteem. In die gevallen kan de optie
+ <option>multilabel</option> meergegeven worden aan
+ &man.tunefs.8;.</para>
+
+ <para>In het geval van Biba en <acronym>MLS</acronym>, kan er een
+ numeriek label gezet worden om het precieze niveau van de
+ hiërarchische controle kan worden aangegeven. Dit
+ numerieke niveau wordt gebruikt om informatie in verschillende
+ groepen te partitioneren of te sorteren voor het klassificeren
+ voor het geven van toegang voor een bepaalde groep of een groep
+ van een hoger niveau.</para>
+
+ <para>In de meeste gevallen stelt een beheerder alleen maar een
+ enkelvoudig label in dat door het hele bestandssysteem wordt
+ gebruikt.</para>
+
+ <para><emphasis>Wacht eens, dat klinkt net als
+ <acronym>DAC</acronym>! <acronym>MAC</acronym> gaf de controle
+ toch strikt aan de beheerder?</emphasis> Dat klopt nog steeds,
+ <username>root</username> heeft nog steeds de controle in handen
+ en is degene die het beleid instelt zodat gebruikers in de
+ juiste categorie en/of toegangsniveau's worden geplaatst.
+ Daarnaast kunnen veel beleidsmodules ook de gebruiker
+ <username>root</username> beperkingen opleggen. Dan wordt de
+ controle overgedragen aan een groep, maar kan
+ <username>root</username> de instellingen op ieder gewenst
+ moment intrekken of wijzigen. Dit is het
+ hiërarchische/toegangsmodel dat wordt afgedekt door
+ beleidseenheden zoals Biba en <acronym>MLS</acronym>.</para>
<sect2>
- <title>* Label configuratie</title>
+ <title>Labelinstellingen</title>
+
+ <para>Vrijwel alle aspecten voor het instellen van labelbeleid
+ worden uitgevoerd met basissysteemprogramma's. Die commando's
+ bieden een eenvoudige interface voor object- of
+ subjectinstellingen of de manipulatie en verificatie van de
+ instellingen.</para>
+
+ <para>Alle instellingen kunnen gemaakt worden met de
+ hulpprogramma's &man.setfmac.8; and &man.setpmac.8;.
+ Het commando <command>setfmac</command> wordt gebruikt om
+ <acronym>MAC</acronym> labels op systeemobjecten in te stellen
+ en <command>setpmac</command> voor het instellen van de labels
+ op on systeemsubjects:</para>
+
+ <screen>&prompt.root; <userinput>setfmac biba/high test</userinput></screen>
+
+ <para>Als het bovenstaande commando geen foutmeldingen heeft
+ veroorzaakt, dan komt er een prompt terug. Deze commando's
+ geven altijd geen uitvoer, tenzij er een fout is tegengekomen;
+ net als bij &man.chmod.1; en &man.chown.8;. In sommige
+ gevallen kan de foutmelding <errorname>Permission
+ denied</errorname> zijn en deze ontstaat meestal als het
+ label wordt ingesteld of gewijzigd op een object dat is
+ beperkt.
+
+ <footnote>
+ <para>Andere condities kunnen andere foutmeldingen
+ veroorzaken. De gebruiker die het object probeert te
+ herlabelen kan bijvoorbeeld niet de eigenaar zijn, het
+ object kan niet bestaan of alleen-lezen zijn. Een
+ verplichte beleidsinstelling kan het proces niet toestaan
+ om een bestand te herlabelen, misschien om een
+ eigenschap van het bestand, een eigenschap van het proces
+ of een eigenschap van de voorgestelde nieuwe waarde van het
+ label. Een gebruiker die met een lage integriteit draait,
+ probeert bijvoorbeeld het label van een bestand met een
+ hoge integriteit te veranderen of diezelfde gebruiker kan
+ proberen het label van een bestand met lage integriteit te
+ wijzigen in een label van een hoge integriteit.</para>
+ </footnote>
+
+ De systeembeheerder kan de volgende commando's gebruiken om dit
+ probleem te voorkomen:</para>
+
+ <screen>&prompt.root; <userinput>setfmac biba/high test</userinput>
+<errorname>Permission denied</errorname>
+&prompt.root; <userinput>setpmac biba/low setfmac biba/high test</userinput>
+&prompt.root; <userinput>getfmac test</userinput>
+test: biba/high</screen>
+
+ <para>Hierboven is te zien dat <command>setpmac</command>
+ gebruikt kan worden om aan de instellingen van een
+ beleidsmodules voorbij te gaan door een ander label toe te
+ wijzen aan het aangeroepen proces. Het hulpprogramma
+ <command>getpmac</command> wordt meestal toegepast op processen
+ die al draaien, zoals <application>sendmail</application>:
+ hoewel er een proces ID nodig is in plaats van een commando, is
+ de logica gelijk. Als gebruikers proberen een bestand te
+ manipuleren waar ze geen toegang to hebben, onderhevig aan de
+ regels van een geladen beleidsmodule, dan wordt de foutmelding
+ <errorname>Operation not permitted</errorname> weergegeven door
+ de functie <function>mac_set_link</function>.</para>
+
+ <sect3>
+ <title>Labeltypen</title>
+
+ <para>Met de beleidsmodules &man.mac.biba.4;, &man.mac.mls.4;
+ en &man.mac.lomac.4; is het mogelijk eenvoudige labels toe te
+ wijzen. Die kunnen hoog, gelijk aan en laag zijn. Hieronder
+ een beschrijving van wat die labels betekenen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het label <literal>low</literal> is de laagst
+ mogelijke labelinstellingen die een object of subject kan
+ hebben. Deze instelling op objecten of subjects blokkeert
+ hun toegang tot objecten or subjects met de markering
+ hoog.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het label <literal>equal</literal> hoort alleen
+ ingesteld te worden op objecten die uitgesloten moeten
+ worden van een beleidsinstelling.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het label <literal>high</literal> geeft een object of
+ subject de hoogst mogelijke instelling.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Afhankelijke van iedere beleidsmodule heeft iedere
+ instelling een ander informatiestroomdirectief tot gevolg.
+ Het lezen van de hulppagina's die van toepassing zijn geeft
+ inzicht in de precieze eigenschappen van de standaard
+ labelinstellingen.</para>
+
+ <sect4>
+ <title>Gevorderde labelinstellingen</title>
+
+ <para>Dit zijn numerieke graden die gebruikt worden voor
+ <literal>vergelijking:afdeling+afdeling</literal>;.</para>
+
+ <programlisting>biba/10:2+3+6(5:2+3-20:2+3+4+5+6)</programlisting>
+
+ <para>Het bovenstaande kan dus geiuml;nterpreteerd worden
+ als:</para>
+
+ <para><quote>Biba Policy Label</quote>/<quote>Graad
+ 10</quote>:<quote>Afdelingen 2, 3 en 6</quote>:
+ (<quote>graad 5 ...</quote>)</para>
+
+ <para>In dit voorbeeld is de eerste graad de
+ <quote>effectieve graad</quote> met de <quote>effectieve
+ afdelingen</quote>, de tweede graag is is lage graagd en de
+ laatste is de hoge graad. In de meeste instellingen worden
+ deze instellingen niet gebruikt. Ze zijn inderdaad
+ instellingen voor gevorderden.</para>
+
+ <para>Als ze worden toegepast op systeemobjecten, hebben ze
+ alleen een huidige graad/afdeling in vergelijking met
+ systeemsubjects, omdat ze de reikwijdte van rechten in het
+ systeem en op netwerkinterfaces aangeven, waar ze gebruikt
+ worden door toegangscontrole.</para>
+
+ <para>De graad en afdelingen in een subject en object paar
+ wordt gebruikt om een relatie te construeren die ook wel
+ <quote>dominantie</quote> heet, waar een subject een object
+ domineert, geen van beiden domineert, of beiden elkaar
+ domineren. Het geval <quote>beiden domineren</quote> komt
+ voor als de twee labels gelijk zijn. Vanwege de natuur van
+ de informatiestroom van Biba, heeft een gebruiker rechten
+ op een set van afdelingen, <quote>need to know</quote>, die
+ overeen zouden kunnen komen met projecten, maar objecten
+ hebben ook een set van afdelingen. Gebruikers dienen
+ wellicht hun rechten te subsetten met <command>su</command>
+ of <command>setpmac</command> om toegang te krijgen tot
+ objecten in een afdeling die geen verboden terrein voor
+ ze zijn.</para>
+ </sect4>
+ </sect3>
<sect3>
- <title>* Gebruiker en label instellingen</title>
+ <title>Gebruikers en labelinstellingen</title>
+
+ <para>Gebruikers moeten zelf labels hebben, zodat hun bestanden
+ en processen juist kunnen samenwerken met het
+ beveiligingsbeleid dat op een systeem is ingesteld. Dit
+ wordt ingesteld via het bestand
+ <filename>login.conf</filename> door gebruik te maken van
+ aanmeldklassen. Iedere beleidsmodule die labels gebruikt
+ maakt ook gebruik van de instelling voor
+ aanmeldklasse.</para>
+
+ <para>Een voorbeeld dat iedere instelling uit de beleidsmodule
+ bevat is hieronder te zien:</para>
+
+ <programlisting>default:\
+ :copyright=/etc/COPYRIGHT:\
+ :welcome=/etc/motd:\
+ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
+ :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
+ :manpath=/usr/share/man /usr/local/man:\
+ :nologin=/usr/sbin/nologin:\
+ :cputime=1h30m:\
+ :datasize=8M:\
+ :vmemoryuse=100M:\
+ :stacksize=2M:\
+ :memorylocked=4M:\
+ :memoryuse=8M:\
+ :filesize=8M:\
+ :coredumpsize=8M:\
+ :openfiles=24:\
+ :maxproc=32:\
+ :priority=0:\
+ :requirehome:\
+ :passwordtime=91d:\
+ :umask=022:\
+ :ignoretime@:\
+ :label=partition/13,mls/5,biba/10(5-15),lomac10[2]:</programlisting>
+
+ <para>De optie <literal>label</literal> wordt gebruikt om het
+ standaardlabel voor aanmeldklasse in te stellen dat door
+ <acronym>MAC</acronym> wordt afgedwongen. Het wordt
+ gebruikers nooit toegestaan deze waarde te wijzigen, dus kan
+ het gezien worden als niet optioneel vanuit het perspectief
+ van de gebruiker. In de echte wereld besluit een beheerder
+ echter nooit iedere beleidsmodule te activeren. Het wordt
+ sterk aangeraden de rest van die hoofdstuk te lezen alvorens
+ (een deel van) de bovenstaande instellingen te
+ implementeren.</para>
+
+ <note>
+ <para>Gebruikers kunnen hun label wijzigen na het aanmelden,
+ maar dit is wel afhankelijk van de beperkingen van een
+ beleidsinstelling. De instelling in het bovenstaande
+ voorbeeld is zodanig in de beleidseenheid Biba, dat de
+ minimale integriteit van een proces 5 en het maximum 15 is.
+ Standaard is het effectieve label 10. Het proces draait
+ op niveau 10, totdat het label wordt gewijzigd, misschien
+ door een gebruiker die <command>setpmac</command> gebruikt,
+ bij het aanmelden beperkt tot de door Biba ingestelde
+ reeks.</para>
+ </note>
+
+ <para>In alle gevallen die de aanmeldklasse mogelijkheden
+ database opnieuw gebouwd te worden met
+ <command>cap_mkdb</command> na het wijzigen van
+ <filename>login.conf</filename>. Dit wordt ook in alle
+ komende voorbeelden en beschijvingen gedaan.</para>
+
+ <para>Het is belangrijk op te merken dat in veel gevallen
+ implementaties te maken hebben met bijzonder grote aantallen
+ gebruikers waardoor er een aantal verschillende
+ aanmeldklassen nodig zijn. Het is dan nodig gedetailleerd
+ te plannen omdat de implementatie anders bijzonder complex
+ wordt om te onderhouden.</para>
- <para></para>
+ <para>Toekomstige versies van &os; kennen een nieuwe manier om
+ om te gaan met het koppelen van gebruikers aan labels. Dit
+ komt echter niet beschikbaar tot enige tijd na
+ &os; 5.3.</para>
</sect3>
<sect3>
- <title>* Netwerk Interfaces en label instellingen</title>
+ <title>Netwerkinterfaces en labelinstellingen</title>
+
+ <para>Labels kunnen ook ingesteld worden op netwerkinterfaces
+ om te assisteren bij het controleren van het stromen van
+ gegevens over het netwerk. In alle gevallen werken ze op
+ dezelfde wijze als het beleid werkt ten aanzien van objecten.
+ Gebruikers met bijvoorbeeld een hoge instelling in
+ <literal>biba</literal> krijgen geen toegang tot interfaces
+ met een laag label.</para>
+
+ <para>Het <option>maclabel</option> kan meegegeven worden aan
+ <command>ifconfig</command> als het <acronym>MAC</acronym>
+ label op netwerkinterfaces wordt ingesteld:</para>
+
+ <screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal</userinput></screen>
+
+ <para>In het bovenstaande voorbeeld wordt het
+ <acronym>MAC</acronym> label van
+ <literal>biba/equal</literal> ingesteld op de &man.bge.4;
+ interface. Als er een instelling wordt gebruikt die
+ gelijkvormig is aan <literal>biba/high(low-high)</literal>,
+ dan moet het volledige label worden ingegeven, anders treedt
+ er een fout op.</para>
- <para></para>
+ <para>Iedere beleidsmodule die labels ondersteunt een
+ instelling waarmee het <acronym>MAC</acronym> op
+ netwerkinterfaces kan worden uitgeschakeld. Het label
+ instellen op <option>equal</option> heeft hetzelfde effect.
+ Deze instellingen zijn na te kijken in de uitvoer van
+ <command>sysctl</command>, de hulppagina van het beleid en
+ zelfs later in dit hoofdstuk.</para>
</sect3>
</sect2>
<sect2>
- <title>* Singlelabel of Multilabel?</title>
+ <title>Enkelvoudig label of meervoudig label?</title>
+
+ <para>Standaard gebruikt een systeem de optie
+ <option>singlelabel</option> option. Wat betekent dit voor een
+ beheerder? Er zijn een aantal verschillen die allemaal hun
+ eigen voor- en nadelen hebben voor de flexibiliteit in het
+ beveiligingsmodel voor een systeem.</para>
+
+ <para>Bij gebruik van <option>singlelabel</option> kan er maar
+ één label, bijvoorbeeld
+ <literal>biba/high</literal>, gebruikt worden voor ieder
+ subject of object. Hierdoor is er minder beheer nodig, maar de
+ flexibiliteit voor beleid dat labels ondersteunt daalt erdoor.
+ Veel beheerders willen de optie <option>multilabel</option>
+ gebruiken in hun beveiligingsmodel.</para>
+
+ <para>De optie <option>multilabel</option> staat ieder subject of
+ object toe om zijn eigen onafhankelijke <acronym>MAC</acronym>
+ label te hebben in plaats van de standaardoptie
+ <option>singlelabel</option>, die maar één label
+ toestaat op een hele partitie. De labelopties
+ <option>multilabel</option> en <option>single</option> zijn
+ alleen verplicht voor de beleidseenheden die de mogelijkheid
+ bieden om te labelen, waaronder de beleidsmorgelijkheden van
+ Biba, Lomac, <acronym>MLS</acronym> en
+ <acronym>SEBSD</acronym>.</para>
+
+ <para>In veel gevallen hoeft <option>multilabel</option> niet\
+ eens ingesteld te worden. Stel er is de volgende situatie en
+ beveiligingsmodel:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>&os; webserver die gebruik maakt van het
+ <acronym>MAC</acronym> framework en een mengeling van
+ verschillende beleidseenheden.</para>
+ </listitem>
+
+ <listitem>
+ <para>De webserver heeft maar een label nodig,
+ <literal>biba/high</literal>, voor alles in het systeem.
+ Hier is de optie <option>multilabel</option> voor het
+ bestandssysteem niet nodig, omdat een enkelvoudig label
+ altijd van toepassing is.</para>
+ </listitem>
+
+ <listitem>
+ <para>Maar omdat de machine als webserver dienst gaat doen,
+ dient de webserver te draaien als
+ <literal>biba/low</literal> om ****write up capabilities****
+ te voorkomen. Later wordt beschreven hoe de Biba
+ beleidseenheid werkt, dus als de voorgaande opmerking wat
+ lastig te begrijpen is, lees dan verder en kom later nog
+ een keer terug. De server zou een aparte partitie kunnen
+ gebruiken waarop <literal>biba/low</literal> van toepassing
+ kan zijn voor de meeste, zo niet alle, runtime statussen.
+ Er ontbreekt veel in dit voorbeeld, bijvoorbeeld de
+ restricties op gegevens en (gebruikers)instellingen. Dit
+ was slechts een snel voorbeeld om de hiervoor aangehaalde
+ stelling te ondersteunen.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Als er een niet-labelende beleidseenheid wordt gebruikt,
+ dan is de optie <option>multilabel</option> nooit verplicht.
+ Hieronder vallen de beleidseenheden
+ <literal>seeotheruids</literal>, <literal>portacl</literal> en
+ <literal>partition</literal>.</para>
+
+ <para>Bij gebruik van <option>multilabel</option> voor een
+ partitie en het neerzetten van een beveiligingsmodel gebaseerd
+ op <option>multilabel</option> functionaliteit gaat de deur
+ open voor hogere administratieve overhead, omdat alles in een
+ bestandssysteem een label krijgt. Hieronder vallen mappen,
+ bestanden en zelfs apparaatnodes.</para>
+
+ <para>Het volgende commando stelt <option>multilabel</option> in
+ op de bestandssystemen om meerdere labels te kunnen kringen.
+ Dit kan alleen uitgevoerd worden in single user modus:</para>
+
+ <screen>&prompt.root; <userinput>tunefs -l enable /</userinput></screen>
+
+ <para>Dit is geen criterium voor het swap bestandssysteem.</para>
- <para></para>
+ <note>
+ <para>Sommige gebruikers hebben problemen ondervonden met het
+ instelling van de vlag <option>multilabel</option> op de
+ rootpartitie. Als dit het geval is, kijk dan naar <xref
+ linkend="mac-troubleshoot">.</para>
+ </note>
</sect2>
<sect2>
- <title>* Mac beheren met aanpasbare instellingen</title>
+ <title>MAC beheren met tunables</title>
+
+ <para>Zonder dat er modules zijn geladen, kunnen er al onderdelen
+ van <acronym>MAC</acronym> ingesteld worden met de
+ <command>sysctl</command> interface. Deze tunables worden
+ hieronder beschreven en in alle gevallen betekent het getal een
+ (1) ingeschakeld en nul (0) betekent uitgeschakeld:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><literal>security.mac.enforce_fs</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ bestandssysteembeleid af op bestandssystemen.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_kld</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ kernellinkingbeleid af op de dynamische kernellinker (zie
+ &man.kld.4;).</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_network</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ netwerkbeleid af.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_pipe</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ beleid op pipes af.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_process</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ beleid af op processen die gebruik maken van inter-proces
+ communicatie.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_socket</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ beleid op sockets af (zie &man.socket.2;).</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_system</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ beleid af op op systeemactiviteit zoals accounting en
+ herstarten.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>security.mac.enforce_vm</literal> staat
+ standaard op een (1) en dwingt <acronym>MAC</acronym>
+ beleid af op het virtuele geheugensysteem.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Ieder beleid of <acronym>MAC</acronym> optie ondersteunt
+ tunables. Die zijn in het algemeen te vinden in de
+ boomstructuur
+ <literal>security.mac.<policyname></literal>. Alle
+ tunables voor <acronym>MAC</acronym> zijn met het volgende
+ commando zichtbaar te maken:</para>
+
+ <screen>&prompt.root; <userinput>sysctl -da | grep mac</userinput></screen>
+ </note>
- <para></para>
+ <para>Dit moet opgevat worden als dat alle basis
+ <acronym>MAC</acronym> beleidseenheden standaard worden
+ afgedwonen. Als de modules in de kernel zouden zijn gebouwd,
+ zou een systeem bijzonder sterk zijn dichtgetimmerd en zeer
+ waarschijnlijk niet kunnen communiceren met een lokaal netwerk
+ of verbonden kunnen worden met internet, enzovoort. Om deze
+ reden is het inbouwen van modules in de kernel niet volledig
+ aan te raden. Niet omdat het de mogelijkheid om opties direct
+ uit te schakelen met <command>sysctl</command> limiteert, maar
+ het stelt een beheerder in staat om beleid direct aan of uit te
+ schakelen zonder dat een nieuw systeem gebouwd en
+ geïnstalleerd hoeft te worden.</para>
</sect2>
</sect1>
<sect1 id="mac-modules">
- <title>* Module configuratie</title>
+ <title>Module-instellingen</title>
+
+ <para>Iedere module uit het <acronym>MAC</acronym> framework kan
+ zoals zojuist aangegeven in de kernel worden gecompileerd of als
+ runtime kernelmodule geladen worden. De geadviseerde methode is
+ de naam van een module toevoegen aan het bestand
+ <filename>/boot/loader.conf</filename> zodat die wordt geladen
+ tijdens de eerste fase van het starten van een systeem.</para>
+
+ <para>In de volgende onderdelen worden de verschillende
+ <acronym>MAC</acronym> modules en hun mogelijkheden beschreven.
+ De implementatie in een specifieke omgeving wordt in dit
+ hoofdstuk ook meegenomen. Een aantal modules ondersteunt het
+ gebruik van labelen, wat het beperken van toegang is door een
+ label als <quote>dit is toegestaan en dat niet</quote> af te
+ dwingen. Een labelinstellingenbestand kan bepalen hoe bestanden
+ kunnen worden benaderd, hoe netwerkcommunicatie wordt
+ uitgewisseld en meer. In het vorige onderdeel is beschreven hoe
+ de vlag <option>multilabel</option> ingesteld kon worden op
+ bestandssystemen om per bestand of per partitie toegangscontrole
+ in te schakelen.</para>
+
+ <para>Een instelling met een enkelvoudig label zou maar
+ één label over een heel systeem afdwingen, daarom
+ wordt de optie <command>tunefs</command>
+ <option>multilabel</option> genoemd.</para>
<sect2 id="mac-seeotheruids">
- <title>* De MAC seeotheruids module</title>
+ <title>MAC module seeotheruids</title>
+
+ <indexterm><primary>MAC zie andere UID's beleidsinstelling</primary></indexterm>
+
+ <para>Modulenaam: <filename>mac_seeotheruids.ko</filename></para>
+
+ <para>Kernelinstelling: <literal>options
+ MAC_SEEOTHERUIDS</literal></para>
+
+ <para>Bootoptie:
+ <literal>mac_seeotheruids_load="YES"</literal></para>
+
+ <para>De module &man.mac.seeotheruids.4; imiteert de
+ <command>sysctl</command> tunables
+ <literal>security.bsd.see_other_uids</literal> en
+ <literal>security.bsd.see_other_gids</literal> en bereidt deze
+ uit. Voor deze optie hoeven geen labels ingesteld te worden
+ voor de instelling en hij werkt transparant met de andere
+ modules.</para>
+
+ <para>Na het laden van de module kunnen de volgende
+ <command>sysctl</command> tunables gebruikt worden om de opties
+ in te stellen:</para>
+
+ <itemizedlist>
+ <listitem>
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list