Date: Mon, 19 May 2008 20:04:05 GMT From: Remko Lodder <remko@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 141873 for review Message-ID: <200805192004.m4JK45uC009238@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=141873 Change 141873 by remko@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) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200805192004.m4JK45uC009238>