Index: head/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml
===================================================================
--- head/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml (revision 40820)
+++ head/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.xml (revision 40821)
@@ -1,1677 +1,1677 @@
JimMockBijgewerkt en opnieuw gestructureerd door JakeHambyOorspronkelijk bijgedragen door RenéLadanVertaald door De &os;-kernel instellenSamenvattingkerneleen aangepaste kernel bouwenDe kernel is de kern van het &os;-besturingssysteem en is
verantwoordelijk voor het geheugenbeheer, het opleggen van
beveiligingsregels, het aansturen van het netwerk, de toegang tot
schijven en nog veel meer. Hoewel steeds meer in &os; dynamisch
instelbaar wordt, is het af en toe nodig om de kernel opnieuw in
te stellen en te compileren.Na het lezen van dit hoofdstuk weet de lezer:Waarom het nodig is om een aangepaste kernel te bouwen;Hoe een nieuw kernelinstellingenbestand te schrijven of
een bestaand kernelinstellingenbestand aan te passen;Hoe het kernelinstellingenbestand te gebruiken om een
nieuwe kernel aan te maken en te bouwen;Hoe een nieuwe kernel te installeren;Hoe problemen op te lossen als er iets verkeerd gaat.Alle opdrachten die in dit hoofdstuk als voorbeeld zijn
gegeven moeten als root uitgevoerd worden om
te slagen.Redenen om een aangepaste kernel te bouwenTraditioneel heeft &os; zoals dat heet een
monolitische kernel gehad. Dit betekent dat de
kernel één groot programma was, een vaste lijst
van apparaten ondersteunde en als het gewenst was om het gedrag
van de kernel te veranderen, moest er een nieuwe kernel
gecompileerd worden en moest daarna de computer opnieuw gestart
worden met de nieuwe kernel.Vandaag de dag beweegt &os; zich snel naar een model waar
veel van de functionaliteit van de kernel in modules zit die
dynamisch in en uit de kernel kunnen worden geladen, naargelang
dat noodzakelijk is. Dit stelt de kernel in staat om zich aan
nieuwe hardware aan te passen die plotseling beschikbaar komt
(zoals PCMCIA-kaarten in een laptop) of om nieuwe functionaliteit
in zich op te nemen die niet noodzakelijk was toen de kernel
oorspronkelijk werd gecompileerd. Dit staat bekend als een
modulaire kernel.Desondanks is het nog steeds nodig om enkele dingen van de
kernel statisch in te stellen. In sommige gevallen komt dit
doordat de functionaliteit zo diep geworteld zit in de kernel dat
het niet dynamisch laadbaar gemaakt kan worden. In andere
gevallen kan het simpelweg komen doordat nog niemand de tijd
heeft genomen om een dynamisch laadbare kernelmodule voor die
functionaliteit te schrijven.Het bouwen van een aangepaste kernel is een van de meest
belangrijke beproevingen die geavanceerde BSD-gebruikers moet
doorstaan. Hoewel dit proces veel tijd in beslag neemt, levert
het veel voordelen op voor een &os; systeem. In tegenstelling
tot de GENERIC-kernel, die vele typen
hardware moet ondersteunen, ondersteunt een aangepaste kernel
alleen de hardware van de computer waar hij voor gemaakt is. Dit
biedt een aantal voordelen, zoals:Een snellere opstarttijd. Aangezien de kernel alleen de
hardware zoekt die zich in het systeem bevindt, kan de tijd
die het systeem nodig heeft om op te starten aanzienlijk
korter worden;Minder geheugengebruik. Een aangepaste kernel gebruikt
vaak minder geheugen dan de
GENERIC-kernel door ongebruikte mogelijkheden
en apparaatstuurprogramma's weg te laten. Dit is van belang
aangezien de kernelcode altijd in het fysieke geheugen aanwezig
blijft, waardoor dit geheugen niet door applicaties gebruikt kan
worden. Om deze reden is een aangepaste kernel geknipt
voor een systeem met een kleine hoeveelheid RAM;Aanvullende hardware-ondersteuning. Een aangepaste
kernel kan ingebouwde ondersteuning bieden voor apparaten die
zich niet in de GENERIC-kernel bevinden,
zoals geluidskaarten.TomRhodesGeschreven door De systeemhardware vindenAlvorens in de kernelconfiguratie te duiken, zou het
verstandig zijn om een inventarisatie van de hardware van de
machine te maken. In het geval dat &os; niet het primaire
besturingssysteem is, kan de inventarisatielijst eenvoudig worden
gemaakt door de configuratie van het huidige besturingssysteem te
bekijken. De Device Manager van
µsoft; bijvoorbeeld bevat normaliter belangrijke informatie
over geïnstalleerde apparaten. De Device
Manager bevindt zich in het controlepaneel.Sommige versies van µsoft.windows; hebben een icoon
System dat een scherm weer zal geven
waarmee Device Manager kan worden
benaderd.Als er geen ander besturingssysteem op de machine staat, moet
de beheerder deze informatie handmatig vinden. Eén manier
is om de gereedschappen &man.dmesg.8; en &man.man.1; te gebruiken.
De meeste apparaatstuurprogramma's van &os; hebben een
handleiding, die de ondersteunde hardware noemen, en tijdens het
opstarten wordt gevonden hardware getoond. De volgende regels
geven bijvoorbeeld aan dat het stuurprogramma voor
psm een muis heeft gevonden:psm: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0Dit stuurprogramma zal in het eigen kernelinstellingenbestand
opgenomen moeten worden of worden geladen met &man.loader.conf.5;.Soms geven de gegevens van dmesg alleen de
systeemboodschappen weer in plaats van de uitvoer van de
opstartonderzoeken. In deze gevallen kan de uitvoer worden
verkregen door het bestand
/var/run/dmesg.boot te bekijken.Een andere methode om hardware te vinden is door
&man.pciconf.8; te gebruiken welke meer gedetailleerde uitvoer
geeft. Bijvoorbeeld:ath0@pci0:3:0:0: class=0x20000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212 Atheros AR5212 802.11abg wireless'
class = network
subclass = ethernetDit beetje uitvoer, verkregen met
pciconf geeft aan dat het
stuurprogramma ath een draadloos
Ethernetapparaat heeft gevonden. Het gebruik van
man ath zal de
handleiding voor &man.ath.4; teruggeven.Wanneer de vlag aan &man.man.1; wordt
gegeven kan deze nuttige informatie geven. Met het bovenstaande
kan dit gedaan worden:&prompt.root; man -k Atherosom een lijst handleidingen te krijgen die dat ene woord
bevatten:ath(4) - Atheros IEEE 802.11 wireless network driver
ath_hal(4) - Atheros Hardware Access Layer (HAL)Gewapend met een inventarisatielijst van de hardware zou het
proces van het bouwen van een eigen kernel minder angstaanjagend
moeten lijken.Kernel stuurprogramma's, subsystemen, en moduleskernelstuurprogramma's / modules / subsystemenBekijk, voordat er een eigen kernel gebouwd wordt, de redenen
om dit te doen. Als er de noodzaak is voor specifieke
hardwareondersteuning, kan dit reeds beschikbaar zijn als een
module.Kernelmodules staan in de map /boot/kernel en kunnen dynamisch in
de draaiende kernel worden geladen met &man.kldload.8;. De
meeste, als niet alle, kernelstuurprogramma's hebben een
specifieke module en een handleiding. De laatste sectie merkte
bijvoorbeeld het draadloze Ethernetstuurprogramma
ath op. Van dit stuurprogramma staat de
volgende informatie in de handleiding:Plaats de volgende regel in &man.loader.conf.5; om
het stuurprogramma tijdens het opstarten als een module te laden:
if_ath_load="YES"Zoals aangegeven, zal het toevoegen van de regel
if_ath_load="YES" aan
/boot/loader.conf deze module dynamisch
laden tijdens het opstarten.In sommige gevallen is er geen geassocieerde module. Dit
geldt het vaakst voor bepaalde subsystemen en zeer belangrijke
stuurprogramma's, het fast file system (FFS)
bijvoorbeeld is een verplichte optie in de kernel, net zoals
netwerkondersteuning (INET). Helaas is de enige manier om te zien
of een stuurprogramma nodig is naar de module zelf zoeken.Het is eenvoudig om ondersteuning voor een
apparaat of optie te verwijderen en met een kapotte kernel
opgezadeld te zitten. Als bijvoorbeeld het stuurprogramma
&man.ata.4; uit het kernelinstellingenbestand gehaald wordt,
zal een systeem dat ATA
schijfstuurprogramma's gebruikt niet opstarten zonder de module
aan loader.conf toe te voegen. Kijk bij
twijfel of de module aanwezig is en laat ondersteuning dan
gewoon in de kernel.Bouwen en installeren van een aangepaste kernelkernelbouwen / installerenHet is noodzakelijk om de volledige broncode van &os;
geïnstalleerd te hebben om de kernel te bouwen.Eerst wordt er een overzicht gegeven van de mappen waarin de
kernel gebouwd wordt. Alle genoemde mappen staan onder de map
/usr/src/sys, die ook toegankelijk is via
de padnaam /sys. Er zijn hier een aantal
mappen aanwezig die de verschillende delen van de kernel
representeren, maar de meest belangrijke hiervan zijn
arch/conf, waarin
de kernelinstellingen bewerkt worden en
compile, waarin de aangepaste kernel gebouwd
wordt. arch representeert hier
één van i386,
amd64,
ia64, powerpc,
sparc64 of pc98 (een
alternatieve ontwikkelingstak van PC-hardware die populair is in
Japan). Alles binnen de map van een bepaalde architectuur is er
alleen voor die architectuur. De rest van de code is
machine-onafhankelijk en hetzelfde op alle platformen waarnaar
&os; eventueel overgezet kan worden. De indeling van de
mapstructuur is logisch: alle ondersteunde apparaten,
bestandssystemen en opties staan in een eigen submap.Dit voorbeelden in dit hoofdstuk veronderstellen dat de
i386-architectuur gebruikt wordt. Als dit voor de lezer anders is,
moeten de bijhorende aanpassingen aan de padnamen worden gemaakt.Als de map /usr/src/niet aanwezig is op een systeem (of als het leeg
is), dan is de broncode niet geïnstalleerd. De eenvoudigste
manier om de volledige broncode te installeren is &man.csup.1; te
- gebruiken zoals beschreven in . U dient tevens
- een symbolische link naar /usr/src/sys/ aan te
- maken:
+ gebruiken zoals beschreven in . U dient
+ tevens een symbolische link naar /usr/src/sys/
+ aan te maken:
&prompt.root; ln -s /usr/src/sys /sysDaarna kan vanuit de map
arch/conf het
instellingenbestand GENERIC naar de naam
voor de aangepaste kernel gekopieerd worden. Bijvoorbeeld:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MIJNKERNELTraditioneel bestaat deze naam geheel uit hoofdletters en als
er meerdere &os;-machines worden beheerd met verschillende
hardware is het een goed idee om het te vernoemen naar de
hostnaam van de machine. Omwille van dit voorbeeld wordt het
MIJNKERNEL
genoemd.Het kernelinstellingenbestand direct onder
/usr/src opslaan kan een slecht idee zijn.
In geval van problemen kan het verleidelijk zijn om
/usr/src te verwijderen en opnieuw te
beginnen. Nadat dit gedaan is kost het vaak maar enkele
seconden om te realiseren dat het instellingenbestand voor de
aangepaste kernel verwijderd is. Ook moet
GENERIC niet gewijzigd worden, omdat het
tijdens de volgende keer dat de broncodeboom bijgewerkt
wordt, overschreven kan worden waarbij de wijzigingen
in de kernelinstellingen verloren gaan.Het kan gewenst zijn om het kernelinstellingenbestand
ergens anders op te slaan en een symbolische link naar het
bestand in de map
i386 aan te
maken:&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; mkdir /root/kernels
&prompt.root; cp GENERIC /root/kernels/MIJNKERNEL
&prompt.root; ln -s /root/kernels/MIJNKERNELNu moet
MIJNKERNEL met de
favoriete tekstverwerker bewerkt worden. Voor beginners is
waarschijnlijk alleen de tekstverwerker
vi beschikbaar, die te ingewikkeld is
om hier te beschrijven, maar goed is beschreven in vele boeken in
de bibliografie. &os; biedt
ook de eenvoudigere tekstverwerker ee,
die voor een beginner de keuze bij uitstek is. De
commentaarregels in het begin kunnen gewijzigd worden om de
persoonlijke instellingen of de veranderingen die gemaakt zijn ten
opzichte van GENERIC weer te geven.&sunos;Voor degenen die een kernel op &sunos; of een andere BSD
hebben gebouwd zal veel van dit bestand bekend voorkomen.
Echter, voor degenen die van een ander besturingssysteem zoals
DOS komen, kan het instellingenbestand
GENERIC overdonderend overkomen, dus moeten
de beschrijvingen in de sectie Het Instellingenbestand
zorgvuldig opgevolgd worden.Als de broncodeboom
gesynchroniseerd is met de nieuwste broncode van het
&os;-project, moet altijd
/usr/src/UPDATING gelezen worden voordat
enige bijwerkstappen worden genomen. Dit bestand beschrijft
alle belangrijke zaken en gebieden binnen de broncodestructuur
die speciale aandacht nodig hebben.
/usr/src/UPDATING komt altijd overeen met
de lokale versie van de &os;-broncode en is daarom meer
bijgewerkt met nieuwe informatie dan dit handboek.Nu moet de broncode voor de kernel gecompileerd worden.Een kernel bouwenHet is noodzakelijk om de volledige broncode van &os;
geïnstalleerd te hebben om te kernel te bouwen.Ga naar de map /usr/src:&prompt.root; cd /usr/srcCompileer de kernel:&prompt.root; make buildkernel KERNCONF=MIJNKERNELInstalleer de nieuwe kernel:&prompt.user; make installkernel KERNCONF=MIJNKERNELBij het bouwen van een aangepaste kernel worden standaard
alle kernelmodules ook herbouwd. Om de
kernel sneller bij te werken en alleen de aangepaste modules
te bouwen kan /etc/make.conf aangepast
worden voordat de kernel wordt gebouwd:MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsMet deze variabele wordt een lijst van te bouwen modules
ingesteld die gebouwd moeten worden in plaats van allen.WITHOUT_MODULES = linux acpi sound ntfsDeze variabele stelt een lijst in van modules op het topniveau
die moeten worden uitgesloten van het bouwproces. Andere variabelen
die mogelijk ook nuttig zijn in het proces van het bouwen van een
kernel staan beschreven in de handleiding voor
&man.make.conf.5;./boot/kernel.oldDe nieuwe kernel wordt naar de map /boot/kernel gekopieerd als
/boot/kernel/kernel en de oude kernel wordt
verplaatst naar /boot/kernel.old/kernel. Nu
moet het systeem afgesloten worden en opnieuw worden opgestart om
gebruik te maken van de nieuwe kernel. Er zijn wat instructies
voor problemen
oplossen aan het einde van dit hoofdstuk, die erg nuttig
kunnen zijn als er iets misgaat. Vergeet niet om het gedeelte te
lezen waarin staat uitgelegd hoe te herstellen als de nieuwe
kernel niet
opstart.Andere bestanden die te maken hebben met het opstartproces,
zoals de boot &man.loader.8; en instellingen worden opgeslagen
in /boot. Modules van derde partijen of
eigen modules kunnen in /boot/kernel opgeslagen worden,
alhoewel gebruikers erop bedacht moeten zijn dat het erg
belangrijk is dat de modules synchroon worden gehouden met de
gecompileerde kernel. Modules die niet bedoeld zijn om met de
gecompileerde kernel te draaien kunnen voor instabiliteit of
onjuistheden zorgen.JoelDahlBijgewerkt door Het instellingenbestandkernelNOTESNOTESkernelinstellingenbestandHet algemene formaat van een instellingenbestand is vrij
eenvoudig. Elke regel bevat een sleutelwoord en
één of meer argumenten. Omwille van de eenvoud
bevatten de meeste regels maar één argument. Alles
wat na een # komt, wordt als commentaar
beschouwd en genegeerd. De volgende gedeelten beschrijven elk
sleutelwoord, in het algemeen in dezelfde volgorde als
GENERIC, alhoewel sommige samenhangende
sleutelwoorden gegroepeerd zijn in een enkel gedeelte (zoals
Netwerken) zelfs al staan ze verspreid in het bestand
GENERIC.
Een uitputtende lijst van architectuurafhankelijke opties en
apparaten staat in het bestand NOTES, dat in
dezelfde map staat als het bestand GENERIC.
Architectuuronafhankelijke opties staan in
/usr/src/sys/conf/NOTES.Een nieuwe directief include is beschikbaar
om te gebruiken in
instellingenbestanden. Hiermee kan een ander instellingenbestand logisch
in het huidige worden opgenomen, waardoor het eenvoudig wordt om kleine
veranderingen relatief aan een bestaand bestand te onderhouden. Als u
bijvoorbeeld een GENERIC kernel nodig heeft met
slechts een klein aantal aanvullende opties of stuurprogramma's, hoeft u
hiermee slechts een delta ten opzichte van GENERIC te onderhouden:include GENERIC
ident MIJNKERNEL
options IPFIREWALL
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERTVeel beheerders zullen aanzienlijke voordelen in dit model zien
vergeleken met de vroegere gewoonte om instellingenbestanden vanuit het
niets te schrijven: het lokale instellingenbestand zal alleen lokale
verschillen uitdrukken ten opzichte van een GENERIC
kernel en wanneer upgrades worden uitgevoerd zullen nieuwe mogelijkheden
die aan GENERIC zijn toegevoegd ook aan de lokale
kernel worden toegevoegd tenzij dit expliciet verhinderd wordt met
nooptions of nodevice. De rest van
dit hoofdstuk behandelt de inhoud van een typisch instellingenbestand en
de verschillende rollen die opties en apparaten spelen.Draai het volgende commando als root om
een bestand te bouwen dat alle beschikbare opties bevat, wat
normaliter voor testdoeleinden gedaan wordt:&prompt.root; cd /usr/src/sys/i386/conf && make LINTkernelinstellingenbestandHet volgende is een voorbeeld van het
kernelinstellingenbestand GENERIC met
aanvullend commentaar omwille van de helderheid. Dit voorbeeld
is redelijk gelijk aan de versie in
/usr/src/sys/i386/conf/GENERIC.kerneloptiesmachinemachine i386Dit is de architectuur van de machine. Het moet
één van amd64,
i386,
ia64, pc98,
powerpc of sparc64
zijn.kerneloptiescpucpu I486_CPU
cpu I586_CPU
cpu I686_CPUBovenstaande optie geeft het type CPU aan dat in een systeem
zit. De CPU-regel kan meerdere keren voorkomen (als bijvoorbeeld
onbekend is of I586_CPU of
I686_CPU gebruikt moet worden), maar voor een
aangepaste kernel is het beter om alleen de aanwezige CPU aan te
geven. Als er twijfel bestaat over het type CPU, kan het bestand
/var/run/dmesg.boot worden bekeken voor de
opstartberichten.kerneloptiesidentident GENERICDit is de identificatie van de kernel. Dit moet veranderd
worden in de naam van de kernel, dus
MIJNKERNEL als de
instructies van de voorgaande voorbeelden gevolgd zijn. De waarde
in de string ident wordt afgebeeld wanneer de
kernel opstart, dus is het handig om de nieuwe kernel een andere
naam te geven als deze apart moet worden gehouden van de
gebruikelijke kernel (als er bijvoorbeeld een experimentele kernel
gebouwd wordt).#Om apparaatbindingen statisch in te compileren in plaats van via /boot/device.hints.
#hints "GENERIC.hints" # Standaardlocatie voor devices.&man.device.hints.5; wordt gebruikt om opties van de
programma's die de apparaten aansturen in te stellen. De
standaardplaats die &man.loader.8; controleert tijdens het
opstarten is /boot/device.hints. Met de
optie hints is het mogelijk om deze
aanwijzingen statisch in de kernel te compileren, waardoor er
geen noodzaak is om een bestand device.hints
in /boot aan te maken.makeoptions DEBUG=-g # Bouw kernel met gdb(1) debugsymbolen.Het normale bouwproces van &os; voegt debuginformatie toe
wanneer de kernel met de optie gebouwd wordt,
wat debuginformatie doorgeeft aan &man.gcc.1;.options SCHED_ULE # ULE taakplannerDe standaard taakplanner voor &os;. Laat dit staan.options PREEMPTION # Zet kernelthreadpreëmptie aanSta toe dat threads in de kernel worden gepreëmpt door
threads met een hogere prioriteit. Het help bij interactiviteit
en staat toe dat interruptthreads eerder draaien in plaats van te
moeten wachten.options INET # internetwerkenNetwerkondersteuning. Laat dit aanstaan, zelfs als een
verbinding met een netwerk niet gepland is. De meeste
programma's hebben tenminste een teruglusnetwerk nodig (dat wil
zeggen het maken van netwerkverbindingen binnen de PC), dus dit
is eigenlijk verplicht.options INET6 # IPv6 communicatieprotocollenDit zet de IPv6-communicatieprotocollen aan.options FFS # Berkeley Fast BestandssysteemDit is het basisbestandssysteem voor de harde schijf. Laat
dit erin staan als er vanaf de harde schijf wordt
opgestart.options SOFTUPDATES # Schakel FFS Softupdates ondersteuning inDeze optie zet softupdates in de kernel aan en helpt om de
schijftoegang voor schrijven te verhogen. Zelfs als deze
functionaliteit door de kernel geleverd wordt, moet die voor
specifieke schijven worden aangezet. Bekijk de uitvoer van
&man.mount.8; om te zien of softupdates aanstaat voor de
systeemschijven. Als de optie soft-updates
niet zichtbaar is, dient deze geactiveerd te worden met behulp
van &man.tunefs.8; voor bestaande bestandssystemen of
&man.newfs.8; voor nieuwe bestandssystemen.options UFS_ACL # Ondersteuning voor toegangscontrolelijstenMet deze optie wordt de ondersteuning voor
toegangscontrolelijsten aangezet. Hiervoor zijn uitgebreide
attributen en UFS2 nodig. Een en ander wordt
in detail beschreven in .
ACL's staan standaard aan en moeten niet
uitgezet worden in de kernel als ze al eerder op een
bestandssysteem zijn gebruikt, omdat dit de
toegangscontrolelijsten verwijdert en hierdoor de manier waarop
bestanden beschermd worden op onvoorspelbare wijze verandert.options UFS_DIRHASH # Verbeter prestaties in grote mappenDeze optie bevat functionaliteit om schijfoperaties op grote
mappen te versnellen, ten koste van extra geheugen. Deze staat
normaalgesproken, zoals voor een grote server of interactief
werkstation, aan en wordt uitgezet als &os; op een kleiner
systeem wordt gebruikt waar geheugen het belangrijkste en
schijfsnelheid minder belangrijk is, zoals voor een
firewall.options MD_ROOT # MD is een potentieel rootapparaatDeze optie zet ondersteuning aan voor een virtuële
schijf die in het geheugen wordt geïmplementeerd en als
rootapparaat wordt gebruikt.kerneloptiesNFSkerneloptiesNFS_ROOToptions NFSCLIENT # Netwerk Bestandssysteem Client
options NFSSERVER # Netwerk Bestandssysteem Server
options NFS_ROOT # NFS bruikbaar als /, NFSCLIENT nodigHet netwerkbestandssysteem. Dit kan weggelaten worden tenzij
er gepland is om partities te aan te koppelen van een &unix;
bestandsserver over TCP/IP.kerneloptiesMSDOSFSoptions MSDOSFS # MSDOS BestandssysteemHet &ms-dos; bestandssysteem. Dit kan veilig weggelaten
worden, tenzij er gepland is om een DOS-geformatteerde partitie
van de harde schijf tijdens het opstarten aan te koppelen. Het
wordt automatisch geladen als er voor de eerste keer een
DOS-partitie wordt aangekoppeld, zoals boven beschreven.
Bovendien geeft de uitstekende software emulators/mtools toegang tot
DOS-floppies zonder dat ze aangekoppeld en afgekoppeld moeten
worden en heeft het MSDOSFS helemaal niet
nodig.options CD9660 # ISO 9660 BestandssysteemHet ISO 9960-bestandssysteem voor CD-ROMs. Commentarieer dit
uit als er geen CD-ROM drive aanwezig is of als er slechts af en
toe gegevens-CD-ROMs aangekoppeld worden (aangezien het dynamisch
geladen wordt als er voor de eerste keer een gegevens-CD-ROM
aangekoppeld wordt). Audio-CD's hebben dit bestandssysteem niet
nodig.options PROCFS # Procesbestandssysteem (vereist PSEUDOFS)Het procesbestandssysteem. Dit is een als-of
bestandssysteem, aangekoppeld op /proc, dat
programma's als &man.ps.1; in staat stelt om meer informatie over
de draaiende processen te geven. Het is in de meeste
omstandigheden niet nodig om PROCFS te
gebruiken, omdat de meeste debug- en monitorgereedschappen zijn
aangepast om zonder PROCFS te draaien:
installaties koppelen dit bestandssysteem standaard niet aan.options PSEUDOFS # Pseudo-bestandssysteem raamwerkKernels die PROCFS gebruiken moeten ook
ondersteuning voor PSEUDOFS opnemen.options GEOM_PART_GPT # GUID Partitietabellen.Voegt ondersteuning voor GUID
Partitietabellen toe. GPT biedt de mogelijkheid om een groot
aantal partities per schijf te hebben, 128 is de
standaardconfiguratie.options COMPAT_43 # Compatibel met BSD 4.3 [ERIN HOUDEN!]Compatibiliteit met 4.3BSD. Laat dit aanstaan. Sommige
programma's gedragen zich vreemd als dit uitgecommentarieerd
wordt.options COMPAT_FREEBSD4 # Compatibel met &os; 4Deze optie is nodig
om ondersteuning te bieden aan applicaties die gecompileerd zijn
op oudere versies van &os; en gebruik maken van oudere
systeemaanroep-interfaces. Het is aanbevolen dat deze optie
gebruikt wordt op alle &i386; systemen die mogelijk
oudere applicaties draaien. Voor platformen die pas in 5.X
ondersteuning verwierven, zoals ia64 en &sparc64;, is deze optie
niet nodig.options COMPAT_FREEBSD5 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 5.X die gebruik
maken van de systeemaanroepinterfaces van &os; 5.X.options COMPAT_FREEBSD6 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 6.X die gebruik
maken van de systeemaanroepinterfaces van &os; 6.X.options COMPAT_FREEBSD7 # Compatibel met &os;5Deze optie is vereist om ondersteuning te geven aan
applicaties die gecompileerd zijn op &os; 7.X die gebruik
maken van de systeemaanroepinterfaces van &os; 7.X.options SCSI_DELAY=5000 # Vertraging (in ms) voordat SCSI wordt ondergezocht.Dit zorgt ervoor dat de kernel vijf seconden wacht voordat die
elk SCSI-apparaat in het systeem onderzoekt. Als er alleen
IDE-harde schijven zijn, kan deze optie genegeerd worden, anders
kan geprobeerd worden dit getal te verlagen, om het opstarten te
versnellen. Uiteraard moet deze waarde weer verhoogd worden als
&os; problemen heeft om de SCSI-apparaten te herkennen.options KTRACE # ktrace(1) ondersteuningDit schakelt kernelondersteuning voor het volgen processen
in, wat handig is tijdens debuggen.options SYSVSHM # SYSV-stijl gedeeld geheugenDeze optie biedt System V gedeeld geheugen. Meestal
wordt dit wegens de XSHM-uitbreiding in X gebruikt, waar door
vele grafische programma's automatisch gebruik van wordt gemaakt
voor extra snelheid. Als X gebruik wordt, is het raadzaam om dit
op te nemen.options SYSVMSG # SYSV-stijl berichtwachtrijenDit biedt ondersteuning voor System V berichten. Ook
deze optie voegt slechts een paar honderd bytes aan de kernel
toe.options SYSVSEM # SYSV-stijl semaforenDit biedt ondersteuning voor System V semaforen. Het
wordt minder vaak gebruikt, maar voegt slechts een paar honderd
bytes aan de kernel toe.De optie van het commando &man.ipcs.1;
geeft een lijst van alle processen die een van deze
System V faciliteiten gebruikt.options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensiesDit biedt real-time-uitbreidingen die in de 1993 &posix; zijn
toegevoegd. Bepaalde applicaties in de Portscollectie gebruiken
deze (zoals &staroffice;).options KBD_INSTALL_CDEV # installeer een CDEV-ingang in /devDeze optie is nodig om apparaatknooppunten voor het
toetsenbord aan te maken in /dev.options ADAPTIVE_GIANT # Giant mutex is adaptief.Giant is de naam van een wederzijds uitsluitingsmechanisme
(een sleep mutex) dat een grote verzameling kernelbronnen
beschermt. Vandaag de dag is dit een onacceptabele
prestatie-bottleneck die actief door sloten wordt vervangen die
individuele bronnen beschermen. De optie
ADAPTIVE_GIANT zorgt ervoor dat Giant in de
verzamelingen van mutexen wordt opgenomen waar actief wordt
opgespind. Dit betekent dat wanneer een thread de Giant-mutex
wil nemen, maar die reeds door een thread op een andere CPU
genomen is, de eerste thread blijft draaien en wacht tot er een
slot vrijkomt. Normaalgesproken zou de thread weer gaan slapen
en wachten op de volgende kans om te draaien. Laat dit er in
geval van twijfel instaan.Merk op dat in &os; 8.0-RELEASE en later alle mutexen
standaard adaptief zijn, tenzij ze expliciet op niet-adaptief
zijn gezet door met de optie
NO_ADAPTIVE_MUTEXES te compileren. Een
gevolg is dat Giant nu standaard adaptief is, en dat de optie
ADAPTIVE_GIANT uit de kernelinstellingen is
verwijderd.kerneloptiesSMPdevice apic # I/O APICHet apic-apparaat zet de ondersteuning voor I/O-APIC voor het
afleveren van interrupts aan. Het apic-apparaat kan zowel in UP-
als in SMP-kernels gebruikt worden, maar is noodzakelijk voor
SMP-kernels. Voeg options SMP toe om
ondersteuning voor meerdere processoren op te nemen.Het apic-apparaat bestaat alleen in de i386-architectuur,
deze instelregel dient niet op andere architecturen gebruikt te
worden.device eisaNeem dit op voor een EISA-moederbord. Dit zet ondersteuning
voor zelfdetectie en -instelling aan voor alle apparaten op de
EISA-bus.device pciNeem dit op voor een PCI-moederbord. Dit zet ondersteuning
voor zelfdetectie van PCI-kaarten en gatewaying van
PCI-naar-ISA-bus aan.# Floppy drives
device fdcDit is de controller voor de floppydrive.# ATA- en ATAPI-apparaten
device ataDit stuurprogramma biedt ondersteuning aan alle ATA- en
ATAPI-apparaten. Er is slechts één device
ata-regel nodig om de kernel alle PCI
ATA/ATAPI-apparaten te laten ontdekken op moderne
machines.device atadisk # ATA schijvenDit is samen met device ata nodig voor ATA
schijven.device ataraid # ATA RAID schijvenDit is samen met device ata nodig voor ATA
RAID-schijven.
device atapicd # ATAPI CD-ROM drivesDit is samen met device ata nodig voor
ATAPI CD-ROM drives.device atapifd # ATAPI floppy drivesDit is samen met device ata nodig voor
ATAPI floppydrives.device atapist # ATAPI tape drivesDit is samen met device ata nodig voor
ATAPI tapedrives.options ATA_STATIC_ID # Statische apparaatnummeringDit zorgt ervoor dat de controller statisch nummert. Zonder
deze optie worden nummers dynamisch toegewezen.# SCSI Controllers
device ahb # EISA AHA1742 familie
device ahc # AHA2940 en onboard AIC7xxx apparaten
options AHC_REG_PRETTY_PRINT # Print registerbitvelden in
# debuguitvoer. Voegt ~128k
# aan stuurprogramma toe.
device ahd # AHA39320/29320 en onboard AIC79xx apparaten
options AHD_REG_PRETTY_PRINT # Print registerbitvelden in
# debuguitvoer. Voegt ~215k
# aan stuurprogramma toe.
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic familie
#device ispfw # Firmware voor QLogic HBAs- normaliter een module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (nieuwere chipsets + die van `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters
device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters
device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50SCSI controllers. Commentarieer de regels uit voor apparaten
die niet in het systeem aanwezig zijn. Als het een systeem met
alleen IDE apparaten betreft, kunnen ze allemaal weggelaten
worden. De regels met *_REG_PRETTY_PRINT zijn
debugopties voor hun respectievelijke stuurprogramma's.# SCSI randapparaten
device scbus # SCSI bus (nodig voor SCSI)
device ch # SCSI media changers
device da # Direct Access (schijven)
device sa # Sequential Access (tape, enzovoort)
device cd # CD
device pass # Passthrough apparaat (directe SCSI-toegang)
device ses # SCSI Omgevingsdiensten (en SAF-TE)SCSI-aanhangsels. Ook hier geldt dat apparaten die niet
aanwezig zijn uitgecommentarieerd kunnen worden, of als alleen
IDE-hardware aanwezig is, ze allemaal weggelaten kunnen
worden.Het USB-stuurprogramma &man.umass.4; en enkele andere
stuurprogramma's gebruiken het SCSI-subsysteem, alhoewel ze
geen echte SCSI-apparaten zijn. Daarom mag SCSI-ondersteuning
niet verwijderd worden als dit soort stuurprogramma's in de
kernelinstellingen worden opgenomen.# RAID controllers met interfaces naar het SCSI subsysteem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI en Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - Zie NOTES voor opties
device hptmv # Highpoint RocketRAID 182x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID
# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough voor aac (heeft CAM nodig)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 famile
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAIDOndersteunde RAID-controllers. Als een van deze niet
aanwezig is, kan deze uitgecommentarieerd of verwijderd
worden.# atkbdc0 bestuurt het toetsenbord en de PS/2 muis
device atkbdc # AT toetsenbordcontrollerDe toetsenbordcontroller (atkbdc) biedt
I/O-diensten aan voor het AT-toetsenbord en het PS/2-type van
aanwijsapparaten. Deze controller is noodzakelijk voor het
toetsenbordstuurprogramma (atkbd) en het
PS/2-aanwijsapparaatstuurprogramma
(psm).device atkbd # AT toetsenbordHet stuurprogramma atkbd biedt samen met
de controller atkbdc toegang tot het
AT84-toetsenbord of het uitgebreide AT-toetsenbord dat verbonden
is met de controller voor het AT-toetsenbord.device psm # PS/2 muisDit apparaat kan gebruikt worden als de muis in de
PS/2-muispoort wordt geplugd.device kbdmux # toetsenbordmultiplexerBasisondersteuning voor multiplexing van toetsenborden. Als u
niet van plan bent om meerdere toetsenborden op het systeem te
gebruiken, kunt u deze regel veilig verwijderen.device vga # VGA videokaart stuurprogrammaHet stuurprogramma voor de videokaart.device splash # Splash screen en screensaver ondersteuningEen splash-scherm tijdens het opstarten! Screensavers hebben
deze optie ook nodig.# syscons is het standaard consolestuurprogramma, lijkt op een SCO console
device scsc is het standaard consolestuurprogramma
en lijkt op een SCO-console. Aangezien de meeste programma's die
met een volledig scherm werken de console via een
terminaldatabase zoals termcap benaderen,
moet het niet uitmaken of dit of vt, het
VT220-compatibele consolestuurprogramma,
gebruikt wordt. Wanneer er aangemeld wordt, dient de variabele
TERM op scoansi gezet worden
indien programma's die met een volledig scherm werken problemen
hebben om met dit console te draaien.# Schakel dit in voor het pcvt (VT220 compatibele) consolestuurprogramma
#device vt
#options XSERVER # ondersteuning voor X server op een vt console
#options FAT_CURSOR # begin met een blokcursorDit is een VT220-compatibel consolestuurprogramma,
achterwaarts compatibel met de VT100/102. Het werkt goed op
enkele laptops die hardware-incompatibiliteiten hebben met
sc. Ook dient de variabele
TERM op vt100 of
vt220 gezet te worden bij het aanmelden. Dit
stuurprogramma kan ook nuttig zijn wanneer er verbinding wordt
gemaakt met een groot aantal verschillende machines in een
netwerk, waarbij de ingangen termcap of
terminfo voor het apparaat
sc vaak niet beschikbaar zijn.
vt100 is op bijna elk platform
beschikbaar.device agpNeem dit op als er een AGP-kaart in het systeem aanwezig is.
Dit zet ondersteuning voor AGP aan, en ondersteuning voor AGP
GART voor borden die deze mogelijkheden hebben.APM# Ondersteuning voor energiebeheer (zie NOTES voor meer opties)
#device apmOndersteuning voor geavanceerd energiebeheer (Advanced Power
Management). Dit is nuttig voor laptops, alhoewel dit
standaard uitgeschakeld is in GENERIC.# Schakel suspend/resume ondersteuning voor de i8254 in.
device pmtimerHet stuurprogramma voor het timerapparaat voor
energiebeheergebeurtenissen, zoals APM en ACPI.# PCCARD (PCMCIA) ondersteuning.
# PCMCIA en cardbus bridge ondersteuning.
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) busOndersteuning voor PCMCIA. Dit is wenselijk voor
laptopgebruikers.# Serial (COM) poorten
device sio # 8250, 16[45]50-gebaseerde seriële poortenDit zijn de seriële poorten waarnaar in de wereld van
&ms-dos;/&windows; verwezen wordt als
COM-poorten.Als er een intern modem op COM4 en
een seriële poort op COM2
aanwezig is, moet het IRQ van het modem in 2 worden veranderd
(om duistere technische redenen geldt dat IRQ2 = IRQ9) om er
vanuit &os; toegang toe te krijgen. Als er een multipoort
seriële kaart aanwezig is, staat in &man.sio.4; meer
informatie over de juiste waarden die aan
/boot/device.hints toegevoegd moeten
worden. Sommige videokaarten (vaak gebaseerd op S3 chips)
gebruiken IO-adressen van de vorm 0x*2e8, en
omdat vele goedkope serieële kaarten de 16-bits
IO-adresruimte niet volledig decoderen, botsen ze met deze
kaarten waardoor de COM4-poort
praktisch onbruikbaar is.Elke serieële poort moet een uniek IRQ hebben (tenzij
er gebruik wordt gemaakt van een van de multipoortkaarten
waarbij gedeelde interrupts ondersteund worden), dus kunnen de
standaard IRQ's voor COM3 en
COM4 niet gebruikt worden.# Parallelle poort
device ppcDit is de interface voor de parallelle poort op de
ISA-bus.device ppbus # Parallelle poortbus (verplicht)Biedt ondersteuning voor de parallelle poortbus.device lpt # PrinterOndersteuning voor parallelle poort-printers.Alle van de bovenstaande drie zijn noodzakelijk om
ondersteuning voor parallelle printers aan te zetten.device plip # TCP/IP over parallelDit is het stuurprogramma voor de parallelle
netwerkinterface.device ppi # Parallelle poort interface apparaatDe algemene I/O (geek-poort) + IEEE1284 I/O.#device vpo # scbus en da verplichtzipdriveDit is voor een Iomega Zipdrive. Hiervoor is ondersteuning
voor scbus en da nodig. De
beste prestaties worden gehaald met poorten in EPP
1.9-modus.#device pucDit dient uitgecommentarieerd te worden indien er een
domme seriële of parallelle PCI-kaart
aanwezig is die ondersteund wordt door het &man.puc.4;
verbindingsstuurprogramma.# PCI Ethernet NIC's.
device de # DEC/Intel DC21x4x (Tulip)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (Typhoon)
device vx # 3Com 3c590, 3c595 (Vortex)Verscheidene PCI-netwerkkaartstuurprogramma's. Degenen die
niet in het systeem aanwezig zijn kunnen uitgecommentarieerd of
verwijderd worden.# PCI Ethernet NIC's die de MII bus controller code gebruiken.
# NB: 'device miibus' moet behouden blijven om deze NIC's te kunnen gebruiken!
device miibus # MII bus ondersteuningOndersteuning voor MII-bus is noodzakelijk voor sommige PCI
10/100 Ethernet-NICs, namelijk voor diegenen die MII-geldige
transceivers gebruiken of interfaces voor transceiverbesturing
implementeren die als een MII werken. Door device
miibus aan de kernelinstellingen toe te voegen wordt
de ondersteuning voor de generieke miibus-API en voor alle
PHY-stuurprogramma's opgenomen, waaronder een generieke voor
PHYs die niet specifiek door een individueel stuurprogramma
worden behandeld.device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 en verschillende gelijkwerkenden
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit Ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
device nge # NatSemi DP83820 gigabit Ethernet
device nve # nVidia MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (voorrang op 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (Starfire)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device stge # Sundance/Tamarack TC9021 gigabit Ethernet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 EPIC)
device ge # VIA VT612x gigabit Ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (Boomerang, Cyclone)Stuurprogramma's die gebruik maken van de MII
bus-controllercode.# ISA Ethernet NIC's. Inclusief pccard NIC's.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' heeft 'device miibus' nodig
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 kaarten
device ex # Intel EtherExpress Pro/10 en Pro/10+
device ep # Etherlink III-gebaseerde kaarten
device fe # Fujitsu MB8696x-gebaseerde kaarten
device ie # EtherExpress 8/16, 3C507, StarLAN 10, etc.
device lnc # NE2100, NE32-VL Lance Ethernet kaarten
device sn # SMC's 9000 serie Ethernet chips
device xe # Xircom pccard Ethernet
# ISA apparaten die de oude ISA shims gebruiken
#device leISA Ethernetstuurprogramma's. In
/usr/src/sys/i386/conf/NOTES
staan details over welke kaarten door welk stuurprogramma
ondersteund worden.# Draadloze NIC kaarten
device wlan # 802.11 ondersteuningGenerieke 802.11 ondersteuning. Deze regel is vereist voor
draadloos netwerken.device wlan_wep # 802.11 WEP-ondersteuning
device wlan_ccmp # 802.11 CCMP-ondersteuning
device wlan_tkip # 802.11 TKIP-ondersteuningCrypto-ondersteuning voor 802.11-apparaten. Deze regels zijn
nodig als u van plan bent om versleuteling en
802.11i-beveiligingsprotocollen te gebruiken.device an # Aironet 4500/4800 802.11 draadloze NIC's.
device ath # Atheros PCI/CardBus NICs
device ath_hal # Atheros HAL (Hardware Access Layer)
device ath_rate_sample # SampleRate verzendsnelheidbeheer voor ath
device awi # BayStack 660 en anderen
device ral # Ralink Technologies RT2500 draadloze NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 draadloze NIC's.
#device wl # Oudere niet-802.11 Wavelan draadloze NIC.Ondersteuning voor verscheidene draadloze kaarten.# Pseudo-apparaten
device loop # Netwerk teruglussenDit is het generieke teruglusapparaat voor TCP/IP. Als
telnet of FTP op localhost (ook bekend als
127.0.0.1) gebruikt wordt, loopt
dat via dit apparaat. Dit is verplicht.device random # Entropy apparaatCryptografisch veilige willekeurige getallengenerator.device ether # Ethernet ondersteuningether is allen noodzakelijk als er een
Ethernetkaart aanwezig is. Het bevat code voor het generieke
Ethernetprotocol.device sl # Kernel SLIPsl dient voor SLIP-ondersteuning. Dit is
bijna geheel overgenomen door PPP, wat eenvoudiger is op te
zetten, beter geschikt is voor modem-naar-modem-verbindingen en
krachtiger is.device ppp # Kernel PPPDit dient voor PPP-ondersteuning van inbelverbindingen door
de kernel. Er is ook een versie van PPP als gebruikersapplicatie
geïmplementeerd die tun gebruikt en meer
flexibiliteit en mogelijkheden biedt zoals demand-bellen.device tun # Packet tunnel.Dit wordt gebruikt door de gebruikers-PPP-software. In
PPP staat meer informatie.
device pty # Pseudo-ttys (telnet, etc.)Dit is een pseudo-terminal of gesimuleerde
aanmeldpoort. Die wordt gebruikt door binnenkomende sessies van
telnet en rlogin, door
xterm en voor sommige andere
applicaties zoals Emacs.device md # GeheugenschijvenPseudo-apparaten die een schijf in het geheugen implementeren.device gif # IPv6 en IPv4 tunnelenDit implementeert IPv6-over-IPv4-tunneling,
IPv4-over-IPv6-tunneling, IPv4-over-IPv4-tunneling en
IPv6-over-IPv6-tunneling. Het apparaat gif is
zelfklonend en zal naar behoefte
apparaatknooppunten aanmaken.device faith # IPv6-naar-IPv4-relay (vertaling)Dit pseudo-apparaat onderschept pakketten die ernaar
verzonden worden en leidt ze om naar het IPv4/IPv6-vertaaldaemon.# Het `bpf' apparaat schakelt de Berkeley Pakketfilter in.
# Wees bewust van de administratieve consequenties die dit heeft!
# 'bpf' is nodig bij gebruik van DHCP.
device bpf # Berkeley pakketfilterDit is het Berkeley Pakketfilter. Dit pseudo-apparaat staat
netwerkinterfaces toe om in luistermodus gezet te worden, zodat
elk pakket op een uitzendnetwerk (bijvoorbeeld een Ethernet)
onderschept wordt. Deze pakketten kunnen naar schijf onderschept
en/of onderzocht worden met het programma &man.tcpdump.1;.Het apparaat &man.bpf.4; wordt ook gebruikt door
&man.dhclient.8; om het IP-adres van de standaardrouter
(gateway) te verkrijgen, enzovoorts. Als DHCP gebruikt wordt,
dient dit ingeschakeld te blijven.# USB-ondersteuning
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (verplicht)
#device udbp # USB Double Bulk Pipe apparaten
device ugen # Generic
device uhid # Human Interface Devices
device ukbd # Toetsenbord
device ulpt # Printer
device umass # Schijven/Massaopslag - heeft scbus en da nodig
device ums # Muis
device ural # Ralink Technology RT2500USB draadloze NICs
device urio # Diamond Rio 500 MP3 speler
device uscanner # Scanners
# USB Ethernet, heeft mii nodig
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB EthernetOndersteuning voor verscheidene USB-apparaten.# FireWire ondersteuning
device firewire # FireWire bus code
device sbp # SCSI over FireWire (scbus en da nodig)
device fwe # Ethernet over FireWire (niet-standaard!)Ondersteuning voor verscheidene Firewire-apparaten.Meer informatie en aanvullende apparaten die door &os;
ondersteund worden staan in
/usr/src/sys/i386/conf/NOTES.Instellingen bij veel geheugen
(PAE)Physical Address Extensions
(PAE)veel geheugenSommige machines (PAE) hebben meer
geheugen nodig dan limiet van 4 gigabyte op User+Kernel Virtual
Adress (KVA) ruimte. Vanwege deze limiet
voegde Intel ondersteuning toe voor toegang tot 36-bits fysieke
adresruimte in de &pentium; Pro en nieuwere lijn van
CPU's.De Physical Address Extension (PAE)
mogelijkheden van de &intel; &pentium; Pro en nieuwere CPU's
staan geheugenhoeveelheden toe tot 64 gigabyte. &os; biedt
ondersteuning voor deze mogelijkheid via de kernelinsteloptie
, die beschikbaar is in alle recent
uitgegeven versies van &os;. Vanwege de beperkingen van de
geheugenarchitectuur van Intel wordt er geen onderscheid
gemaakt tussen geheugen boven of beneden 4 gigabytes. Geheugen
dat boven de 4 gigabytes is toegewezen wordt gewoon bij het
beschikbare gevoegd.Om ondersteuning voor PAE in de kernel
aan te zetten, dient de volgende regel aan het
kernelinstellingenbestand te worden toegevoegd:options PAEDe ondersteuning voor PAE in &os; is
alleen beschikbaar voor &intel; IA-32-processoren. Ook dient
opgemerkt te worden dat ondersteuning voor
PAE nog niet wijdverbreid getest is en
als betakwaliteit beschouwd dient te worden vergeleken met
andere stabiele kenmerken van &os;.Ondersteuning voor PAE in &os; heeft
enige beperkingen:Een proces kan niet meer dan 4 gigabyte VM-ruimte
krijgen;Apparaatstuurprogramma's die geen gebruik maken van de
&man.bus.dma.9;-interface zullen gegevenscorruptie
veroorzaken in een kernel die PAE aan
heeft staan en hun gebruik wordt afgeraden. Om deze reden
wordt er de kernelinstellingenbestand voor de
PAE-kernel geleverd met &os;, dat alle
stuurprogramma's uitsluit waarvan niet bekend is dat ze
werken in een kernel die PAE aan heeft
staan;Sommige systeeminstellingen bepalen het
geheugenbronverbruik aan de hand van de hoeveelheid
beschikbaar fysiek geheugen. Zulke instellingen kunnen
onnodig veel toewijzen vanwege de grote hoeveelheid
geheugen in een PAE systeem. Een
voorbeeld hiervan is de sysctl
, die het maximum aantal
vnodes dat in de kernel aanwezig mag zijn beheert. Het is
aan te raden om deze en andere van dit soort instellingen
aan te passen aan een redelijke waarde;Het kan nodig zijn om de virtuele kerneladresruimte
(KVA) te vergroten of om het aantal
kernelbronnen dat veel gebruikt wordt (zie boven) te
verminderen om zo uitputting van KVA te
voorkomen. De kerneloptie kan
gebruikt worden om de KVA-ruimte te
vergroten.Om prestatie- en stabiliteitsredenen is het aan te raden om
&man.tuning.7; te raadplegen. &man.pae.4; bevat bijgewerkte
informatie over de ondersteuning voor PAE in
&os;.Problemen oplossenEr zijn vier probleemcategoriën die op kunnen treden
tijdens het bouwen van een aangepaste kernel:config faaltAls het commando &man.config.8; faalt bij het verwerken
van de kernelbeschrijving, is er waarschijnlijk ergens een
eenvoudige fout gemaakt. Gelukkig geeft &man.config.8; het
nummer van de regel weer waarmee het problemen had, dus kan
snel de regel gevonden worden waarin de fout zit.
In het onderstaande voorbeeld dient gecontroleerd te worden
of het sleutelwoord juist is ingevoerd door het met de
kernel GENERIC of een andere
referentie te vergelijken:config: line 17: syntax errormake faaltAls make faalt, duidt dit meestal op
een fout in de kernelbeschrijving die niet erg genoeg is om
door &man.config.8; opgemerkt te worden. De instellingen
dienen nogmaals nagekeken te worden. Als het probleem nog
steeds niet is op te lossen, stuur dan een mail naar de
&a.questions; met de kernelinstellingen. Dat leidt meestal
snel tot een diagnose.De kernel start niet opAls de nieuwe kernel niet opstart of de apparaten
niet herkent is kalmte geboden. &os; heeft een uitstekend
mechanisme om van niet-compatibele kernels te herstellen.
De gewenste kernel om mee op te starten kan vanuit de &os;
boot loader gekozen worden. Als het systeemopstartmenu
verschijnt, kan deze gekozen worden.
Selecteer de optie Escape to a loader prompt,
nummer zes. Typ op de prompt
boot kernel.old
of de naam van een andere kernel die correct
opstart. Als de kernelinstellingen gewijzigd worden, is
het altijd aan te raden om een kernel bij de hand te houden
waarvan bekend is dat die juist werkt.Nadat er met een goede kernel is opgestart, kan het
instellingenbestand gecontroleerd worden en geprobeerd
worden om de kernel nogmaals te bouwen. Een behulpzame
bron is het bestand /var/log/messages,
dat onder andere alle kernelberichten van alle keren dat er
succesvol is opgestart vastlegt. Ook geeft &man.dmesg.8;
alle kernelberichten weer van de huidige
opstartprocedure.Als er problemen zijn met het bouwen van een kernel,
dient een GENERIC, of een andere
kernel waarvan bekend is dat die werkt, bewaard te worden
onder een andere naam die niet verwijderd wordt als de
volgende kernel gebouwd wordt. Er kan niet op
kernel.old vertrouwd worden omdat
bij de installatie van een nieuwe kernel
kernel.old overschreven wordt met de
laatst geïnstalleerde kernel, die niet hoeft te
werken. Ook dient de werkende kernel zo snel mogelijk
naar de juiste plaats /boot/kernel verplaatst te
worden, omdat anders commando's als &man.ps.1; eventueel
onjuist werken. Hiervoor dient simpelweg de map met de
goede kernel hernoemd te worden:&prompt.root; mv /boot/kernel /boot/kernel.slecht
&prompt.root; mv /boot/kernel.goed /boot/kernelDe kernel werkt, maar &man.ps.1; werkt niet meerAls er een andere versie van de kernel is
geïnstalleerd dan degene waarmee de
systeemgereedschappen gebouwd zijn, bijvoorbeeld een kernel
voor -CURRENT op een -RELEASE-systeem, werken vele
systeemstatuscommando's als &man.ps.1; en &man.vmstat.8;
niet langer. De wereld moet opnieuw gecompileerd en
geïnstalleerd worden en met dezelfde broncodestructuur
als de kernel zijn gebouwd. Dit is een van de redenen
waarom het normaliter geen goed idee is om een afwijkende
versie van de kernel ten opzichte van de rest van de wereld
te gebruiken.
Index: head/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml
===================================================================
--- head/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml (revision 40820)
+++ head/nl_NL.ISO8859-1/books/handbook/mac/chapter.xml (revision 40821)
@@ -1,2180 +1,2180 @@
TomRhodesGeschreven door SiebrandMazelandVertaald door RenéLadanVertaling voortgezet door Verplichte Toegangscontrole (MAC)OverzichtMACverplichte toegangscontroleMACmandatory access controlIn &os; 5.X werden nieuwe beveiligingsuitbreidingen
geïntroduceerd uit het TrustedBSD project, dat is gebaseerd
op de &posix;.1e draft. Twee van de meest significante nieuwe
beveiligingsmechanismen zijn faciliteiten voor
Toegangscontrolelijsten voor bestandssystemen
(ACLs) en Verplichte Toegangscontrole
(Mandatory Access Control of MAC). 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. Andere bieden allesomvattende gelabelde
beveiliging 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 standaardrechten voor bestanden en
System V IPC rechten in &os;).In dit hoofdstuk wordt de nadruk gelegd op het
Verplichte Toegangscontrole Raamwerk (MAC
Framework) en een verzameling van te activeren
beveiligingsbeleidsmodules waarmee verschillende soorten
beveiligingsmechanismen wordt ingeschakeld.Na het lezen van dit hoofdstuk weet u: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-raamwerk te werken.Hoe het beleid van de verschillende
beveiligingsbeleidsmodules die in het
MAC-raamwerk zitten ingesteld kunnen
worden.Hoe een veiligere omgeving gemaakt kan worden met het
MAC-raamwerk en de getoonde voorbeelden;Hoe de MAC-instellingen getest
kunnen worden om er zeker van te zijn dat het raamwerk 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 die hierin staat
kan leiden tot het niet langer toegang hebben tot een systeem,
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-raamwerk 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 beveiligingsbeleidsmodules
dient goed overdacht en getest 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 vele bestanden en mappen opnieuw moet instellen.Wat niet wordt behandeldIn dit hoofdstuk wordt een brede reeks
beveiligingsonderwerpen met betrekking tot het
MAC-raamwerk behandeld. De ontwikkeling
van nieuwe MAC-beveiligingsbeleidsmodules
wordt niet behandeld. Een aantal modules die bij het
MAC-raamwerk 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.Sleuteltermen in dit hoofdstukVoordat dit hoofdstuk gelezen wordt, moeten er 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 gegevens die gepartitioneerd of
gescheiden dient te worden en waartoe gebruikers expliciet
toegang moeten krijgen op een systeem. Een compartiment staat
ook voor een groep, zoals een werkgroep, afdeling, project, of
onderwerp. Door gebruik te maken van compartimenten is het
mogelijk om een need-to-know beveiligingsbeleid
in te stellen.hoogwatermarkering: Een
hoogwatermarkeringsbeleid is een beleid dat toestaat om
beveiligingsniveaus te verhogen met het doel informatie dat op
een hoger niveau aanwezig is te benaderen. In de meeste
gevallen wordt het originele niveau hersteld nadat het proces
voltooid is. Momenteel heeft het
MAC-raamwerk van &os; hier geen beleid
voor, maar de definitie is voor de volledigheid opgenomen.integriteit: integriteit, als
sleutelconcept, is het niveau van vertrouwen dat in gegevens
gesteld kan worden. Als de integriteit van gegevens wordt
vergroot, dan geldt dat ook voor het vertrouwen dat in die
gegevens 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
beleidsinstellingen: hoewel sommige
beleidseenheden een label beschouwen als representatie van de
integriteit of het geheimhoudingsniveau van een object, kunnen
andere beleidseenheden labels gebruiken 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.laagwatermarkering: Een
laagwatermarkeringsbeleid is een beleid dat toestaat om de
beveiligingsniveaus te verlagen met het doel informatie te
benaderen die minder veilig is. In de meeste gevallen wordt
het originele beveiligingsniveau van de gebruiker hersteld
nadat het proces voltooid is. De enige
beveiligingsbeleidsmodule in &os; die dit gebruikt is
&man.mac.lomac.4;.meervoudig label: de eigenschap
is een optie van het
bestandssysteem die in enkelegebruikersmodus 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
vallen mappen, bestanden, velden, schermen, toetsenborden,
geheugen, magnetische opslag, printers en alle andere
denkbare apparaten waarmee gegevens kunnen worden vervoerd of
kunnen worden opgeslagen. In de basis is een object een
opslageenheid voor gegevens of een systeembron; toegang tot
een object betekent in feite toegang tot
de gegevens.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
gegevens en informatie stroomt en aangeeft wie toegang tot
welke gegevens en informatie heeft.gevoeligheid: meestal gebruikt bij
het bespreken van MLS. Een
gevoeligheidsniveau is een term die gebruikt wordt om te
beschrijven hoe belangrijk of geheim de gegevens horen te
zijn. Met het stijgen van het gevoeligheidsniveau stijgt ook
het belang van de geheimhouding of de vertrouwelijkheid van de
gegevens.enkelvoudig label: een enkelvoudig
label wordt gebruikt als een heel bestandssysteem gebruik
maakt van één label om het toegangsbeleid over
de gegevensstromen 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
objecten veroorzaakt, bijvoorbeeld een
gebruiker, gebruikersprocessor, systeemproces, enzovoort. Op
&os; is dit bijna altijd een thread die in een proces namens
een gebruiker optreedt.Uitleg over MACMet al deze nieuwe termen in gedachten, kan overdacht worden
hoe het MAC-raamwerk de complete beveiliging
van een systeem kan vergroten. De verschillende
beveiligingsbeleidsmodules die het MAC-raamwerk
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 meerdere 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 raamwerk. 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 raamwerk geïmplementeerd.Een systeem dat gebruik maakt van de mogelijkheden van
MAC dient dus tenminste de garantie te bieden
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 de strikte vertrouwelijkheid van
bestandssysteemobjecten van belang zijn. 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 afgesneden van andere gebruikersgroepen of specifieke
gebruikers, of moeten de toegang voor gebruikers of programma's
tot bepaalde 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 van 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-raamwerk 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 het systeem.
Een goed begrip van de verschillende beveiligingsbeleidsmodules
die het MAC-raamwerk biedt helpt beheerders bij
het kiezen van de juiste beleidseenheden voor hun situatie.De standaard &os;-kernel kent geen ondersteuning voor het
MAC-raamwerk en daarom dient de volgende
kerneloptie toegevoegd te worden voordat op basis van de
voorbeelden of informatie uit dit hoofdstuk wijzigen worden
gemaakt:options MACHierna dient de kernel herbouwd en opnieuw 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 begrijpenEen MAC-label is een beveiligingsattribuut
dat toegepast kan worden op subjecten 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 beveiligingslabel 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
verzameling 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 verzameling 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 labels in te stellen op subjecten of objecten in het
bestandssysteem. In die gevallen kan de optie
meegegeven 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 aan te geven. Dit numerieke niveau
wordt gebruikt om informatie in verschillende groepen te
partitioneren of te sorteren voor het classificeren 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 toegangsniveaus 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 of
toegangsmodel dat wordt afgedekt door beleidseenheden zoals Biba
en MLS.LabelinstellingenVrijwel 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; en &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 systeemsubjecten:&prompt.root; setfmac biba/high testAls het bovenstaande commando geen foutmeldingen heeft
veroorzaakt, dan komt er een prompt terug. Deze commando's
geven nooit uitvoer, tenzij er een fout is opgetreden; net als
bij de commando's &man.chmod.1; en &man.chown.8;. In sommige
gevallen kan de foutmelding Permission
denied zijn en deze treedt meestal op 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 van het
bestand, het object kan niet bestaan of alleen-lezen zijn.
Een verplichte beleidsinstelling zal 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 zo'n zelfde 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 testPermission denied
&prompt.root; setpmac biba/low setfmac biba/high test
&prompt.root; getfmac test
test: biba/highHierboven 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 tot hebben, onderhevig aan de regels van de geladen
beleidsmodules, dan wordt de foutmelding Operation
not permitted weergegeven door de functie
mac_set_link.LabeltypenMet 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 labelinstelling die een object of subject kan
hebben. Deze instelling op objecten of subjecten
blokkeert hun toegang tot objecten of subjecten 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 labelinstellingenDit zijn de labels met 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 geïnterpreteerd worden
als:Biba-beleidslabel/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 graad is de lage graad 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
systeemsubjecten, omdat ze de reikwijdte van rechten in het
systeem en op netwerkinterfaces aangeven, waar ze gebruikt
worden voor toegangscontrole.De graad en afdelingen in een subject en object paar
wordt gebruikt om een relatie te construeren die
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 verzameling van afdelingen, need to
know, die overeen zouden kunnen komen met projecten,
maar objecten hebben ook een verzameling van afdelingen.
Gebruikers dienen wellicht hun rechten onder te verdelen met
su of setpmac om
toegang te krijgen tot objecten in een afdeling die geen
verboden terrein voor ze zijn.Gebruikers en labelinstellingenGebruikers 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 implementeert ook de instelling van de
gebruikersklasse.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),lomac/10[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
initiële aanmelden, maar dit is wel afhankelijk van de
beperkingen van een beleidsinstelling. Het bovenstaande
voorbeeld vertelt de beleidseenheid Biba dat de minimale
integriteit van een proces 5 en het maximum 15, maar dat het
effectieve label standaard 10 is. Het proces draait op
niveau 10, totdat het proces het label wijzigt, misschien door een
gebruiker die setpmac gebruikt, bij het
aanmelden beperkt tot de door Biba ingestelde reeks.In alle gevallen dient de database met
aanmeldklassemogelijkheden opnieuw gebouwd te worden met
cap_mkdb na het wijzigen van
login.conf. Dit wordt ook in alle
komende voorbeelden en beschrijvingen gedaan.Het is belangrijk op te merken dat in veel gevallen sites
te maken hebben met bijzonder grote aantallen gebruikers
waardoor er een aantal verschillende aanmeldklassen nodig
zijn. Het is dan nodig gedetailleerd te plannen omdat dit
anders bijzonder complex wordt om te onderhouden.Netwerkinterfaces en labelinstellingenLabels 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/equalIn het bovenstaande voorbeeld wordt het
MAC-label biba/equal
ingesteld op de interface &man.bge.4;. 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-label 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.Enkelvoudig label of meervoudig label?Standaard gebruikt een systeem de optie
. 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 beleidsmogelijkheden 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-raamwerk en een mengeling van
verschillende beleidseenheden.De webserver heeft maar één 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 administratiemogelijkheden te
voorkomen. Later wordt beschreven hoe de beleidseenheid
Biba 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 rompslomp, omdat alles in een
bestandssysteem een label krijgt. Hieronder vallen mappen,
bestanden en zelfs apparaatknooppunten.Het volgende commando stelt in
op de bestandssystemen om meerdere labels te kunnen krijgen.
Dit kan alleen uitgevoerd worden in enkele gebruikersmodus:&prompt.root; tunefs -l enable /Dit is geen criterium voor het wisselbestandssysteem.Sommige gebruikers hebben problemen ondervonden met het
instellen van de vlag op de
rootpartitie. Als dit het geval is, kijk dan naar van dit hoofdstuk.De beveiligingsconfiguratie plannenWanneer een nieuwe technologie wordt geïmplementeerd is
een planningsfase altijd een goed idee. Tijdens de planningsfases
zou een beheerder in het algemeen naar de big
picture moeten kijken, en daarbij minstens het volgende
in de gaten proberen te houden:De implementatiebenodigdheden;De implementatiedoelen;Voor MAC-installaties houden deze in:Hoe de beschikbare informatie en bronnen die op het
doelsysteem aanwezig zijn te classificeren.Voor wat voor soort informatie of bronnen de toegang te
beperken samen met het type van de beperkingen die dienen te
worden toegepast.Welke MAC-module(s) nodig zullen zijn
om dit doel te bereiken.Het is altijd mogelijk om de systeembronnen en de
beveiligingsinstellingen te veranderen en te herconfigureren, het
komt vaak erg ongelegen om het systeem te doorzoeken en bestaande
bestanden en gebruikersaccounts te repareren. Plannen helpt om
zeker te zijn van een probleemloze en efficiënte
systeemimplementatie. Het is vaak vitaal en zeker in uw voordeel
om een proefronde van het vertrouwde systeem, inclusief de
configuratie, te draaien
vóórdat een
MAC-implementatie wordt gebruikt op
productiesystemen. Het idee om een systeem met
MAC gewoon los te laten is als het plannen van
mislukkingen.Verschillende omgevingen kunnen verschillende behoeften en
benodigdheden nodig hebben. Het opzetten van een diepgaand en
compleet beveiligingsprofiel zal de noodzaak van verandering
verminderen wanneer het systeem in gebruik wordt genomen.
Zodoende zullen de toekomstige secties de verschillende modules
die beschikbaar zijn voor beheerders behandelen; hun gebruik en
configuratie beschrijven; en in sommige gevallen inzicht bieden in
welke situaties ze het beste tot hun recht komen. Een webserver
bijvoorbeeld zou de beleiden &man.mac.biba.4; en
&man.mac.bsdextended.4; in gebruik nemen. In andere gevallen kan
voor een machine met erg weinig lokale gebruikers
&man.mac.partition.4; een goede keuze zijn.Module-instellingenIedere module uit het MAC-raamwerk 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 ook in dit
hoofdstuk beschreven. 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.MAC-module seeotheruidsMAC zie andere UID's
beleidsinstellingModulenaam: mac_seeotheruids.koKernelinstelling: options MAC_SEEOTHERUIDSOpstartoptie: 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 breidt 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 te
beheren: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
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.MAC-module bsdextendedMACbestandssysteemfirewall beleidsinstellingModulenaam: mac_bsdextended.koKernelinstelling:
options MAC_BSDEXTENDEDOpstartoptie:
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 verzameling met regels
kan maken om bestanden, programma's en mappen in de
bestandssysteemhiërarchie te beschermen. Wanneer geprobeerd
wordt om toegang tot een object in het bestandssysteem te krijgen,
wordt de lijst met regels afgelopen totdat er òf een
overeenkomstige regel is gevonden òf het einde van de lijst
is bereikt. Dit gedrag kan veranderd worden door het gebruik van
de &man.sysctl.8;-parameter
security.mac.bsdextended.firstmatch_enabled. Net zoals andere
firewall-modules in &os; kan een bestand dat regels voor
toegangscontrole bevat tijdens het opstarten door het systeem
worden aangemaakt en gelezen door een &man.rc.conf.5;-variabele te
gebruiken.De lijst met regels kan ingevoerd 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.VoorbeeldenNadat 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 rulesZoals verwacht zijn er geen regels ingesteld. Dit betekent
dat alles nog 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 nDit is een slecht idee, omdat het voorkomt dat alle
gebruikers ook maar het meest eenvoudige commando kunnen
uitvoeren, zoals ls. Een betere lijst met
regels zou kunnen zijn:&prompt.root; ugidfw set 2 subject uid gebruiker1 object uid gebruiker2 mode n
&prompt.root; ugidfw set 3 subject uid gebruiker1 object gid gebruiker2 mode nHiermee wordt alle toegang, inclusief het tonen van
mapinhoud, tot de thuismap van
gebruiker2
ontzegd voor de gebruikersnaam gebruiker1.In plaats van gebruiker1, zou
kunnen worden opgegeven. Hierdoor worden dezelfde restricties
als hierboven actief voor alle gebruikers in plaats van voor
slechts één 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;.MAC-module ifoffMAC Interface Silencing
beleidsinstellingModulenaam: mac_ifoff.koKernelinstelling:
options MAC_IFOFFOpstartoptie: mac_ifoff_load="YES"De module &man.mac.ifoff.4; bestaat alleen om
netwerkinterfaces tijdens het draaien uit te schakelen en om te
verhinderen dat netwerkinterfaces tijdens het initiële
opstarten worden geactiveerd. Er hoeven geen labels ingesteld te
worden, noch is deze module afhankelijk van andere
MAC-modules.Het meeste beheer wordt gedaan met de
sysctl-tunables die hieronder zijn vermeld.security.mac.ifoff.lo_enabled schakelt
alle verkeer op het teruglusinterface (&man.lo.4;) in of uit.security.mac.ifoff.bpfrecv_enabled
schakelt alle verkeer op het Berkeley Packet Filterinterface
(&man.bpf.4;) in of uit.security.mac.ifoff.other_enabled
schakelt alle verkeer op alle andere interfaces in of uit.&man.mac.ifoff.4; wordt het meest gebruikt om netwerken te
monitoren in een omgeving waar netwerkverkeer niet toegestaan zou
moeten zijn tijdens het opstarten. Een ander voorgesteld gebruik
zou het schrijven van een script zijn dat security/aide gebruikt om automatisch
netwerkverkeer te blokkeren wanneer het nieuwe of veranderde
bestanden in beschermde mappen vindt.MAC-module portaclMAC poorttoegangscontrolelijst
beleidsinstellingModulenaam: mac_portacl.koKernelinstelling:
MAC_PORTACLOpstartoptie: mac_portacl_load="YES"De module &man.mac.portacl.4; wordt gebruikt om het binden aan
lokale TCP- en UDP-poorten
te begrenzen door een waaier aan
sysctl-variabelen te gebruiken. In essentie
maakt &man.mac.portacl.4; het mogelijk om
niet-root-gebruikers in staat te stellen om
aan gespecificeerde geprivilegieerde poorten te binden, dus
poorten lager dan 1024.Eenmaal geladen zal deze module het
MAC-beleid op alle sockets aanzetten. De
volgende tunables zijn beschikbaar:security.mac.portacl.enabled schakelt
het beleid volledig in of uit.security.mac.portacl.port_high stelt
het hoogste poortnummer in waarvoor &man.mac.portacl.4;
bescherming biedt.security.mac.portacl.suser_exempt sluit
de gebruiker root uit van dit beleid
wanneer het op een waarde anders dan nul wordt ingesteld.security.mac.portacl.rules specificeert
het eigenlijke beleid van mac_portacl; zie onder.Het eigenlijke beleid van mac_portacl,
zoals gespecificeerd in de sysctl
security.mac.portacl.rules, is een tekststring
van de vorm: regel[,regel,...] met zoveel
regels als nodig. Elke regel heeft de vorm:
idtype:id:protocol:poort. De parameter
idtype kan uid of
gid zijn en wordt gebruikt om de parameter
id als respectievelijk een gebruikers-id of
groeps-id te interpreteren. De parameter
protocol wordt gebruikt om te bepalen of de
regel op TCP of UDP moet
worden toegepast door de parameter op tcp of
udp in te stellen. De laatste parameter
poort is het poortnummer waaraan de
gespecificeerde gebruiker of groep zich mag binden.Aangezien de regelverzameling direct door de kernel wordt
geïnterpreteerd kunnen alleen numerieke waarden voor de
parameters voor de gebruikers-ID, groeps-ID, en de poort
gebruikt worden. Voor gebruikers, groepen, en
poortdiensten kunnen dus geen namen gebruikt worden.Standaard kunnen op &unix;-achtige systemen poorten lager dan
1024 alleen aan geprivilegieerde processen gebonden worden, dus
diegenen die als root draaien. Om
&man.mac.portacl.4; toe te laten staan om ongeprivilegieerde
processen aan poorten lager dan 1024 te laten binden moet deze
standaard &unix;-beperking uitgezet worden. Dit kan bereikt
worden door de &man.sysctl.8;-variabelen
net.inet.ip.portange.reservedlow en
net.inet.ip.portrange.reservedhigh op nul te
zetten.Zie de onderstaande voorbeelden of bekijk de handleidingpagina
voor &man.mac.portacl.4; voor meer informatie.VoorbeeldenDe volgende voorbeelden zouden de bovenstaande discussie wat
moeten toelichten:&prompt.root; sysctl security.mac.portacl.port_high=1023
&prompt.root; sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0Eerst wordt &man.mac.portacl.4; ingesteld om de standaard
geprivilegieerde poorten te dekken en worden de normale
bindbeperkingen van &unix; uitgeschakeld.&prompt.root; sysctl security.mac.portacl.suser_exempt=1De gebruiker root zou niet beperkt
moeten worden door dit beleid, stel
security.mac.portacl.suser_exempt dus in op
een waarde anders dan nul. De module &man.mac.portacl.4; is nu
ingesteld om zich op de zelfde manier te gedragen als
&unix;-achtige systemen zich standaard gedragen.&prompt.root; sysctl security.mac.portacl.rules=uid:80:tcp:80Sta de gebruiker met UID 80 (normaliter
de gebruiker www) toe om zich aan poort 80
te binden. Dit kan gebruikt worden om de gebruiker
www toe te staan een webserver te draaien
zonder ooit root-rechten te hebben.&prompt.root; sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995Sta de gebruiker met UID 1001 om zich aan
de TCP-poorten 110 (pop3) en
995 (pop3s) te binden. Dit staat deze gebruiker
toe om een server te starten die verbindingen accepteert op
poorten 110 en 995.MAC-module partitionMAC procespartitionering
beleidsinstellingModulenaam: mac_partition.koKernelinstelling:
options MAC_PARTITIONOpstartoptie:
mac_partition_load="YES"Het beleid &man.mac.partition.4; plaatst processen in
specifieke partities gebaseerd op hun
MAC-label. Zie dit als een speciaal soort
&man.jail.8;, hoewel dit nauwelijks een waardige vergelijking is.Dit is één module die aan het bestand
&man.loader.conf.5; dient te worden toegevoegd zodat het het
beleid tijdens het opstartproces laadt en aanzet.De meeste configuratie van dit beleid wordt gedaan met het
gereedschap &man.setpmac.8;, wat hieronder zal worden uitgelegd.
De volgende sysctl-tunable is beschikbaar voor
dit beleid:security.mac.partition.enabled zet het
afdwingen van MAC-procespartities aan.Wanneer dit beleid aanstaat, mogen gebruikers alleen hun eigen
processen zien, en elke andere in hun partitie, maar mogen niet
met gereedschappen buiten deze partitie werken. Bijvoorbeeld, een
gebruiker in de klasse insecure heeft geen
toegang tot het commando top noch tot vele
andere commando's die een proces moeten draaien.Gebruik het gereedschap setpmac om
gereedschappen in te stellen of ze in een partitielabel te
plaatsen:&prompt.root; setpmac partition/13 topDit zal het commando top toevoegen aan het
label dat voor gebruikers in de klasse insecure
gebruikt wordt. Merk op dat alle processen gestart door
gebruikers in de klasse insecure in het label
partition/13 zullen blijven.VoorbeeldenHet volgende commando laat de partitielabel en de
proceslijst zien:&prompt.root; ps ZaxHet volgende commando staat toe om het procespartitielabel
van een andere gebruiker en de momenteel draaiende processen van
die gebruiker te zien:&prompt.root; ps -ZU trhodesGebruikers kunnen processen in het label van
root zien tenzij het beleid
&man.mac.seeotheruids.4; is geladen.Een echte vakmansimplementatie zou alle diensten in
/etc/rc.conf uitzetten en deze door een
script met de juiste labeling laten starten.De volgende beleiden ondersteunen integerinstellingen in
plaats van de drie standaardlabels die aangeboden worden.
Deze opties, inclusief hun beperkingen, worden verder
uitgelegd in de handleidingpagina's van de modules.MAC-module Multi-Level SecurityMAC meerlaagse beveiliging
beleidsinstellingModulenaam: mac_mls.koKernelinstelling:
options MAC_MLSOpstartoptie: mac_mls_load="YES"Het beleid &man.mac.mls.4; beheert toegang tussen subjecten en
objecten in het systeem door een strikt beleid voor
informatiestromen af te dwingen.In MLS-omgevingen wordt een
toestemming-niveau ingesteld in het label van elk
subject of object, samen met compartimenten. Aangezien deze
toestemmings- of zinnigheidsniveaus getallen groter dan zesduizend
kunnen bereiken; zou het voor elke systeembeheerder een
afschrikwekkende taak zijn om elk subject of object grondig te
configureren. Gelukkig worden er al drie
kant-en-klare bij dit beleid geleverd.Deze labels zijn mls/low,
mls/equal en mls/high.
Aangezien deze labels uitgebreid in de handleidingpagina worden
beschreven, worden ze hier slechts kort beschreven:Het label mls/low bevat een lage
configuratie welke het toestaat om door alle andere objecten
te worden gedomineerd. Alles dat met
mls/low is gelabeld heeft een laag
toestemmingsniveau en heeft geen toegang tot informatie van
een hoger niveau. Ook voorkomt dit label dat objecten van een
hoger toestemmingsniveau informatie naar hen schrijven of aan
hen doorgeven.Het label mls/equal dient geplaatst te
worden op objecten die geacht te zijn uitgesloten van het
beleid.Het label mls/high is het hoogst
mogelijke toestemmingsniveau. Objecten waaraan dit label is
toegekend zijn dominant over alle andere objecten in het
systeem; ze mogen echter geen informatie lekken naar objecten
van een lagere klasse.MLS biedt:Een hiërarchisch beveiligingsniveau met een
verzameling niet-hiërarchische categoriën;Vaste regels: niet naar boven lezen, niet naar beneden
schrijven (een subject kan leestoegang hebben naar objecten op
zijn eigen niveau of daaronder, maar niet daarboven. Evenzo
kan een subject schrijftoegang hebben naar objecten op zijn
eigen niveau of daarboven maar niet daaronder.);Geheimhouding (voorkomt ongeschikte openbaarmaking van
gegevens);Een basis voor het ontwerp van systemen die gelijktijdig
gegevens op verschillende gevoeligheidsniveaus behandelen
(zonder informatie tussen geheim en vertrouwelijk te lekken).De volgende sysctl-tunables zijn
beschikbaar voor de configuratie van speciale diensten en
interfaces:security.mac.mls.enabled wordt gebruikt
om het MLS-beleid in en uit te schakelen.security.mac.mls.ptys_equal labelt alle
&man.pty.4;-apparaten als mls/equal wanneer
ze worden aangemaakt.security.mac.mls.revocation_enabled
wordt gebruikt om toegang tot objecten in te trekken nadat hun
label in die van een lagere graad verandert.security.mac.mls.max_compartments wordt
gebruikt om het maximaal aantal compartimentniveaus met
objecten in te stellen; in feite het maximale
compartimentnummer dat op een systeem is toegestaan.Het commando &man.setfmac.8; kan gebruikt worden om de
MLS-labels te manipuleren. Gebruik het
volgende commando om een label aan een object toe te kennen:&prompt.root; setfmac mls/5 testGebruik het volgende commando om het
MLS-label voor het bestand
test te verkrijgen:&prompt.root; getfmac testDit is een samenvatting van de mogelijkheden van het beleid
MLS. Een andere manier is om een
meesterbeleidsbestand in /etc aan te maken dat de
MLS-informatie bevat en om dat bestand aan het
commando setfmac te geven. Deze methode wordt
uitgelegd nadat alle beleiden zijn behandeld.Verplichte Gevoeligheid plannenMet de beleidsmodule voor meerlaagse beveiliging plant een
beheerder het beheren van gevoelige informatiestromen.
Standaard zet het systeem met zijn natuur van lezen naar boven
blokkeren en schrijven naar beneden blokkeren alles in een lage
toestand. Alles is beschikbaar en een beheerder verandert dit
langzaam tijdens de configuratiefase; waarbij de
vertrouwelijkheid van de informatie toeneemt.Buiten de bovengenoemde drie basisopties voor labels, kan
een beheerder gebruikers en groepen indelen als nodig om de
informatiestroom tussen hun te blokkeren. Het is misschien
gemakkelijker om naar de informatie te kijken in
toestemmingsniveaus waarvoor bekende woorden bestaan, zoals
Vertrouwelijk, Geheim en
Strikt Geheim. Sommige beheerders zullen
verschillende groepen aanmaken gebaseerd op verschillende
projecten. Ongeacht de classificatiemethode moet er een goed
overwogen plan bestaan voordat zo'n berperkend beleid wordt
geïmplementeerd.Wat voorbeeldsituaties voor deze beveiligingsbeleidsmodule
kunnen een e-commerce webserver, een bestandsserver die kritieke
bedrijfsinformatie, en omgevingen van financiële
instellingen zijn. De meest onwaarschijnlijke plaats zou een
persoonlijk werkstation met slechts twee of drie gebruikers
zijn.MAC-module BibaMAC Biba integriteit
beleidsinstellingModulenaam: mac_biba.koKernelinstelling: options MAC_BIBAOpstartoptie: mac_biba_load="YES"De module &man.mac.biba.4; laadt het beleid
MAC Biba. Dit beleid werkt vaak zoals dat van
MLS behalve dat de regels voor de
informatiestroom lichtelijk zijn omgedraaid. Dit is gezegd om de
neerwaartse stroom van gevoelige informatie te voorkomen terwijl
het beleid MLS de opwaartse stroom van
gevoelige informatie voorkomt; veel van deze sectie is dus op
beide beleiden toepasbaar.In Biba-omgevingen wordt een integriteits-label
op elk subject of object ingesteld. Deze labels bestaan uit
hiërarchische graden, en niet-hiërarchische componenten.
Een graad van een object of subject stijgt samen met de
integriteit.Ondersteunde labels zijn biba/low,
biba/equal, en biba/high;
zoals hieronder uitgelegd:Het label biba/low wordt gezien als de
laagste integriteit die een object of subject kan hebben. Dit
instellen op objecten of subjecten zal hun schrijftoegang tot
objecten of subjecten die als hoog zijn gemarkeerd blokkeren.
Ze hebben echter nog steeds leestoegang.Het label biba/equal dient alleen
geplaatst te worden op objecten die geacht te zijn uitgesloten
van het beleid.Het label biba/high staat schrijven
naar objecten met een lager label toe maar sluit het lezen van
dat object uit. Het wordt aangeraden om dit label te plaatsen
op objecten die de integriteit van het gehele systeem
beïnvloeden.Biba biedt:Hiërarchische integriteitsniveaus met een verzameling
niet-hiërarchische integriteitscategoriën;Vaste regels: niet naar boven schrijven, niet naar beneden
lezen (tegenovergestelde van MLS). Een
subject kan schrijftoegang hebben naar objecten op hetzelfde
niveau of daaronder, maar niet daarboven. Evenzo kan een
subject leestoegang naar objecten op hetzelfde niveau of
daarboven hebben, maar niet daaronder;Integriteit (voorkomt oneigenlijk wijzigen van gegevens);Integriteitsniveaus (in plaats van de gevoeligheidsniveaus
van MLS)De volgende sysctl-tunables kunnen gebruikt
worden om het Biba-beleid te manipuleren.security.mac.biba.enabled kan gebruikt
worden om het afdwingen van het Biba-beleid op de doelmachine
aan en uit te zetten.security.mac.biba.ptys_equal kan
gebruikt worden om het Biba-beleid op &man.pty.4;-apparaten
uit te zetten.security.mac.biba.revocation_enabled
dwingt het herroepen van toegang tot objecten af als het label
is veranderd om het subject te domineren.Gebruik de commando's setfmac en
getfmac om de instellingen van het Biba-beleid
op systeemobjecten te benaderen:&prompt.root; setfmac biba/low test
&prompt.root; getfmac test
test: biba/lowVerplichte Integriteit plannenIntegriteit, anders dan gevoeligheid, garandeert dat de
informatie nooit door onvertrouwde gebruikers zal worden
gemanipuleerd. Dit geldt ook voor informatie die tussen
subjecten, objecten, of beiden wordt doorgegeven. Het verzekert
dat gebruikers alleen de informatie kunnen wijzigen en in
sommige gevallen zelfs benaderen die ze expliciet nodig hebben.De beveiligingsbeleidsmodule &man.mac.biba.4; staat een
beheerder in staat om te bepalen welke bestanden en programma's
een gebruiker of gebruikers mogen zien en draaien terwijl het
verzekert dat de programma's en bestanden vrij zijn van
dreigingen en vertrouwt zijn door het systeem voor die gebruiker
of groep van gebruikers.Tijdens de initiële planningsfase moet een beheerder
bereid zijn om gebruikers in gradaties, niveaus, en gebieden in
te delen. Gebruikers zal toegang tot niet alleen gegevens maar
ook tot programma's en hulpmiddelen ontzegt worden zowel voordat
en nadat ze beginnen. Het systeem zal standaard een hoog label
instellen nadat deze beleidsmodule is ingeschakeld, en het is
aan de beheerder om de verschillende gradaties en niveaus voor
gebruikers in te stellen. In plaats van toestemmingsniveaus
zoals boven beschreven te gebruiken, kan een goede
planningsmethode onderwerpen bevatten. Bijvoorbeeld, geef
alleen ontwikkelaars veranderingstoegang tot het
broncoderepository, de broncodecompiler, en andere
ontwikkelgereedschappen. Andere gebruikers zouden in andere
groepen zoals testers, ontwerpers, of gewone gebruikers worden
ingedeeld en zouden alleen leestoegang hebben.Met zijn natuurlijke beveiligingsbeheer kan een subject van
lagere integriteit niet schijven naar een subject van hogere
integriteit; een subject van hogere integriteit kan geen subject
van lagere integriteit observeren of lezen. Een label op de
laagst mogelijke graad instellen kan het ontoegankelijk voor
subjecten maken. Sommige succesvolle omgevingen voor deze
beveiligingsbeheermodule zijn een beperkte webserver, een
ontwikkel- en testmachine, en broncoderepositories. Minder
nuttige implementaties zouden een persoonlijk werkstation, een
machine gebruikt als router, of een netwerkfirewall zijn.MAC-module LOMACMAC LOMACModulenaam: mac_lomac.koKernelinstelling: options MAC_LOMACOpstartoptie: mac_lomac_load="YES"In tegenstelling tot het beleid MAC Biba,
staat het beleid &man.mac.lomac.4; toegang tot objecten van lagere
integriteit slechts toe nadat het integriteitsniveau is verlaagt
om de integriteitsregels niet te verstoren.De MAC-versie van het
laagwatermarkeringsintegreitsbeleid, niet te verwarren met de
oudere implementatie van &man.lomac.4;, werkt bijna hetzelfde als
Biba maar met de uitzondering dat er drijvende labels worden
gebruikt om subjectdegradatie via een hulpcompartiment met graden
te ondersteunen. Dit tweede compartiment heeft de vorm
[hulpgraad]. Wanneer een lomac-beleid met een
hulpgraad wordt toegekend, dient het er ongeveer uit te zien als:
lomac/10[2] waar het getal twee (2) de
hulpgraad is.Het beleid MAC LOMAC berust op het overal
labelen van alle systeemobjecten met integriteitslabels, waardoor
subjecten wordt toegestaan om te lezen van objecten van lage
integriteit en om daarna het label op subject te degraderen om
toekomstig schrijven naar objecten van hoge integriteit te
voorkomen. Dit is de hierboven besproken optie
[hulpgraad], dus biedt het beleid grotere
compatibiliteit en vereist het minder initiële configuratie
dan Biba.VoorbeeldenNet zoals bij de beleiden Biba en MLS
kunnen de commando's setfmac en
setpmac gebruikt worden om labels op
systeemobjecten te plaatsen:&prompt.root; setfmac /usr/home/trhodes lomac/high[low]
&prompt.root; getfmac /usr/home/trhodes lomac/high[low]Merk op dat de hulpgraad hier low is, dit
is een mogelijkheid die alleen door het beleid
MAC LOMAC wordt geboden.Nagios in een MAC-jailNagios in een MAC-jailDe volgende demonstratie zal een veilige omgeving
implementeren door verschillende MAC-modules te
gebruiken met juist ingestelde beleiden. Dit is slechts een
test en dient niet gezien te worden als het volledige antwoord op
de beveiligingszorgen van iedereen. Gewoon een beleid
implementeren en het verder negeren werkt nooit en kan rampzalig
zijn in een productieomgeving.Voordat met dit proces wordt begonnen, moet de optie
multilabel zijn geactiveerd op elk
bestandssysteem zoals vermeld aan het begin van dit hoofdstuk.
Nalatigheid zal in fouten resulteren. Zorg er ook voor dat de
ports net-mgmt/nagios-plugins,
net-mgmt/nagios, en www/apache22 allemaal
geïnstalleerde en geconfigureerd zijn en correct werken.Gebruikersklasse insecure makenBegin de procedure door de volgende gebruikersklasse toe te
voegen aan het bestand /etc/login.conf: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=biba/10(10-10):Voeg de volgende regel toe aan de standaard
gebruikersklasse::label=biba/high:Wanneer dit voltooid is, moet het volgende commando gedraaid
worden om de database te herbouwen:&prompt.root; cap_mkdb /etc/login.confOpstartinstellingenStart nog niet opnieuw op, voeg alleen de volgende regels
toe aan /boot/loader.conf zodat de
benodigde modules worden geladen tijdens systeeminitialisatie:mac_biba_load="YES"
mac_seeotheruids_load="YES"Gebruikers instellenStel de gebruiker root in op de
standaardklasse met:&prompt.root; pw usermod root -L defaultAlle gebruikersaccounts die geen root
of systeemgebruikers zijn hebben nu een aanmeldklasse nodig. De
aanmeldklasse is nodig om te voorkomen dat gebruikers geen
toegang hebben tot gewone commando's als &man.vi.1;. Het
volgende sh-script zou moeten werken:&prompt.root; for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \/etc/passwd`; do pw usermod $x -L default; done;Laat de gebruikers nagios en
www in de klasse insecure vallen:&prompt.root; pw usermod nagios -L insecure&prompt.root; pw usermod www -L insecureHet contextbestand aanmakenNu dient een contextbestand aangemaakt te worden; het
volgende voorbeeld dient geplaatst te worden in
/etc/policy.contexts.# Dit is het standaard-BIBA-beleid voor dit systeem.
# Systeem:
/var/run biba/equal
/var/run/* biba/equal
/dev biba/equal
/dev/* biba/equal
/var biba/equal
/var/spool biba/equal
/var/spool/* biba/equal
/var/log biba/equal
/var/log/* biba/equal
/tmp biba/equal
/tmp/* biba/equal
/var/tmp biba/equal
/var/tmp/* biba/equal
/var/spool/mqueue biba/equal
/var/spool/clientmqueue biba/equal
#Voor Nagios:
/usr/local/etc/nagios
/usr/local/etc/nagios/* biba/10
/var/spool/nagios biba/10
/var/spool/nagios/* biba/10
#Voor Apache:
/usr/local/etc/apache biba/10
/usr/local/etc/apache/* biba/10Dit beleid zal beveiliging afdwingen door beperkingen aan de
informatiestroom te stellen. In deze specifieke configuratie
mogen gebruikers, inclusief root, nooit
toegang hebben tot Nagios.
Instellingenbestanden en processen die deel zijn van
Nagios zullen geheel in zichzelf
of in een jail zitten.Dit bestand kan nu in ons systeem worden gelezen door ons
systeem door het volgende commando uit te voeren:&prompt.root; setfsmac -ef /etc/policy.contexts /
&prompt.root; setfsmac -ef /etc/policy.contexts /De bovenstaande indeling van het bestandssysteem kan
afhankelijk van de omgeving verschillen; het moet echter op
elk bestandssysteem gedraaid worden.Het bestand /etc/mac.conf dient als
volgt in de hoofdsectie gewijzigd te worden:default_labels file ?biba
default_labels ifnet ?biba
default_labels process ?biba
default_labels socket ?bibaHet netwerk activerenVoeg de volgende regel toe aan
/boot/loader.conf:security.mac.biba.trust_all_interfaces=1En voeg het volgende toe aan de instellingen van de
netwerkkaart opgeslagen in rc.conf. Als de
primaire Internetconfiguratie via DHCP wordt
gedaan, kan het nodig zijn om dit handmatig te configureren
telkens nadat het systeem is opgestart:maclabel biba/equalDe configuratie testenMAC-configuratie testenControleer dat de webserver en
Nagios niet tijdens de
systeeminitialisatie worden gestart, en start opnieuw op.
Controleer dat de gebruiker root geen enkel
bestand in de instellingenmap van
Nagios kan benaderen. Als
root het commando &man.ls.1; op
/var/spool/nagios kan uitvoeren, is er iets
verkeerd. Anders zou er een fout Permission
denied teruggegeven moeten worden.Als alles er goed uitziet, kunnen
Nagios,
Apache, en
Sendmail nu gestart worden op een
manier die past in het beveiligingsbeleid. De volgende
commando's zorgen hiervoor:&prompt.root; cd /etc/mail &↦ make stop && \
setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \
setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestartControleer nogmaals om er zeker van te zijn dat alles juist
werkt. Indien niet, controleer dan de logbestanden of de
foutmeldingen. Gebruik het hulpprogramma &man.sysctl.8; om de
beveiligingsbeleidsmodule &man.mac.biba.4; uit te schakelen en
probeer om alles opnieuw op te starten, zoals gewoonlijk.De gebruiker root kan zonder angst de
afgedwongen beveiliging veranderen en de instellingenbestanden
bewerken. Het volgende commando staat toe om het
beveiligingsbeleid naar een lagere graad te degraderen voor
een nieuw voortgebrachte shell:&prompt.root; setpmac biba/10 cshOm te voorkomen dat dit gebeurt, kan de gebruiker via
&man.login.conf.5; in een bereik worden gedwongen. Als
&man.setpmac.8; probeert om een commando buiten het bereik van
het compartiment te draaien, zal er een fout worden
teruggegeven en wordt het commando niet uitgevoerd. Zet in
dit geval root op biba/high(high-high).Gebruikers afsluitenDit voorbeeld gaat over een relatief klein opslagsysteem met
minder dan vijftig gebruikers. Gebruikers kunnen zich aanmelden,
en mogen zowel gegevens opslaan als bronnen benaderen.Voor dit scenario kunnen &man.mac.bsdextended.4; gecombineerd
met &man.mac.seeotheruids.4; naast elkaar bestaan en zowel toegang
tot systeemobjecten als tot gebruikersprocessen ontzeggen.Begin door de volgende regel aan
/boot/loader.conf toe te voegen:mac_seeotheruids_load="YES"Het beveiligingsbeleidsmodule &man.mac.bsdextended.4; kan door
volgende variabele in rc.conf geactiveerd worden:ugidfw_enable="YES"De standaardregels in /etc/rc.bsdextended
zullen tijdens de systeeminitialisatie worden geladen; het kan
echter nodig zijn om de standaardregels te wijzigen. Aangezien
van deze machine alleen verwacht wordt dat het gebruikers bedient,
kunnen alle regels uitgecommentarieerd blijven behalve de laatste
twee. Deze forceren het standaard laden van systeemobjecten die
eigendom zijn van gebruikers.Voeg de benodigde gebruikers toe aan deze machine en start
opnieuw op. Probeer, voor testdoeleinden, u aan te melden als een
andere gebruiker over twee consoles. Draai het commando
ps aux om te zien of processen van andere
gebruikers zichtbaar zijn. Probeer om &man.ls.1; te draaien op de
thuismap van een andere gebruiker, dit zou moeten mislukken.Probeer niet te testen met de gebruiker
root tenzij de specifieke
sysctl's om supergebruikertoegang te blokkeren
zijn aangepast.Wanneer een nieuwe gebruiker is toegevoegd, zit de
&man.mac.bsdextended.4;-regel van die gebruiker niet in de lijst
van regelverzamelingen. Om de regelverzameling snel bij te
werken, kan simpelweg de beveiligingsbeleidsmodule worden
herladen met de gereedschappen &man.kldunload.8; en
&man.kldload.8;.Problemen oplossen met het MAC-raamwerkMAC-problemen oplossenTijdens de ontwikkeling hebben een aantal gebruikers problemen
aangegeven met normale instellingen. Hieronder worden een aantal
van die problemen beschreven:De optie kan niet ingeschakeld
worden op /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 òfwel onjuiste documentatie òfwel
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 enkele-gebruikersmodus.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 rootbestandssysteem.X11-server start niet na MACNa 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 klasse
default en herbouw de database met het
commando cap_mkdb. 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-applicatie, 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
.login_confBij het wisselen van de gebruiker 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 heeft, dan kan
gebruiker root, die een label
heeft, de thuismap van
joe niet zien. Dit gebeurt zonder
rekening te houden met de mogelijkheid dat
root met su de
identiteit van joe heeft aangenomen. In
dit scenario staat het integriteitsmodel van Biba niet toe dat
root objecten kan zien van een lager
integriteitsniveau.De gebruikersnaam root is
stuk!In normale, of zelfs in enkelegebruikersmodus, 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,
òfwel door &man.sysctl.8; òf doordat de
beleidsmodule niet meer is geladen. Als de beleidseenheid
(tijdelijk) is uitgeschakeld dan moet de database met
aanmeldmogelijkheden 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 bestand of de database master.passwd.
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 gebruikersinformatie gelezen door het systeem en wordt
de toegang geblokkeerd omdat het bestand het nieuwe label erft.
Zet het beleid uit door middel van &man.sysctl.8; en alles zou
weer normaal moeten zijn.