From 041e7d95d88bb4c1dbe8def380114258bb2dc8c4 Mon Sep 17 00:00:00 2001 From: Remko Lodder Date: Wed, 21 May 2008 21:29:21 +0000 Subject: [PATCH] MFp4: Add a translated version of the MAC chapter. Obtained from: The FreeBSD Dutch Documentation Project (Siebrand Mazeland) Facilitated by: Snow B.V. --- .../books/handbook/mac/chapter.sgml | 2282 ++++++++++++++++- 1 file changed, 2210 insertions(+), 72 deletions(-) diff --git a/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml index c8303b345a..92b324a617 100644 --- a/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml @@ -2,6 +2,8 @@ The FreeBSD Dutch Documentation Project $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 --> @@ -14,224 +16,2360 @@ - * Mandatory Access Control + + Verplichte Toegangscontrole (MAC) - * Samenvatting + Overzicht + + MAC + + + verplichte toegangscontrole + + MAC + + + mandatory access control + + 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 (ACL's) en + Verplichte Toegangscontrole (Mandatory Access Control of + MAC) 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 + DAC, de standaard bestands- en System V + IPC rechten in &os;). + + 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. + + Na het lezen van dit hoofdstuk weet de lezer: + + + + Welke MAC beveiligingsbeleidsmodules + op dit moment in &os; beschikbaar zijn en welke mechanismen + daarbij horen; + + + + Wat MAC beveiligingsbeleidsmodules + implementeren en het verschil tussen gelabeld en + niet-gelabeld beleid; + + + + Hoe een systeem efficiënt ingesteld kan worden om + met het MAC framework te werken; + + + + Hoe het beleid van de verschillende + beveiligingsbeleidsmodules die in het MAC + framework zitten ingesteld kunnen worden; + + + + Hoe een veiliger omgeving gemaakt kan worden met het + MAC framework en de getoonde + voorbeelden; + + + + Hoe de MAC instellingen getest + kunnen worden om er zeker van te zijn dat het framework juist + is geïmplementeerd. + + + + Aangeraden voorkennis: + + + + Begrip van &unix; en &os; basiskennis (); + + + + Bekend zijn met de beginselen van het instellen en + compileren van de kernel (); + + + + Enigszins bekend zijn met beveiliging en wat dat te maken + heeft met &os; (). + + + + + 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 MAC vertrouwd moet + worden voor de beveiliging van een systeem. Het + MAC framework vergroot alleen het bestaande + beveiligingsbeleid. Zonder goede beveiligingsprocedures en + regelmatige beveiligingscontroles is een systeem nooit helemaal + veilig. + + 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. + - * Wat zal niet worden behandeld + Wat niet wordt behandeld - + In dit hoofdstuk wordt een brede reeks + beveiligingsonderwerpen met betrekking tot het + MAC framework behandeld. De ontwikkeling + van nieuwe MAC beveiligingsbeleidmodules + wordt niet behandeld. Een aantal modules die bij het + MAC 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. - * Sleutelwoorden in dit hoofdstuk + Sleuteltermen in dit hoofdstuk - + 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. + + + + compartiment: 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 need-to-know beveiligingsbeleid in + te stellen. + + + + integriteit: 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. + + + + label: 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. + + + + niveau: de verhoogde of verlaagde + instelling van een beveiligingsattribuut. Met het stijgen + van het niveau wordt ook aangenomen dat de veiligheid + stijgt. + + + + meervoudig label: de eigenschap + 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 MAC labels op + verschillende objecten toe te passen. Deze optie is alleen + van toepassing op beveiligingsbeleidsmodules die labels + ondersteunen. + + + + object: een object of systeemobject + is een entiteit waar informatie doorheen stroomt op + aanwijzing van een subject. 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 + object betekent in feite toegang tot de + data. + + + + beleidseenheid: een verzameling van + regels die aangeven hoe doelstellingen bereikt moeten worden. + In een beleidseenheid staat meestal + beschreven hoe bepaalde eenheden behandeld dienen te worden. + In dit hoofdstuk wordt de term + beleidseenheid in deze context gezien + als een beveiligingsbeleidseenheid, 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. + + + + gevoeligheid: meestal gebruikt bij + het bespreken vna MLS. 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. + + + + enkelvoudig label: 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 , dan + gehoorzamen alle bestanden aan dezelfde + labelinstelling. + + + + subject: een subject is een gegeven + actieve entiteit die het stromen van informatie tussen + objects veroorzaakt, bijvoorbeekd een + gebruiker, gebruikersprocessortijd, systeemproces, enzovoort. + Op &os; is dit bijna altijd een thread die in een proces + namens een gebruiker optreedt. + + - * Uitleg van MAC + Uitleg over MAC - + Met al deze nieuwe termen in gedachten, kan overdacht worden + het MAC framework de complete beveiliging van + een systeem kan vergroten. De verschillende + beveiligingsbeleidsmodules die het MAC + 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. + + 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. + + Een systeem dat gebruik maakt van de mogelijkheden van + MAC 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 MAC toegangsregels + bij de systeembeheerder ligt. + + 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. + + 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? + + 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 + MAC 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. + + 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 MAC framework biedt helpt beheerders + bij het kiezen van de juiste beleidseenheden voor hun + situatie. + + De standaard &os; kernel kent geen ondersteuning voor het + MAC framework en daarom dient de volgende + kerneloptie toegevoegd te worden voordat op basis van de + voorbeelden of informatie uit dit hoofdstuk wijzigen worden + gemaakt: + + options MAC + + Hierna dient de kernel herbouwd en geïnstalleerd te + worden. + + + Hoewel in de verschillende hulppagina's voor + MAC 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 + MAC 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 MAC dient bijzonder + voorzichtig te gebeuren. + - * MAC labels begrijpen + MAC labels begrijpen + + Een MAC label is een beveiligingsattribuut + dat toegepast kan worden op subjects en objecten die door het + systeem gaan. + + 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. + + 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. + + Zo staat bijvoorbeeld het instellen van het label + biba/low op een bestand voor een label dat + wordt beheerd door de beveiligingsbeleidsmodule Biba, met een + waarde van low. + + 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 low de laagst + mogelijke instelling is, het label equal het + subject of object uitschakelt of ongemoeid laat en het label + high de hoogst mogelijk instelling afdwingt + die beschikbaar is in de beleidsmodules Biba en + MLS. + + 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 + meergegeven worden aan + &man.tunefs.8;. + + In het geval van Biba en MLS, 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. + + In de meeste gevallen stelt een beheerder alleen maar een + enkelvoudig label in dat door het hele bestandssysteem wordt + gebruikt. + + Wacht eens, dat klinkt net als + DAC! MAC gaf de controle + toch strikt aan de beheerder? Dat klopt nog steeds, + root 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 + root beperkingen opleggen. Dan wordt de + controle overgedragen aan een groep, maar kan + root de instellingen op ieder gewenst + moment intrekken of wijzigen. Dit is het + hiërarchische/toegangsmodel dat wordt afgedekt door + beleidseenheden zoals Biba en MLS. - * Label configuratie + Labelinstellingen + + 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. + + Alle instellingen kunnen gemaakt worden met de + hulpprogramma's &man.setfmac.8; and &man.setpmac.8;. + Het commando setfmac wordt gebruikt om + MAC labels op systeemobjecten in te stellen + en setpmac voor het instellen van de labels + op on systeemsubjects: + + &prompt.root; setfmac biba/high test + + 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 Permission + denied zijn en deze ontstaat meestal als het + label wordt ingesteld of gewijzigd op een object dat is + beperkt. + + + 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. + + + De systeembeheerder kan de volgende commando's gebruiken om dit + probleem te voorkomen: + + &prompt.root; setfmac biba/high test +Permission denied +&prompt.root; setpmac biba/low setfmac biba/high test +&prompt.root; getfmac test +test: biba/high + + Hierboven is te zien dat setpmac + 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 + getpmac wordt meestal toegepast op processen + die al draaien, zoals sendmail: + 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 + Operation not permitted weergegeven door + de functie mac_set_link. - * Gebruiker en label instellingen + Labeltypen - + 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: + + + + Het label low 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. + + + + Het label equal hoort alleen + ingesteld te worden op objecten die uitgesloten moeten + worden van een beleidsinstelling. + + + + Het label high geeft een object of + subject de hoogst mogelijke instelling. + + + + 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. + + + Gevorderde labelinstellingen + + Dit zijn numerieke graden die gebruikt worden voor + vergelijking:afdeling+afdeling;. + + biba/10:2+3+6(5:2+3-20:2+3+4+5+6) + + Het bovenstaande kan dus geiuml;nterpreteerd worden + als: + + Biba Policy Label/Graad + 10:Afdelingen 2, 3 en 6: + (graad 5 ...) + + In dit voorbeeld is de eerste graad de + effectieve graad met de effectieve + afdelingen, 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. + + 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. + + De graad en afdelingen in een subject en object paar + wordt gebruikt om een relatie te construeren die ook wel + dominantie heet, waar een subject een object + domineert, geen van beiden domineert, of beiden elkaar + domineren. Het geval beiden domineren 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, need to know, die + overeen zouden kunnen komen met projecten, maar objecten + hebben ook een set van afdelingen. Gebruikers dienen + wellicht hun rechten te subsetten met su + of setpmac om toegang te krijgen tot + objecten in een afdeling die geen verboden terrein voor + ze zijn. + - * Netwerk Interfaces en label instellingen + Gebruikers en labelinstellingen - + 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 + login.conf door gebruik te maken van + aanmeldklassen. Iedere beleidsmodule die labels gebruikt + maakt ook gebruik van de instelling voor + aanmeldklasse. + + Een voorbeeld dat iedere instelling uit de beleidsmodule + bevat is hieronder te zien: + + 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]: + + De optie label wordt gebruikt om het + standaardlabel voor aanmeldklasse in te stellen dat door + MAC 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. + + + 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 setpmac gebruikt, + bij het aanmelden beperkt tot de door Biba ingestelde + reeks. + + + In alle gevallen die de aanmeldklasse mogelijkheden + database opnieuw gebouwd te worden met + cap_mkdb na het wijzigen van + login.conf. Dit wordt ook in alle + komende voorbeelden en beschijvingen gedaan. + + 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. + + 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. + + + + Netwerkinterfaces en labelinstellingen + + 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 + biba krijgen geen toegang tot interfaces + met een laag label. + + Het kan meegegeven worden aan + ifconfig als het MAC + label op netwerkinterfaces wordt ingesteld: + + &prompt.root; ifconfig bge0 maclabel biba/equal + + In het bovenstaande voorbeeld wordt het + MAC label van + biba/equal ingesteld op de &man.bge.4; + interface. Als er een instelling wordt gebruikt die + gelijkvormig is aan biba/high(low-high), + dan moet het volledige label worden ingegeven, anders treedt + er een fout op. + + Iedere beleidsmodule die labels ondersteunt een + instelling waarmee het MAC op + netwerkinterfaces kan worden uitgeschakeld. Het label + instellen op heeft hetzelfde effect. + Deze instellingen zijn na te kijken in de uitvoer van + sysctl, de hulppagina van het beleid en + zelfs later in dit hoofdstuk. - * Singlelabel of Multilabel? + Enkelvoudig label of meervoudig label? - + Standaard gebruikt een systeem de optie + 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. + + Bij gebruik van kan er maar + één label, bijvoorbeeld + biba/high, 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 + gebruiken in hun beveiligingsmodel. + + De optie staat ieder subject of + object toe om zijn eigen onafhankelijke MAC + label te hebben in plaats van de standaardoptie + , die maar één label + toestaat op een hele partitie. De labelopties + en zijn + alleen verplicht voor de beleidseenheden die de mogelijkheid + bieden om te labelen, waaronder de beleidsmorgelijkheden van + Biba, Lomac, MLS en + SEBSD. + + In veel gevallen hoeft niet\ + eens ingesteld te worden. Stel er is de volgende situatie en + beveiligingsmodel: + + + + &os; webserver die gebruik maakt van het + MAC framework en een mengeling van + verschillende beleidseenheden. + + + + De webserver heeft maar een label nodig, + biba/high, voor alles in het systeem. + Hier is de optie voor het + bestandssysteem niet nodig, omdat een enkelvoudig label + altijd van toepassing is. + + + + Maar omdat de machine als webserver dienst gaat doen, + dient de webserver te draaien als + biba/low 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 biba/low 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. + + + + Als er een niet-labelende beleidseenheid wordt gebruikt, + dan is de optie nooit verplicht. + Hieronder vallen de beleidseenheden + seeotheruids, portacl en + partition. + + Bij gebruik van voor een + partitie en het neerzetten van een beveiligingsmodel gebaseerd + op functionaliteit gaat de deur + open voor hogere administratieve overhead, omdat alles in een + bestandssysteem een label krijgt. Hieronder vallen mappen, + bestanden en zelfs apparaatnodes. + + Het volgende commando stelt in + op de bestandssystemen om meerdere labels te kunnen kringen. + Dit kan alleen uitgevoerd worden in single user modus: + + &prompt.root; tunefs -l enable / + + Dit is geen criterium voor het swap bestandssysteem. + + + Sommige gebruikers hebben problemen ondervonden met het + instelling van de vlag op de + rootpartitie. Als dit het geval is, kijk dan naar . + - * Mac beheren met aanpasbare instellingen + MAC beheren met tunables - + Zonder dat er modules zijn geladen, kunnen er al onderdelen + van MAC ingesteld worden met de + sysctl interface. Deze tunables worden + hieronder beschreven en in alle gevallen betekent het getal een + (1) ingeschakeld en nul (0) betekent uitgeschakeld: + + + + security.mac.enforce_fs staat + standaard op een (1) en dwingt MAC + bestandssysteembeleid af op bestandssystemen. + + + + security.mac.enforce_kld staat + standaard op een (1) en dwingt MAC + kernellinkingbeleid af op de dynamische kernellinker (zie + &man.kld.4;). + + + + security.mac.enforce_network staat + standaard op een (1) en dwingt MAC + netwerkbeleid af. + + + + security.mac.enforce_pipe staat + standaard op een (1) en dwingt MAC + beleid op pipes af. + + + + security.mac.enforce_process staat + standaard op een (1) en dwingt MAC + beleid af op processen die gebruik maken van inter-proces + communicatie. + + + + security.mac.enforce_socket staat + standaard op een (1) en dwingt MAC + beleid op sockets af (zie &man.socket.2;). + + + + security.mac.enforce_system staat + standaard op een (1) en dwingt MAC + beleid af op op systeemactiviteit zoals accounting en + herstarten. + + + + security.mac.enforce_vm staat + standaard op een (1) en dwingt MAC + beleid af op het virtuele geheugensysteem. + + + + + Ieder beleid of MAC optie ondersteunt + tunables. Die zijn in het algemeen te vinden in de + boomstructuur + security.mac.<policyname>. Alle + tunables voor MAC zijn met het volgende + commando zichtbaar te maken: + + &prompt.root; sysctl -da | grep mac + + + Dit moet opgevat worden als dat alle basis + MAC 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 sysctl 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. - * Module configuratie + Module-instellingen + + Iedere module uit het MAC 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 + /boot/loader.conf zodat die wordt geladen + tijdens de eerste fase van het starten van een systeem. + + In de volgende onderdelen worden de verschillende + MAC 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 dit is toegestaan en dat niet 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 ingesteld kon worden op + bestandssystemen om per bestand of per partitie toegangscontrole + in te schakelen. + + Een instelling met een enkelvoudig label zou maar + één label over een heel systeem afdwingen, daarom + wordt de optie tunefs + genoemd. - * De MAC seeotheruids module + MAC module seeotheruids - + MAC zie andere UID's beleidsinstelling + + Modulenaam: mac_seeotheruids.ko + + Kernelinstelling: options + MAC_SEEOTHERUIDS + + Bootoptie: + mac_seeotheruids_load="YES" + + De module &man.mac.seeotheruids.4; imiteert de + sysctl tunables + security.bsd.see_other_uids en + security.bsd.see_other_gids en bereidt deze + uit. Voor deze optie hoeven geen labels ingesteld te worden + voor de instelling en hij werkt transparant met de andere + modules. + + Na het laden van de module kunnen de volgende + sysctl tunables gebruikt worden om de opties + in te stellen: + + + + security.mac.seeotheruids.enabled + schakelt de opties van de module in en gebruikt de + standaardinstellingen. Deze standaardinstellingen + ontzeggen gebruikt de mogelijkheid processen en sockets te + zien die in eigendom zijn van andere gebruikers. + + + + security.mac.seeotheruids.specificgid_enabled + staat toe dat een bepaalde groep niet onder dit beleid + valt. Om bepaalde groepen van dit beleid uit te sluiten, + kan de sysctl tunable + security.mac.seeotheruids.specificgid=XXX + gebruikt worden. In het bovenstaande voorbeeld dient + XXX vervangen te worden door het + numerieke ID van een groep die uitgesloten moet worden van + de beleidsinstelling. + + + + + security.mac.seeotheruids.primarygroup_enabled + wordt gebruikt om specifieke primaire groepen uit te + sluiten van dit beleid. Als deze tunable wordt gebruikt, + mag + security.mac.seeotheruids.specificgid_enabled + niet gebruikt worden. + + - * De MAC bsdextended module + MAC module bsdextended + + + MAC + + bestandssysteem firewall beleidsinstelling + + + Modulenaam: mac_bsdextended.ko + + Kernelinstelling: + options MAC_BSDEXTENDED + + Bootoptie: + mac_bsdextended_load="YES" + + De module &man.mac.bsdextended.4; dwingt de + bestandssysteemfirewall af. Het beleid van deze module biedt een + uitbreiding van het standaard rechtenmodel voor bestandssystemen, + waardoor een beheerder een firewallachtige set met regels kan + maken om bestanden, programma's en mappen in de + bestandssysteemhierarchie te beschermen. + + Het beleid kan gemaakt worden met het hulpprogramma + &man.ugidfw.8;, dat een syntaxis heeft die lijkt op die van + &man.ipfw.8;. Meer hulpprogramma's kunnen geschreven worden met + de functies in de bibliotheek &man.libugidfw.3;. + + Bij het werken met deze module dient bijzondere + voorzichtigheid in acht te worden genomen. Verkeerd gebruik kan + toegang tot bepaalde delen van het bestandssysteem + blokkeren. - * Voorbeelden + Voorbeelden - + Nadat de module &man.mac.bsdextended.4; is geladen, kan met + het volgende commando de huidige regels getoond worden: + + &prompt.root; ugidfw list +0 slots, 0 rules + + Zoals verwacht zijn er geen regels ingesteld. Dit betekent + dat alles nodig steeds volledig toegankelijk is. Om een regel + te maken die alle toegang voor alle gebruikers behalve + root ontzegt: + + &prompt.root; ugidfw add subject not uid root new object not uid root mode n + + + In versies voor &os; 5.3 bestond de parameter + add niet. In die gevallen dient in + plaats daarvan set gebruikt te worden + als in het onderstaande voorbeeld. + + + Dit is een slecht idee, omdat het voorkomt dat alle + gebruikers ook maar het meest eenvoudige commando kunnen + uitvoeren, zoals ls. Een betere lijst van + regels zou kunnen zijn: + + &prompt.root; ugidfw set 2 subject uid user1 object uid user2 mode n +&prompt.root; ugidfw set 3 subject uid user1 object gid user2 mode n + + Hiermee wordt alle toegang, inclusief het tonen van + mapinhoud, tot de thuismap van + user2 ontzegd + voor de gebruikersnaam user1. + + In plaats van user1, zou kunnen worden + opgegeven. Hierdoor worden dezelfde restricties als hierboven + actief voor alle gebruikers in plaats van voor slechts een + gebruiker. + + + De gebruiker root blijft onaangetast + door deze wijzigingen. + + + Met deze informatie zou een basisbegrip moeten zijn + ontstaan over hoe de module &man.mac.bsdextended.4; gebruikt + kan worden om een bestandssysteem te beschermen. Meer + informatie staat in de hulppagina's van &man.mac.bsdextended.4; + en &man.ugidfw.8;. - * De MAC ifoff module + MAC module ifoff - + MAC Interface Silencing beleidsinstelling + + Modulenaam: mac_ifoff.ko + + Kernelinstelling: + options MAC_IFOFF + + Bootoptie: mac_ifoff_load="YES" + + !!!The &man.mac.ifoff.4; module exists solely to disable network + interfaces on the fly and keep network interfaces from being + brought up during the initial system boot. It does not require + any labels to be set up on the system, nor does it have a + dependency on other MAC modules. + + Most of the control is done through the + sysctl tunables listed below. + + + + security.mac.ifoff.lo_enabled will + enable/disable all traffic on the loopback (&man.lo.4;) + interface. + + + + security.mac.ifoff.bpfrecv_enabled will + enable/disable all traffic on the Berkeley Packet Filter + interface (&man.bpf.4;) + + + + security.mac.ifoff.other_enabled will + enable/disable traffic on all other interfaces. + + + + One of the most common uses of &man.mac.ifoff.4; is network + monitoring in an environment where network traffic should not + be permitted during the boot sequence. Another suggested use + would be to write a script which uses + security/aide to automatically + block network traffic if it finds new or altered files in + protected directories. - * De MAC portacl module + MAC module portacl + + MAC poort toegangscontrolelijst beleidsinstelling + + Modulenaam: mac_portacl.ko + + Kernelinstelling: + MAC_PORTACL + + Bootoptie: mac_portacl_load="YES" + + The &man.mac.portacl.4; module is used to limit binding to + local TCP and UDP ports + using a variety of sysctl variables. In + essence &man.mac.portacl.4; makes it possible to allow + non-root users to bind to specified + privileged ports, i.e. ports fewer than 1024. + + Once loaded, this module will enable the + MAC policy on all sockets. The following + tunables are available: + + + + security.mac.portacl.enabled will + enable/disable the policy completely.Due to + a bug the security.mac.portacl.enabled + sysctl variable will not work on + &os; 5.2.1 or previous releases. + + + + security.mac.portacl.port_high will set + the highest port number that &man.mac.portacl.4; + will enable protection for. + + + + security.mac.portacl.suser_exempt will, + when set to a non-zero value, exempt the + root user from this policy. + + + + security.mac.portacl.rules will + specify the actual mac_portacl policy; see below. + + + + The actual mac_portacl policy, as + specified in the security.mac.portacl.rules + sysctl, is a text string of the form: + rule[,rule,...] with as many rules as + needed. Each rule is of the form: + idtype:id:protocol:port. The + idtype parameter can be + uid or gid and used to + interpret the id parameter as either a + user id or group id, respectively. The + protocol parameter is used to determine if + the rule should apply to TCP or + UDP by setting the parameter to + tcp or udp. The final + port parameter is the port number to allow + the specified user or group to bind to. + + + Since the ruleset is interpreted directly by the kernel + only numeric values can be used for the user ID, group ID, and + port parameters. I.e. user, group, and port service names + cannot be used. + + + By default, on &unix;-like systems, ports fewer than 1024 + can only be used by/bound to privileged processes, + i.e. those run as root. For + &man.mac.portacl.4; to allow non-privileged processes to bind + to ports below 1024 this standard &unix; restriction has to be + disabled. This can be accomplished by setting the &man.sysctl.8; + variables net.inet.ip.portrange.reservedlow and + net.inet.ip.portrange.reservedhigh + to zero. + + See the examples below or review the &man.mac.portacl.4; + manual page for further information. - * Voorbeelden + Voorbeelden - + The following examples should illuminate the above + discussion a little better: + + &prompt.root; sysctl security.mac.portacl.port_high=1023 +&prompt.root; sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0 + + First we set &man.mac.portacl.4; to cover the standard + privileged ports and disable the normal &unix; bind + restrictions. + + &prompt.root; sysctl security.mac.portacl.suser_exempt=1 + + The root user should not be crippled + by this policy, thus set the + security.mac.portacl.suser_exempt to a + non-zero value. The &man.mac.portacl.4; module + has now been set up to behave the same way &unix;-like systems + behave by default. + + &prompt.root; sysctl security.mac.portacl.rules=uid:80:tcp:80 + + Allow the user with UID 80 (normally + the www user) to bind to port 80. + This can be used to allow the www + user to run a web server without ever having + root privilege. + + &prompt.root; sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995 + + Permit the user with the UID of + 1001 to bind to the TCP ports 110 + (pop3) and 995 (pop3s). + This will permit this user to start a server that accepts + connections on ports 110 and 995. - * MAC beleid met labeling mogelijkheden + MAC beleidsinstellingen met labelmogelijkheden + + The next few sections will discuss MAC + policies which use labels. + + From here on this chapter will focus on the features + of &man.mac.biba.4;, &man.mac.lomac.4;, + &man.mac.partition.4;, and &man.mac.mls.4;. + + + This is an example configuration only and should not be + considered for a production implementation. The goal is + to document and show the syntax as well as examples for + implementation and testing. + + + For these policies to work correctly several + preparations must be made. - * Voorbereid op labeling beleid + Voorbereiding voor labelbeleidsinstellingen - + The following changes are required in the + login.conf file: + + + + An insecure class, or another + class of similar type, must be + added. The login class of insecure + is not required and just used as an example here; different + configurations may use another class name. + + + + The insecure class should have + the following settings and definitions. Several of these + can be altered but the line which defines the default + label is a requirement and must remain. + + insecure:\ + :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/low: + + The &man.cap.mkdb.1; command needs to be ran on + &man.login.conf.5; before any of the + users can be switched over to the new class. + + The root username should also be placed + into a login class; otherwise, almost every command + executed by root will require the + use of setpmac. + + + Rebuilding the login.conf + database may cause some errors later with the daemon + class. Simply uncommenting the daemon account and + rebuilding the database should alleviate these + issues. + + + + + Ensure that all partitions on which + MAC labeling will be implemented support + the . We must do this because + many of the examples here contain different labels for + testing purposes. Review the output from the + mount command as a precautionary + measure. + + + + Switch any users who will have the higher security + mechanisms enforced over to the new user class. A quick + run of &man.pw.8; or &man.vipw.8; should do the + trick. + + - * De MAC partitie module + MAC module partition + + MAC procespartitionering beleidsinstelling + + Modulenaam: mac_partition.ko + + Kernelinstelling: + options MAC_PARTITION + + Bootoptie: + mac_partition_load="YES" + + The &man.mac.partition.4; policy will drop processes into + specific partitions based on their + MAC label. Think of it as a special + type of &man.jail.8;, though that is hardly a worthy + comparison. + + This is one module that should be added to the + &man.loader.conf.5; file so that it loads + and enables the policy during the boot process. + + Most configuration for this policy is done using + the &man.setpmac.8; utility which will be explained below. + The following sysctl tunable is + available for this policy: + + + + security.mac.partition.enabled will + enable the enforcement of MAC process + partitions. + + + + When this policy is enabled, users will only be permitted + to see their processes but will not be permitted to work with + certain utilities. For instance, a user in the + insecure class above will not be permitted + to access the top command as well as many + other commands that must spawn a process. + + To set or drop utilities into a partition label, use the + setpmac utility: + + &prompt.root; setpmac partition/13 top + + This will add the top command to the + label set on users in the insecure class. + Note that all processes spawned by users + in the insecure class will stay in the + partition/13 label. - * Voorbeelden + Voorbeelden - + The following command will show you the partition label + and the process list: + + &prompt.root; ps Zax + + This next command will allow the viewing of another + user's process partition label and that user's currently + running processes: + + &prompt.root; ps -ZU trhodes + + + Users can see processes in root's + label unless the &man.mac.seeotheruids.4; policy is + loaded. + + + A really crafty implementation could have all of the + services disabled in /etc/rc.conf and + started by a script that starts them with the proper + labeling set. + + + The following policies support integer settings + in place of the three default labels offered. These options, + including their limitations, are further explained in + the module manual pages. + - * De MAC Multi-Level beveilings module + MAC module meerlagen beveiliging - + MAC Multi-Level Security Policy + + MAC meerlaagse beveiliging beleidsinstelling + + Modulenaam: mac_mls.ko + + Kernelinstelling: + options MAC_MLS + + Bootoptie: mac_mls_load="YES" + + The &man.mac.mls.4; policy controls access between subjects + and objects in the system by enforcing a strict information + flow policy. + + In MLS environments, a + clearance level is set in each subject or objects + label, along with compartments. Since these clearance or + sensibility levels can reach numbers greater than six thousand; + it would be a daunting task for any system administrator to + thoroughly configure each subject or object. Thankfully, three + instant labels are already included in this + policy. + + These labels are mls/low, + mls/equal and mls/high. + Since these labels are described in depth in the manual page, + they will only get a brief description here: + + + + The mls/low label contains a low + configuration which permits it to be dominated by all other + objects. Anything labeled with mls/low + will have a low clearance level and not be permitted to access + information of a higher level. In addition, this label will + prevent objects of a higher clearance level from writing or + passing information on to them. + + + + The mls/equal label should be + placed on objects considered to be exempt from the + policy. + + + + The mls/high label is the highest level + of clearance possible. Objects assigned this label will + hold dominance over all other objects in the system; however, + they will not permit the leaking of information to objects + of a lower class. + + + + MLS provides for: + + + + A hierarchical security level with a set of non + hierarchical categories; + + + + Fixed rules: no read up, no write down (a subject can + have read access to objects on its own level or below, but + not above. Similarly, a subject can have write access to + objects on its own level or above but not beneath.); + + + + Secrecy (preventing inappropriate disclosure + of data); + + + + Basis for the design of systems that concurrently handle + data at multiple sensitivity levels (without leaking + information between secret and confidential). + + + + The following sysctl tunables are + available for the configuration of special services and + interfaces: + + + + security.mac.mls.enabled is used to + enable/disable the MLS policy. + + + + security.mac.mls.ptys_equal will label + all &man.pty.4; devices as mls/equal during + creation. + + + + security.mac.mls.revocation_enabled is + used to revoke access to objects after their label changes + to a label of a lower grade. + + + + security.mac.mls.max_compartments is + used to set the maximum number of compartment levels with + objects; basically the maximum compartment number allowed + on a system. + + + + To manipulate the MLS labels, the + &man.setfmac.8; command has been provided. To assign a label + to an object, issue the following command: + + &prompt.root; setfmac mls/5 test + + To get the MLS label for the file + test issue the following command: + + &prompt.root; getfmac test + + This is a summary of the MLS + policy's features. Another approach is to create a master policy + file in /etc which + specifies the MLS policy information and to + feed that file into the setfmac command. This + method will be explained after all policies are covered. + + Observations: an object with lower clearance is unable to + observe higher clearance processes. A basic policy would be + to enforce mls/high on everything not to be + read, even if it needs to be written. Enforce + mls/low on everything not to be written, even + if it needs to be read. And finally enforce + mls/equal on the rest. All users marked + insecure should be set at + mls/low. - * De MAC Biba module + MAC module Biba - + MAC Biba Integrity Policy + + MAC Biba integriteit beleidsinstelling + + Modulenaam: mac_biba.ko + + Kernelinstelling: options MAC_BIBA + + Bootoptie: mac_biba_load="YES" + + The &man.mac.biba.4; module loads the MAC + Biba policy. This policy works much like that of the + MLS policy with the exception that the rules + for information flow + are slightly reversed. This is said to prevent the downward + flow of sensitive information whereas the MLS + policy prevents the upward flow of sensitive information; thus, + much of this section can apply to both policies. + + In Biba environments, an integrity label is + set on each subject or object. These labels are made up of + hierarchal grades, and non-hierarchal components. As an object's + or subject's grade ascends, so does its integrity. + + Supported labels are biba/low, + biba/equal, and biba/high; + as explained below: + + + + The biba/low label is considered the + lowest integrity an object or subject may have. Setting + this on objects or subjects will block their write access + to objects or subjects marked high. They still have read + access though. + + + + The biba/equal label should only be + placed on objects considered to be exempt from the + policy. + + + + The biba/high label will permit + writing to objects set at a lower label but not + permit reading that object. It is recommended that this + label be placed on objects that affect the integrity of + the entire system. + + + + Biba provides for: + + + + Hierarchical integrity level with a set of non + hierarchical integrity categories; + + + + Fixed rules: no write up, no read down (opposite of + MLS). A subject can have write access + to objects on its own level or below, but not above. Similarly, a + subject can have read access to objects on its own level + or above, but not below; + + + + Integrity (preventing inappropriate modification of + data); + + + + Integrity levels (instead of MLS sensitivity + levels). + + + + The following sysctl tunables can + be used to manipulate the Biba policy. + + + + security.mac.biba.enabled may be used + to enable/disable enforcement of the Biba policy on the + target machine. + + + + security.mac.biba.ptys_equal may be + used to disable the Biba policy on &man.pty.4; + devices. + + + + security.mac.biba.revocation_enabled + will force the revocation of access to objects if the label + is changed to dominate the subject. + + + + To access the Biba policy setting on system objects, use + the setfmac and getfmac + commands: + + &prompt.root; setfmac biba/low test +&prompt.root; getfmac test +test: biba/low + + Observations: a lower integrity subject is unable to write + to a higher integrity subject; a higher integrity subject cannot + observe or read a lower integrity object. - * De MAC LOMAC module + MAC module LOMAC + + MAC LOMAC + + Modulenaam: mac_lomac.ko + + Kernelinstelling: options MAC_LOMAC + Bootoptie: mac_lomac_load="YES" + + Unlike the MAC Biba policy, the + &man.mac.lomac.4; policy permits access to lower integrity + objects only after decreasing the integrity level to not disrupt + any integrity rules. + + The MAC version of the Low-watermark + integrity policy, not to be confused with the older &man.lomac.4; + implementation, works almost identically to Biba but with the + exception of using floating labels to support subject + demotion via an auxiliary grade compartment. This secondary + compartment takes the form of [auxgrade]. + When assigning a lomac policy with an auxiliary grade, it + should look a little bit like: lomac/10[2] + where the number two (2) is the auxiliary grade. + + The MAC LOMAC policy relies on the + ubiquitous labeling of all system objects with integrity labels, + permitting subjects to read from low integrity objects and then + downgrading the label on the subject to prevent future writes to + high integrity objects. This is the + [auxgrade] option discussed above, thus the + policy may provide for greater compatibility and require less + initial configuration than Biba. - * Voorbeelden + Voorbeelden - + Like the Biba and MLS policies; + the setfmac and setpmac + utilities may be used to place labels on system objects: + + &prompt.root; setfmac /usr/home/trhodes lomac/high[low] +&prompt.root; getfmac /usr/home/trhodes lomac/high[low] + + Notice the auxiliary grade here is low, + this is a feature provided only by the MAC + LOMAC policy. - * Implementatie van een beveiligde omgeving met MAC + Instellen van een veilige omgeving met MAC + + MAC voorbeeld implementatie + + The following demonstration will implement a secure + environment using various MAC modules + with properly configured policies. This is only a test and + should not be considered the complete answer to everyone's + security woes. Just implementing a policy and ignoring it + never works and could be disastrous in a production + environment. + + Before beginning this process, the + multilabel option must be set on each file + system as stated at the beginning of this chapter. Not doing + so will result in errors. - * Het maken van een onbeveiligde gebruikers klasse + <literal>insecure</literal> user class maken - + Begin the procedure by adding the following user class + to the /etc/login.conf file: + + insecure:\ + :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: + + And adding the following line to the default user + class: + + :label=mls/equal,biba/equal,partition/15: + + Once this is completed, the following command must be + issued to rebuild the database: + + &prompt.root; cap_mkdb /etc/login.conf - * Opstarten met de correcte modules + Opstarten met de juiste modules - + Add the following lines to + /boot/loader.conf so the required + modules will load during system initialization: + + mac_biba_load="YES" +mac_mls_load="YES" +mac_seeotheruids_load="YES" +mac_partition_load="YES" - * Alle gebruikers naar onveilig zetten + Alle gebruikers naar insecure zetten - + All user accounts that are not root + or system users will now require a login class. The login + class is required otherwise users will be refused access + to common commands such as &man.vi.1;. + The following sh script should do the + trick: + + &prompt.root; for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \ + /etc/passwd`; do pw usermod $x -L insecure; done; + + The cap_mkdb command will need to be + run on /etc/master.passwd after this + change. - * De configuratie afronden + Instellingen voltooien - + A contexts file should now be created; the following + example was taken from Robert Watson's example policy and + should be placed in + /etc/policy.contexts. + + # This is the default BIBA/MLS policy for this system. + +.* biba/high,mls/high +/sbin/dhclient biba/high(low),mls/high(low) +/dev(/.*)? biba/equal,mls/equal +# This is not an exhaustive list of all "privileged" devices. +/dev/mdctl biba/high,mls/high +/dev/pci biba/high,mls/high +/dev/k?mem biba/high,mls/high +/dev/io biba/high,mls/high +/dev/agp.* biba/high,mls/high +(/var)?/tmp(/.*)? biba/equal,mls/equal +/tmp/\.X11-unix biba/high(equal),mls/high(equal) +/tmp/\.X11-unix/.* biba/equal,mls/equal +/proc(/.*)? biba/equal,mls/equal +/mnt.* biba/low,mls/low +(/usr)?/home biba/high(low),mls/high(low) +(/usr)?/home/.* biba/low,mls/low +/var/mail(/.*)? biba/low,mls/low +/var/spool/mqueue(/.*)? biba/low,mls/low +(/mnt)?/cdrom(/.*)? biba/high,mls/high +(/usr)?/home/(ftp|samba)(/.*)? biba/high,mls/high +/var/log/sendmail\.st biba/low,mls/low +/var/run/utmp biba/equal,mls/equal +/var/log/(lastlog|wtmp) biba/equal,mls/equal + + This policy will enforce security by setting restrictions + on both the downward and upward flow of information with + regards to the directories and utilities listed on the + left. + + This can now be read into our system by issuing the + following command: + + &prompt.root; setfsmac -ef /etc/policy.contexts / +&prompt.root; setfsmac -ef /etc/policy.contexts /usr + + + The above file system layout may be different depending + on environment. + + + The /etc/mac.conf file requires + the following modifications in the main section: + + default_labels file ?biba,?mls +default_labels ifnet ?biba,?mls +default_labels process ?biba,?mls,?partition +default_labels socket ?biba,?mls - * De configuratie testen + Instellingen testen + + MAC instellingen testen + + Add a user with the adduser command + and place that user in the insecure + class for these tests. + + The examples below will show a mix of + root and regular user tests; use the + prompt to distinguish between the two. - * Standaard labeling testen + Basis labeltests - + &prompt.user; getpmac +biba/15(15-15),mls/15(15-15),partition/15 +&prompt.root; setpmac partition/15,mls/equal top + + + The top process will be killed before we start + another top process. + - * MAC seeotheruids testen + MAC seeotheruids tests - + &prompt.user; ps Zax +biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.03 -su (bash) +biba/15(15-15),mls/15(15-15),partition/15 1101 #C: R+ 0:00.01 ps Zax + + We should not be permitted to see any processes + owned by other users. - * MAC partitie test + MAC partition test - + Schakel de MAC beleidseenheid + seeotheruids tijdens de rest van de tests + uit: + + &prompt.root; sysctl security.mac.seeotheruids.enabled=0 +&prompt.user; ps Zax +LABEL PID TT STAT TIME COMMAND + biba/equal(low-high),mls/equal(low-high),partition/15 1122 #C: S+ 0:00.02 top + biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.05 -su (bash) + biba/15(15-15),mls/15(15-15),partition/15 1123 #C: R+ 0:00.01 ps Zax + + Alle gebruikers moet toegestaan worden ieder proces in + zijn partitie te zien. - * Testen van Biba en MLS labels + Biba en MLS labels testen - + &prompt.root; setpmac partition/15,mls/equal,biba/high\(high-high\) top +&prompt.user; ps Zax +LABEL PID TT STAT TIME COMMAND + biba/high(high-high),mls/equal(low-high),partition/15 1251 #C: S+ 0:00.02 top + biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.06 -su (bash) + biba/15(15-15),mls/15(15-15),partition/15 1157 #C: R+ 0:00.00 ps Zax + + De beleidseenheid Biba staat toe hoger gelabelde objecten + te lezen. + + &prompt.root; setpmac partition/15,mls/equal,biba/low top +&prompt.user; ps Zax +LABEL PID TT STAT TIME COMMAND + biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.07 -su (bash) + biba/15(15-15),mls/15(15-15),partition/15 1226 #C: R+ 0:00.01 ps Zax + + De beleidseenheid Biba staat niet toe dat lager gelabelde + objecten worden gelezen. Dit staat MLS + wel toe. + + &prompt.user; ifconfig bge0 | grep maclabel +maclabel biba/low(low-low),mls/low(low-low) +&prompt.user; ping -c 1 192.0.34.166 +PING 192.0.34.166 (192.0.34.166): 56 data bytes +ping: sendto: Permission denied + + Gebruikers kunnen example.com en willekeurig welk + ander domein niet pingen. + + Voer het volgende commando uit om deze fout te + voorkomen: + + &prompt.root; sysctl security.mac.biba.trust_all_interfaces=1 + + Hiermee wordt het standaard interfacelabel insteld in de + modus insecure, zodat het standaard Biba beleidslabel niet + wordt afgedwongen. + + &prompt.root; ifconfig bge0 maclabel biba/equal\(low-high\),mls/equal\(low-high\) +&prompt.user; ping -c 1 192.0.34.166 +PING 192.0.34.166 (192.0.34.166): 56 data bytes +64 bytes from 192.0.34.166: icmp_seq=0 ttl=50 time=204.455 ms +--- 192.0.34.166 ping statistics --- +1 packets transmitted, 1 packets received, 0% packet loss +round-trip min/avg/max/stddev = 204.455/204.455/204.455/0.000 ms + + Door een meer correct label in te stellen kan + ping wel gebruikt worden. + + Maak nu een aantal nieuwe bestanden aan voor wat lees- en + schrijftesten: + + &prompt.root; touch test1 test2 test3 test4 test5 +&prompt.root; getfmac test1 +test1: biba/equal,mls/equal +&prompt.root; setfmac biba/low test1 test2; setfmac biba/high test4 test5; \ + setfmac mls/low test1 test3; setfmac mls/high test2 test4 +&prompt.root; setfmac mls/equal,biba/equal test3 && getfmac test? +test1: biba/low,mls/low +test2: biba/low,mls/high +test3: biba/equal,mls/equal +test4: biba/high,mls/high +test5: biba/high,mls/equal +&prompt.root; chown testuser:testuser test? + + Nu moet testuser eigenaar zijn van + alle bestanden. Nu de leestesten: + + &prompt.user; ls +test1 test2 test3 test4 test5 +&prompt.user; ls test? +ls: test1: Permission denied +ls: test2: Permission denied +ls: test4: Permission denied +test3 test5 + + Paren observeren hoort niet toegestaan te worden, + bijvoorbeeld: + (biba/low,mls/low), + (biba/low,mls/high) en + (biba/high,mls/high). Natuurlijk is + leestoegang ook niet mogelijk. Dan nu de + schrijftesten: + + &prompt.user; for i in `echo test*`; do echo 1 > $i; done +-su: test1: Permission denied +-su: test4: Permission denied +-su: test5: Permission denied + + Net als met de leestesten, hoort schrijftoegang ook niet + toegestaan te worden om paren te schrijven, bijvoorbeeld: + (biba/low,mls/high) en + (biba/equal,mls/equal). + + &prompt.user; cat test? +cat: test1: Permission denied +cat: test2: Permission denied +1 +cat: test4: Permission denied + + En nu als root: + + &prompt.root; cat test2 +1 - * Een ander voorbeeld: Mac gebruiken om een webserver te - beperken + Nog een voorbeeld: MAC gebruiken om een webserver in te + perken - + Er wordt een aparte plaats toegewezen voor de webgegevens + waar gebruikers bij moeten kunnen. Dit geeft + biba/high processen toegang tot de + webgegevens. + + Begin met het maken van een map om de webgegevens in op te + slaan: + + &prompt.root; mkdir /usr/home/cvs + + Initialiseer met cvs: + + &prompt.root; cvs -d /usr/home/cvs init + + Het eerste doel is om de beleidseenheid + biba in te schakelen en dus moet + mac_biba_enable="YES" opgenomen worden in + /boot/loader.conf. Er wordt aangenomen dat + ondersteuning voor MAC in de kernel is + ingeschakeld. + + Vanaf dit moment hoort alles in een systeem standaard + ingesteld te staan op biba/high. + + In het bestand login.conf dient onder + de standaard gebruikersklasse de volgende wijziging gemaakt te + worden: + + :ignoretime@:\ +:umask=022:\ +:label=biba/high: + + Iedere gebruiker moet nu in de standaardklasse geplaatst + worden en met een commando als het volgende is dat zo + gedaan: + + &prompt.root; for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \ +/etc/passwd`; do pw usermod $x -L default; done; + + Maak nu een andere klasse, web, een kopie van de + standaardklasse, met een labelinstelling + biba/low. + + Maak een gebruikers die gebruikt wordt om te werken met de + centrale webgegevens die staan opgeslagen in een + cvs repository. Deze gebruiker moet + in de nieuwe aanmeldklasse geplaats worden, + web. + + Omdat overal de standaard biba/high is, + geldt dat ook voor de repository. De webgegevens moeten ook + gelijk zijn zodat gebruikers er lees- en schrijfrechten op + hebben. Maar omdat de webserver gegevens serveert waar + biba/high bij moeten kunnen, moeten de + gegevens in hun geheel gedowngrade worden. + + Hiervoor zijn de perfecte hulpmiddelen &man.sh.1; en + &man.cron.8; als in &os; aanwezig. Het volgende script doet + alles wat nodig is: + + PATH=/bin:/usr/bin:/usr/local/bin; export PATH; +CVSROOT=/home/repo; export CVSROOT; +cd /home/web; +cvs -qR checkout -P htdocs; +exit; + + + In veel gevallen moeten de cvs Id tags + in de databestanden van de website gezet worden. + + + Dit script kan nu in de thuismap van de gebruiker + web geplaatst worden waarna de volgende + regel aan de &man.crontab.1; toegevoegd kan worden: + + # Check de webgegevens iedere twaalf uur uit als biba/low: +0 */12 * * * web /home/web/checkout.sh + + Hiermee wordt de HTML broncode iedere + twaalf uur uitgecheckt. + + De standaard opstartmethode voor de webserver moet ook + aangepast worden om het proces te starten als + biba/low. Dit kan met de volgende + verandering in het script + /usr/local/etc/rc.d/apache.sh: + + command="setpmac biba/low /usr/local/sbin/httpd" + + De instellingen voor Apache moeten + aangepast worden om met het biba/low beleid te + werken. In dit geval moet de software ingesteld worden om + logboekmeldingen weg te schrijven naar een map die ingesteld + staat op biba/low omdat er anders + foutmeldingen van het type access denied + ontstaan. + + + Voor dit voorbeeld is het noodzakelijk dat het directief + docroot wordt ingesteld voor + /home/web/htdocs. Anders faalt + Apache als het probeert de map te + vinden waaruit documenten geserveerd moeten worden. + + + Er moeten ook nog andere instellingen gewijzigd worden, + waaronder PID-bestand, + Scoreboardfile, + DocumentRoot, plaatsen voor logboekbestanden + en andere variabelen waarvoor schrijftoegang nodig is. Als + biba wordt gebruikt, wordt iedere vorm van + schrijftoegang aan de server ontzegd waar + geen biba/low is + ingesteld. + + - * MAC framework problemen oplossen + Problemen oplossen met het MAC framework + + MAC problemen oplossen + + Tijdens de ontwikkeling hebben een aantal gebruikers + problemen aangegeven met normale instellingen. Hieronder worden + een aantal van die problemen beschreven: - * De <option>multilabel</option> optie kan niet ingesteld - worden voor <filename>/</filename> + De optie <option>multilabel</option> kan niet ingeschakeld + worden op <filename>/</filename> - + De vlag blijft niet + ingeschakeld op de rootpartitie + (/)! + + Het lijkt er inderdaad op dat een paar procent van de + gebruikers dit probleem heeft. Nadere analyse van het probleem + doet vermoeden dat deze zogenaamde bug het + resultaat is van ofwel injuiste documentatie ofwel verkeerde + interpretatie van de documentatie. Hoe het probleem ook is + ontstaan, met de volgende stappen is het te verhelpen: + + + + Wijzig /etc/fstab en stel de + rootpartitie in op voor + alleen-lezen. + + + + Herstart in single-user modus. + + + + Draai tunefs op /. + + + + Herstart in normale modus. + + + + Draai mount + / en wijzig terug in + in /etc/fstab en + start het systeem opnieuw. + + + + Controleer de uitvoer van mount om + zeker te zijn dat juist is + ingesteld op het root bestandssysteem. + + - * &xfree86; kan niet gestart worden na - <acronym>MAC</acronym> + Kan geen X11 server starten na + <acronym>MAC</acronym> - + Na het instellen van een beveiligde omgeving met + MAC start X niet meer! + + Dit kan komen door de MAC beleidseenheid + partition of door een verkeerde labeling van + een van de MAC labeling beleidseenheden. + Probeer als volgt te debuggen: + + + + Controleer de foutmelding. Als de gebruiker in de + klasse insecure zit, kan de + beleidseenheid partition het probleem + zijn. Zet de klasse voor de gebruiker terug naar de + default klasse en herbouw de database + met het commando cap_mkdb command. Ga + naar stap twee als hiermee het probleem niet is + opgelost. + + + + Controleer de labelbeleidseenheden nog een keer. Stel + zeker dat het beleid voor de bewuste gebruiker, de X11 + applicati en de onderdelen van /dev juist zijn + ingesteld. + + + + Als geen van beide methodes het probleem oplossen, + stuur dan de foutmelding en een beschrijving van de + omgeving naar de TrustedBSD discussielijsten van de TrustedBSD + website of naar de &a.questions; mailinglijst. + + + + + + Error: &man..secure.path.3; cannot stat + <filename>.login_conf</filename> + + Bij het wisselen van root naar een + andere gebruiker in het systeem, verschijnt de foutmelding + _secure_path: unable to state .login_conf. + + Deze melding komt meestal voor als de gebruiker een hogere + labelinstelling heeft dan de gebruiker waarnaar wordt + gewisseld. Als bijvoorbeeld gebruiker joe + een standaardlabel , dan kan gebruiker + root, die een label + de thuismap van + joe niet zien. Dit gebeurt zonder + rekening te houden met de mogelijkheid dat + root met su de + indentiteit van joe heeft aangenomen. In + dit scenario staat het integriteitsmodel van Biba niet toe dat + root objecten kan zien met van een lager + integriteitsniveau. + + + + De gebruikersnaam <username>root</username> is + stuk! + + In normale, of zelfs in single user modus, wordt + root niet herkend. Het commando + whoami geeft 0 (nul) terug en + su heeft als resultaat who are + you?. Wat is er aan de hand? + + Dit kan gebeuren als een labelbeleid is uitgeschakeld, + ofwel door &man.sysctl.8; of doordat de beleidsmodule niet meer + is geladen. Als de beleidseenheid (tijdelijk) is uitgeschakeld + dan moet de aanmeldmogelijkheden database opnieuw worden + ingesteld, waarbij de optie wordt + verwijderd. Er dient voor te worden zorggedragen dat het + bestand login.conf wordt ontdaan van alle + opties met , waarna de database opnieuw + gebouwd kan worden met cap_mkdb. + + Dit kan ook gebeuren als een beleid toegang verhinderd tot + het master.passwd bestand of database. + Meestal wordt dit veroorzaakt door een beheerder die het bestand + veranderd onder een label, welke conflicteert met het globale + beleid dat gebruikt wordt op het systeem. In deze gevallen + wordt de gebruikers informatie gelezen door het systeem en wordt + de toegang geblokkeerd omdat het bestand een nieuw label erft. + Zet het beleid uit doormiddel van &man.sysctl.8; en alles zou + weer terug naar normaal moeten gaan.