Een 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 FreeBSD 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
multilabel
meegegeven worden aan
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.
Vrijwel alle aspecten voor het instellen van labelbeleid worden uitgevoerd met basissysteemprogramma's. Die commando's bieden een eenvoudige interface voor object- of subjectinstellingen of de manipulatie en verificatie van de instellingen.
Alle instellingen kunnen gemaakt worden met de
hulpprogramma's setfmac(8) en 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:
#
setfmac biba/high test
Als 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 chmod(1) en 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. [9] De systeembeheerder kan de volgende commando's gebruiken om dit probleem te voorkomen:
#
setfmac biba/high test
Permission denied
#
setpmac biba/low setfmac biba/high test
#
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
.
Met de beleidsmodules mac_biba(4), mac_mls(4) en 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.
Dit zijn de labels met numerieke graden die gebruikt
worden voor
vergelijking:afdeling+afdeling
.
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 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:
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.
Labels kunnen ook ingesteld worden op netwerkinterfaces om
te assisteren bij het controleren van het stromen van gegevens
over het netwerk. In alle gevallen werken ze op dezelfde
wijze als het beleid werkt ten aanzien van objecten.
Gebruikers met bijvoorbeeld een hoge instelling in
biba
krijgen geen toegang tot interfaces
met een laag label.
Het maclabel
kan meegegeven worden aan
ifconfig
als het
MAC-label op netwerkinterfaces wordt
ingesteld:
#
ifconfig bge0 maclabel biba/equal
In het bovenstaande voorbeeld wordt het
MAC-label biba/equal
ingesteld op de interface 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
equal
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.
Standaard gebruikt een systeem de optie
singlelabel
. 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 singlelabel
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 multilabel
gebruiken in hun beveiligingsmodel.
De optie multilabel
staat ieder subject of
object toe om zijn eigen onafhankelijke
MAC-label te hebben in plaats van de
standaardoptie singlelabel
, die maar
één label toestaat op een hele partitie. De
labelopties multilabel
en
single
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 multilabel
niet eens
ingesteld te worden. Stel er is de volgende situatie en
beveiligingsmodel:
FreeBSD-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 multilabel
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 multilabel
nooit verplicht.
Hieronder vallen de beleidseenheden
seeotheruids
, portacl
en
partition
.
Bij gebruik van multilabel
voor een
partitie en het neerzetten van een beveiligingsmodel gebaseerd
op multilabel
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 multilabel
in
op de bestandssystemen om meerdere labels te kunnen krijgen.
Dit kan alleen uitgevoerd worden in enkele gebruikersmodus:
#
tunefs -l enable /
Dit is geen criterium voor het wisselbestandssysteem.
Sommige gebruikers hebben problemen ondervonden met het
instellen van de vlag multilabel
op de
rootpartitie. Als dit het geval is, kijk dan naar Paragraaf 17.17, “Problemen oplossen met het MAC-raamwerk” van dit hoofdstuk.
[9] 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.