doc/hu_HU.ISO8859-2/books/handbook/mac/chapter.xml
2013-11-07 15:39:28 +00:00

2947 lines
93 KiB
XML

<?xml version="1.0" encoding="iso-8859-2"?>
<!--
The FreeBSD Documentation Project
$FreeBSD$
-->
<!-- The FreeBSD Hungarian Documentation Project
Translated by: PALI, Gabor <pgj@FreeBSD.org>
%SOURCE% en_US.ISO8859-1/books/handbook/mac/chapter.xml
%SRCID% 1.75
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="mac" xml:lang="hu">
<info><title>Kötelező
hozzáférés-vezérlés (MAC)</title>
<authorgroup>
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Írta: </contrib></author>
</authorgroup>
</info>
<sect1 xml:id="mac-synopsis">
<title>Áttekintés</title>
<indexterm><primary>MAC</primary></indexterm>
<indexterm>
<primary>kötelező
hozzáférés-vezérlés</primary>
<see>MAC</see>
</indexterm>
<para>A &os;&nbsp;5.X változata új biztonsági
bővítéseket vett át a TrustedBSD
projektből a &posix;.1e nyomán. A két
legjelentősebb új biztonsági mechanizmus az
állományrendszerekben megtalálható
hozzáférés-vezérlési
listák (Access Control List, <acronym>ACL</acronym>)
és a kötelező
hozzáférés-vezérlés (Mandatory
Access Control, <acronym>MAC</acronym>). A kötelező
hozzáférés-vezérlés
segítségével olyan új
hozzáférés-vezérlési modulok
tölthetőek be, amelyek új biztonsági
házirendeket implementálnak. Némelyek
közülük védelmet nyújtanak a rendszer
egy szűk részének, amivel így egy adott
szolgáltatást bástyáznak alá.
Mások minden részletre kiterjedő
címkézett biztonságot szolgáltatnak
alanyokon és objektumokon keresztül. A
meghatározás <quote>kötelező</quote>
része onnan fakad, hogy a szabályok
betartatását a rendszergazdák és a
rendszer végzik, és nem bízzák a
felhasználókra, ahogy azt a System V
típusú rendszerekben a szabványos
állományokra és <acronym>IPC</acronym>-re
érvényes engedélyeken keresztül a
tetszés szerinti
hozzáférés-vezérlés
(Discretionary Access Control, <acronym>DAC</acronym>)
teszi.</para>
<para>Ebben a fejezetben a kötelező
hozzáférés-vezérlést
övező keretrendszerre (<acronym>MAC</acronym> Framework)
és a különböző biztonsági
házirendeket megvalósító,
beilleszthető modulokra fogunk
összpontosítani.</para>
<para>A fejezet elolvasása során
megismerjük:</para>
<itemizedlist>
<listitem>
<para>hogy a &os; jelen pillanatban milyen modulokat tartalmaz a
<acronym>MAC</acronym> rendszeren belül és milyen
mechanizmusok tartoznak hozzájuk;</para>
</listitem>
<listitem>
<para>hogy a <acronym>MAC</acronym> biztonsági
házirendjeit képező modulok miket
valósítanak meg, valamint mi a
különbség a címkézett és
címkézetlen házirendek
között;</para>
</listitem>
<listitem>
<para>hogyan kell hatékonyan beállítani
és használni rendszerünkben a
<acronym>MAC</acronym> rendszert;</para>
</listitem>
<listitem>
<para>hogyan állítsuk be a <acronym>MAC</acronym>
rendszerben található különféle
biztonsági házirendeket képező
modulokat;</para>
</listitem>
<listitem>
<para>hogyan hozzunk létre a <acronym>MAC</acronym>
rendszer segítségével egy
biztonságosabb környezetet, amire
példákat is mutatunk;</para>
</listitem>
<listitem>
<para>hogyan teszteljük le a <acronym>MAC</acronym>
rendszer beállításait és
bizonyosodjunk meg működésének
helyességéről.</para>
</listitem>
</itemizedlist>
<para>A fejezet elolvasásához ajánlott:</para>
<itemizedlist>
<listitem>
<para>a &unix; és a &os; alapjainak ismerete (<xref linkend="basics"/>)</para>
</listitem>
<listitem>
<para>a rendszermag beállításának
és lefordításának ismerete (<xref linkend="kernelconfig"/>)</para>
</listitem>
<listitem>
<para>tisztában lenni az alapvető biztonsági
kérdésekkel és azok
hatásával a &os;-n belül (<xref linkend="security"/>)</para>
</listitem>
</itemizedlist>
<warning>
<para>Az itt ismertetésre kerülő
információk helytelen alkalmazása a
rendszer hozzáférhetőségének
teljes elvesztését, a felhasználók
bosszantását vagy az X11 által
felkínált lehetőségek
kirekesztését eredményezheti. Ami viszont
ennél is fontosabb, hogy a <acronym>MAC</acronym>
rendszerre nem úgy kell tekinteni, mint amitől a
rendszerünk tökéletesen
biztonságossá válik. A
<acronym>MAC</acronym> segítségével
csupán a meglevő biztonsági
házirendeket gyarapítjuk. A szilárd
biztonsági rutin és a rendszeres
ellenőrzések elvégzése
nélkül a rendszerünk valójában
sosem lesz teljesen biztonságos.</para>
<para>Hozzá kell tennünk, hogy a fejezetben bemutatott
példák tényleg csak példák.
Senkinek sem tanácsoljuk, hogy az itt említett
beállításokat egy éles rendszerre is
kiterjessze. A különböző biztonsági
modulok felépítése rengeteg
gondolkodást és próbálgatást
igényel. Aki nem érti meg az egész
működését, könnyen azon kaphatja
magát, hogy újra végig kell mennie a
rendszeren és egyenként be kell
állítania minden könyvtárat és
állományt.</para>
</warning>
<sect2>
<title>Amivel itt nem foglalkozunk</title>
<para>Ebben a fejezetben a <acronym>MAC</acronym> rendszerrel
kapcsolatban rengeteg biztonsági kérdéssel
foglalkozni fogunk. Az új <acronym>MAC</acronym>
biztonsági modulok kifejlesztését azonban
már nem érintjük. Számos olyan
biztonsági modul található a
<acronym>MAC</acronym> rendszerben, amelyek rendelkeznek az
új modulok kialakításához és
teszteléséhez szükséges
jellemzőkkel. Ilyenek többek közt a
&man.mac.test.4;, &man.mac.stub.4; és a &man.mac.none.4;.
Ezekről a biztonsági modulokról és az
általuk szolgáltatott mechnanizmusokról a
man oldalaik tudnak bővebb
tájékoztatást adni.</para>
</sect2>
</sect1>
<sect1 xml:id="mac-inline-glossary">
<title>A fejezet fontosabb fogalmai</title>
<para>A fejezet tartalmának kifejtéséhez
szükségünk lesz néhány fontosabb
alapfogalom tisztázására.
Segítségükkel vélhetően
sikerül eloszlatni a téma feldolgozása
során felmerülő
félreértéseket, illetve elkerülni az
új fogalmak és információk
váratlan felbukkanását.</para>
<itemizedlist>
<listitem>
<para><emphasis>alany</emphasis>: Alanynak tekintünk a
rendszerben minden olyan aktív egyedet, amely
információt áramoltat az
<emphasis>objektumok</emphasis>, tehát a
felhasználók, a processzorok, a rendszerben
futó programok stb. között. A &os;-ben
majdnem minden esetben a felhasználók egy
szálon keresztül vezérlik a futó
programokat.</para>
</listitem>
<listitem>
<para><emphasis>címke</emphasis>: A címke egy
olyan biztonsági tulajdonság, ami vonatkozhat
állományokra, könyvtárakra vagy a
rendszer más elemeire. Egy címke
tekinthető a bizalmasságot jelző
pecsétnek is: ha egy állományra
címkét teszünk, akkor benne megadjuk a
rá vonatkozó biztonsági jellemzőket,
és csak a hozzá hasonló biztonsági
beállításokkal rendelkező
állományok, felhasználók,
erőforrások stb. érhetik el. A
címkék jelentését és
értelmezését a házirendek
beállítása határozza meg:
míg egyes házirendek a címkéket
egy objektum sértetlenségének vagy
titkosságának tekintik, addig mások a
hozzáféréssel kapcsolatos
szabályokat rögzítik bennük.</para>
</listitem>
<listitem>
<para><emphasis>egycímkés</emphasis>:
Egycímkés esetről akkor
beszélünk, amikor az adat
áramlásának
szabályozására az egész
állományrendszer egyetlen címkét
alkalmaz. Ha ezt beállítjuk egy
állományrendszernél, de nem adjuk meg
vele együtt a <option>multilabel</option> opciót,
akkor az összes állományra ugyanaz a
címke érvényes.</para>
</listitem>
<listitem>
<para><emphasis>erős vízjel</emphasis>: Az erős
vízjel házirendje szerint a biztonsági
szint akkor növelhető, ha magasabb szintű
információkhoz akarunk hozzájutni. A
legtöbb esetben a folyamatok befejeződése
után visszaállítódik az eredeti
szint. A &os; <acronym>MAC</acronym> rendszere pillanatnyilag
ehhez nem tartalmaz házirendet, de a teljesség
kedvéért megadtuk ennek a
definícióját is.</para>
</listitem>
<listitem>
<para><emphasis>gyenge vízjel</emphasis>: A gyenge
vízjel házirendje szerint a biztonsági
szint csökkenthető az alacsonyabb szintű
információk elérése
érdekében. A legtöbb esetben a folyamatok
befejeződése után
visszaállítódik az eredeti szint. A
&os;-ben ezt a házirendet egyedül a
&man.mac.lomac.4; alkalmazza.</para>
</listitem>
<listitem>
<para><emphasis>házirend</emphasis>: Szabályok
olyan gyűjteménye, amely megadja, hogy
miként kell a célokat teljesíteni. Egy
<emphasis>házirend</emphasis> általában
az egyes elemek kezelését rögzíti.
Ebben a fejezetben a <emphasis>házirend</emphasis>
kifejezés alatt a <emphasis>biztonsági
házirendet</emphasis> értjük, tehát
olyan szabályok gyűjteményét,
amelyek az adatok és az információ
áramlását határozzák meg,
továbbá megadják, hogy
közülük ki mihez férhet
hozzá.</para>
</listitem>
<listitem>
<para><emphasis>kényesség</emphasis>:
Általában az <acronym>MLS</acronym>
tárgyalásakor kerül elő. Az
kényesség szintjével az adatok
fontosságát vagy titkosságát
szokták jelölni. A kényességi szint
növekedésével növekszik az adat
titkosságának vagy bizalmasságának
szintje.</para>
</listitem>
<listitem>
<para><emphasis>objektum</emphasis>: Objektum vagy
rendszerobjektum minden olyan egyed, amelyen
információ folyik keresztül az
<emphasis>alanyok</emphasis>
irányításával. Ezek lehetnek
többek közt könyvtárak,
állományok, mezők, képernyők,
billentyűzetek, a memória, mágneses
tárolóeszközök, nyomtatók vagy
bármilyen más
adattároló/hordozó eszköz. Az
objektumok alapvetően adattárolók vagy a
rendszer erőforrásai. Egy
<emphasis>objektum</emphasis> elérésén
gyakorlatilag az adatok elérését
értjük.</para>
</listitem>
<listitem>
<para><emphasis>rekesz</emphasis>: Egy rekeszbe soroljuk az
elrekeszteni vagy elkülöníteni
kívánt programok és adatok
összeségét, ahol a
felhasználók explicit módon
képesek hozzáférni a rendszer bizonyos
komponenseihez. Emellett a rekesz utalhat egy
tetszőleges csoportosításra is,
például munkacsoportra, osztályra,
projektre vagy témára. A rekeszek
használata elengedhetetlen a biztonsági
házirendek kialakításához.</para>
</listitem>
<listitem>
<para><emphasis>sértetlenség</emphasis>: A
sértetlenség, mint kulcsfogalom, az adatok
megbízhatóságának szintje.
Minél sértetlenebb az adat, annál
inkább tekinthetjük
megbízhatónak.</para>
</listitem>
<listitem>
<para><emphasis>szint</emphasis>: Egy biztonsági
tulajdonság megnövelt vagy lecsökkentett
beállítása. A szint
növekedésével együtt a
biztonság mértéke is
növekszik.</para>
</listitem>
<listitem>
<para><emphasis>többcímkés</emphasis>: A
<option>multilabel</option> vagyis
többcímkés jellemző az
állományrendszerek esetén fordulhat
elő, és a &man.tunefs.8; segédprogrammal
állítható be
egyfelhasználós módban vagy a rendszer
indítása során az &man.fstab.5;
állományon keresztül, esetleg egy új
állományrendszer létrehozásakor.
Ezzel a beállítással a rendszergazda
különféle <acronym>MAC</acronym>
címkéket rendelhet különböző
objektumokhoz. Ez a beállítás
természetesen csak olyan biztonsági modulok
esetén él, amelyek tudnak
címkézni.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="mac-initial">
<title>A MAC ismertetése</title>
<para>Az imént definiált új fogalmak
tükrében most nézzük meg, hogy a
<acronym>MAC</acronym> rendszer alkalmazásával
miként javíthatunk rendszerünk
biztonságán. A <acronym>MAC</acronym> rendszerhez
készített különböző
biztonsági modulok alkalmasak a hálózat
és az állományrendszerek
védelmére, valamint segítségükkel
megakadályozhatjuk, hogy a felhasználók
elérhessenek bizonyos portokat és socketeket stb. A
házirendeket formázó modulokat talán
együttesen tudjuk a leghatékonyabban alkalmazni,
és ha egyszerre több modul
betöltésével egy többrétegű
védelmi rendszert alakítunk ki. Ez nem ugyanaz,
mint a rendszer megerősítése, ahol a rendszer
összetevőit jellemző módon csak bizonyos
célok tekintetében edzzük meg. A
módszer egyedüli hátulütői a
többszörös állományrendszeri
címkékkel, a felhasználónként
beállítandó hálózati
eléréssel stb. járó
adminisztrációs költségek.</para>
<para>Ezek a hátrányok azonban eltörpülnek a
létrehozott rendszer tartósságával
szemben. Például, ha képesek vagyunk
megmondani, hogy az adott konfigurációban milyen
házirendek alkalmazására van
szükség, akkor ezzel az adminisztrációs
költségek visszaszoríthatóak. A
szükségtelen házirendek
eltávolításával még
növelhetjük is a rendszer
összteljesítményét, valamint az
így felkínált rugalmasságot. Egy
jó kialakításban figyelembe kell venni az
összes biztonsági előírást,
és hatékonyan megvalósítani ezeket a
rendszer által felajánlott
különféle biztonsági modulokkal.</para>
<para>Ezért tehát a <acronym>MAC</acronym>
lehetőségeit kihasználó rendszerekben
legalább annyit meg kell tudni oldani, hogy a
felhasználók ne változtathassák
kedvükre a biztonsági tulajdonságokat. Az
összes felhasználói segédprogramnak,
programnak és szkriptnek a kiválasztott
biztonsági modulokban szereplő
hozzáférési szabályokkal
kifeszített kereten belül kell mozognia. A
<acronym>MAC</acronym> totális
irányítása pedig a rendszergazda
kezében van.</para>
<para>A rendszergazda így egyedül csak a megfelelő
biztonsági modulok gondos
összeválogatásáért felelős.
Bizonyos környezetekben szükséges lehet a
hálózaton keresztüli
hozzáférések korlátozása is.
Ilyen esetekben a &man.mac.portacl.4;, &man.mac.ifoff.4; vagy a
&man.mac.biba.4; moduloktól érdemes elindulnunk.
Más esetekben az állományrendszerek
objektumainak bizalmasságát kell csupán
megőriznünk. Erre a célra a
&man.mac.bsdextended.4; és &man.mac.mls.4; modulok a
legalkalmasabbak.</para>
<para>A házirendekhez kapcsolódó
döntések a hálózati
beállítások alapján is
meghozhatóak. Elképzelhető, hogy csak bizonyos
felhasználók férhetnek hozzá az
&man.ssh.1; szolgáltatásain keresztül a
hálózathoz vagy az internethez. A
&man.mac.portacl.4; pontosan ilyen helyzetekben tud a
segítségünkre sietni. Mit tegyünk viszont
az állományrendszerek esetén? Vágjunk
el adott felhasználókat vagy csoportokat bizonyos
könyvtáraktól? Vagy korlátozzuk a
felhasználók vagy segédprogramok
hozzáférését adott
állományokhoz bizonyos objektumok bizalmassá
tételével?</para>
<para>Az állományrendszerek esetében az
objektumokat néhány felhasználó
elérheti, mások pedig nem. Például
egy nagyobb fejlesztőcsapat kisebb csoportokra
bontható. Az A projektben résztvevő
fejlesztők nem férhetnek hozzá a B projektben
dolgozó fejlesztők munkájához. Ellenben
szükségük lehet a C projekten
munkálkodó fejlesztők által
létrehozott objektumokra. Ez egy igen érdekes
helyzet. A <acronym>MAC</acronym> rendszer által
felkínált különböző
biztonsági modulokra építkezve azonban
könnyedén csoportokba tudjuk szervezni a
felhasználókat, és a megfelelő
területekhez az információ
kiszivárgása nélkül hozzá tudjuk
őket engedni.</para>
<para>Ennek következtében minden egyes biztonsági
modul a maga módján gondoskodik az egész
rendszer biztonságáról. A céljainknak
megfelelő modulokat egy jól átgondolt
biztonsági házirend alapján válasszuk
ki. Sok esetben az egész házirendet át kell
tekinteni és újra kell alkalmazni a rendszerben. A
<acronym>MAC</acronym> által felajánlott
különböző biztonsági modulok
megértése segít a rendszergazdáknak
megválasztani az adott helyzetben legjobban
alkalmazható házirendeket.</para>
<para>A &os; rendszermagja alapból nem tartalmazza a
<acronym>MAC</acronym> rendszert. Ezért a fejezetben
szereplő példák vagy az itt leírtak
kipróbálásához az alábbi
beállítást kell hozzátennünk a
rendszermag beállításait tartalmazó
állományhoz:</para>
<programlisting>options MAC</programlisting>
<para>Majd fordítsuk és telepítsük
újra a rendszermagot.</para>
<caution>
<para>Miközben a <acronym>MAC</acronym> rendszerhez
készült különböző modulok a
saját man oldalaik szerint igénylik a
beépítésüket, vigyázzunk
velük, mert ezzel a rendszerüket pillanatok alatt ki
tudjuk zárni a hálózatból és
így tovább. A <acronym>MAC</acronym> alapú
védelem felépítése leginkább
egy tűzfal
összeállításához
hasonlítható, ahol ugyanígy számolni
kell azzal, hogy egy óvatlan paranccsal
kizárhatjuk magunkat a rendszerből. Valamilyen
módon mindig próbáljunk gondoskodni a
rendszer előző állapotának
visszaállíthatóságáról,
és a <acronym>MAC</acronym> távoli
adminisztrációját mindig nagyfokú
körültekintéssel végezzük.</para>
</caution>
</sect1>
<sect1 xml:id="mac-understandlabel">
<title>Bővebben a MAC címkéiről</title>
<para>A <acronym>MAC</acronym>-címke egy olyan
biztonsági tulajdonság, amelyet a rendszerben
található alanyokhoz és objektumokhoz
rendelhetünk.</para>
<para>Egy címke beállításához a
felhasználónak pontosan ismernie kell, hogy ilyenkor
mi történik. Az objektumokhoz tartozó
tulajdonságok a betöltött moduloktól
függenek, és az egyes modulok eltérő
módon értelmezik ezeket a tulajdonságokat.
Ha a precíz megértésük
hiányában helytelenül állítjuk be
ezeket, vagy nem vagyunk képesek tisztázni a
velük járó következményeket, akkor
az a rendszerünk kiszámíthatatlan és
valószínűleg kedvezőtlen
viselkedését eredményezi.</para>
<para>A házirendek az objektumhoz rendelt biztonsági
címkéket a hozzáféréssel
kapcsolatos döntések meghozásában
használják fel. Bizonyos házirendek
esetében már maga a címke elegendő
információt tartalmaz a döntés
megformálásához. Máshol viszont a
címkék egy nagyobb szabályrendszer
részeként dolgozódnak fel stb.</para>
<para>Például, ha egy állományra
beállítjuk a <literal>biba/low</literal>
címkét, akkor az arra fog utalni, hogy a
címkét a Biba nevű biztonsági modul
kezeli és értéke <quote>low</quote>.</para>
<para>Az a néhány modul, amely a &os;-ben
támogatja a címkézés
lehetőségét, három speciális
címkét definiál előre. Ezek rendre a
<quote>low</quote> (alacsony), <quote>high</quote> (magas)
és <quote>equal</quote> (egyező) címkék.
Habár az egyes modulok esetén eltérő
módon képesek vezérelni a
hozzáférést, azt mindig biztosra
vehetjük, hogy a <quote>low</quote> a legalacsonyabb
érték, az <quote>equal</quote> címke
hatására az adott alanyt vagy objektumot
érintetlenül hagyják, és a
<quote>high</quote> értékű címke a Biba
és <acronym>MLS</acronym> modulok esetében a
legmagasabb beállítást jelenti.</para>
<para>Az egycímkés állományrendszerek
használata során az egyes objektumonkhoz csak
egyetlen címkét rendelhetünk hozzá.
Ezzel az egész rendszerben csak egyfajta engedélyt
alkalmazunk, ami sok esetben pontosan elegendő.
Létezik néhány különleges eset,
amikor az állományrendszerben levő alanyokhoz
vagy objektumokhoz egyszerre több címkét is
hozzá kell rendelnünk. Ilyenkor a
<option>multilabel</option> opciót kell átadnunk a
&man.tunefs.8; segédprogramnak.</para>
<para>A Biba és az <acronym>MLS</acronym> esetében
előfordulhat, hogy egy numerikus címkével
fogjuk jelölni a hierarchikus irányítás
pontos szintjét. A numerikus szintek
használatával tudjuk az információt
különböző csoportokba szétosztani vagy
elrendezni, például úgy, hogy csak az adott
szintű vagy a felette álló csoportok
számára engedélyezzük a
hozzáférést.</para>
<para>Az esetek többségében a
rendszergazdának csak egyetlen címkét kell
beállítania az egész
állományrendszerre.</para>
<para><emphasis>Hé, álljunk csak meg! Akkor ez
viszont pont olyan, mint a <acronym>DAC</acronym>! Én azt
hittem, hogy a <acronym>MAC</acronym> szigorúan a
rendszergazda kezébe adja az
irányítást.</emphasis> Ez az
állítás továbbra is fennáll,
mivel bizonyos értelemben a <systemitem class="username">root</systemitem> lesz
az, aki beállítja a házirendeket,
tehát ő mondja meg, hogy a felhasználók
milyen kategóriákba vagy
hozzáférési szintekbe sorolódnak.
Sajnos, sok biztonsági modul még magát a
<systemitem class="username">root</systemitem> felhasználót is
korlátozza. Az objektumok feletti
irányítás ilyenkor a csoportra száll,
de a <systemitem class="username">root</systemitem> bármikor visszavonhatja vagy
módosíthatja a beállításokat.
Ezzel a hierarchikus/engedély alapú modellel a Biba
és az <acronym>MLS</acronym> nevű házirendek
foglalkoznak.</para>
<sect2>
<title>A címkék
beállítása</title>
<para>A címkézéshez kapcsolódó
összes beállítást gyakorlatilag az
alapvető rendszerprogramokkal végezhetjük el.
Ezek a parancsok az objektumok és az alanyok
szabályozásához, valamint a
konfiguráció
módosításához és
ellenőrzéséhez adnak egy egyszerű
kezelőfelületet.</para>
<para>Az összes konfigurációs
beállítást a &man.setfmac.8; és
&man.setpmac.8; segédprogramokkal végezhetjük
el. A <command>setfmac</command>
segítségével a rendszerszintű
objektumokhoz tudunk hozzárendelni a
<acronym>MAC</acronym>-címkéket, míg a
<command>setpmac</command> paranccsal a rendszerben levő
alanyokhoz tudunk címkéket rendelni. Vegyük
például ezt:</para>
<screen>&prompt.root; <userinput>setfmac biba/high próba</userinput></screen>
<para>Amennyiben az iménti parancs hibátlanul
lefutott, visszakapjuk a paranccsort. Ezek a parancsok csak
olyankor maradnak nyugodtan, amikor semmilyen hiba nem
történt. Működésük
hasonló a &man.chmod.1; és &man.chown.8;
parancsokéhoz. Bizonyos esetekben <errorname>Permission
denied</errorname> (<errorname>A hozzáférés
nem engedélyezett</errorname>) hibát kapunk, ami
általában akkor bukkan fel, ha egy
korlátozott objektummal kapcsolatban
próbálunk meg címkét
beállítani vagy módosítani
<footnote>
<para>Más feltételek mellett másmilyen
hibák keletkezhetnek. Például, ha egy
olyan objektumot próbálunk
újracímkézni, amely nincs a
felhasználó birtokában, esetleg nem is
létezik vagy írásvédett.
Adódhat, hogy a kötelező házirend az
állomány, a program, vagy az új
címkeérték tulajdonságai miatt
nem fogja lehetővé tenni egy futó program
számára egy állomány
újracímkézését.
Nézzük erre egy példát: egy
kevésbé sértetlen
felhasználó megpróbálja
megváltoztatni egy sokkal sértetlenebb
állomány címkéjét. Vagy
egy kevésbé sértetlen
felhasználó sokkal sértetlenebbre
akarja állítani egy kevésbé
sértetlen állomány
címkéjét.</para>
</footnote>. A rendszergazda a következő paranccsal
tudja feloldani az ilyen helyzeteket:</para>
<screen>&prompt.root; <userinput>setfmac biba/high próba</userinput>
<errorname>Permission denied</errorname>
&prompt.root; <userinput>setpmac biba/low setfmac biba/high próba</userinput>
&prompt.root; <userinput>getfmac próba</userinput>
<replaceable>próba</replaceable>: biba/high</screen>
<para>Ahogy az itt tetten is érhető, a
<command>setpmac</command> használható a modul
beállításainak
felülbírálására úgy,
hogy a meghívott programban egy másik
címkét állít be. A
<command>getpmac</command> segédprogram
általában a <application>sendmail</application>hez
hasonló háttérben futó programok
esetében alkalmazható: ilyenkor a konkrét
parancs helyett a futó program
azonosítóját kell megadnunk, de
működése ugyanaz. Ha a
felhasználók a hatókörükön
túl levő állományokat
próbálnak meg módosítani, akkor a
betöltött modulok szabályainak megfelelően
a <function>mac_set_link</function> függvény
<errorname>Operation not permitted</errorname> (<errorname>A
művelet nem engedélyezett</errorname>) hibát
fog adni.</para>
<sect3>
<title>Gyakori címketípusok</title>
<para>A &man.mac.biba.4;, &man.mac.mls.4; és
&man.mac.lomac.4; moduloknál használhatunk
címkéket. Értékük lehet
<quote>high</quote>, <quote>equal</quote> vagy
<quote>low</quote>, melyek rövid magyarázata a
következő:</para>
<itemizedlist>
<listitem>
<para>A <literal>low</literal> címke az objektumra
vagy alanyra érvényes leggyengébb
beállítást jelenti. Az ilyen
címkéjű objektumok vagy alanyok nem
érhetik el a <quote>high</quote>
címkéjűeket.</para>
</listitem>
<listitem>
<para>Az <literal>equal</literal> címke
használható minden olyan objektum vagy alany
esetében, amelyeket ki akarunk vonni az adott
házirend hatálya alól.</para>
</listitem>
<listitem>
<para>A <literal>high</literal> címke adja az
objektumhoz vagy alanyhoz tartozó legerősebb
beállítást.</para>
</listitem>
</itemizedlist>
<para>Az egyes moduloktól függően ezek az
értékek az információ
áramoltatásának
különböző irányait
írhatják le. A megfelelő man oldalak
elolvasásával még jobban
megismerhetjük az egyes címketípusok
beállításának
jellegzetességeit.</para>
<sect4>
<title>A címkék
beállításáról
részletesebben</title>
<para>A numerikus osztályozó
címkék
<literal>összehasonlítás:rekesz+rekesz</literal>
alakban használatosak, tehát a</para>
<programlisting>biba/10:2+3+6(5:2+3-20:2+3+4+5+6)</programlisting>
<para>kifejezés így
értelmezhető:</para>
<para><quote>A Biba házirend
címkéje</quote>/<quote>10
osztály</quote> :<quote>2, 3 és 6
rekeszek</quote>: (<quote>5
osztály...</quote>)</para>
<para>Ebben a példában az első
osztály tekinthető <quote>valódi
osztálynak</quote>, amely a <quote>valódi
rekeszeket</quote> jelenti, a második osztály
egy alacsonyabb besorolás, míg az
utolsó egy magasabb szintű. A legtöbb
konfigurációban nem lesz
szükségünk ennyire összetett
beállításokra, noha képesek
vagyunk felírni ezeket.</para>
<para>Ha ezt kivetítjük a rendszer objektumaira,
akkor a rendszerben levő alanyokat illetően
csupán az aktuális osztály/rekeszek
számítanak, mivel a rendszerben és
hálózati csatolófelületeken
elérhető
hozzáférés-vezérlési
jogokat tükrözi.</para>
<para>Az alany-objektum párokban megadott
osztályzatok és rekeszek
használhatóak fel egy olyan kapcsolat
kiépítésére, amit
<quote>dominanciának</quote> nevezünk. Ilyenkor
egy alany ural egy objektumot, vagy egy objektum ural egy
alanyt, vagy egyikük sem uralja a másikat,
esetleg mind a kettő uralja egymást. A
<quote>kettős dominancia</quote> esete akkor forog
fenn, amikor a két címke megegyezik. A Biba
információáramoltatási
sajátosságaiból adódóan
jogunk van rekeszeket létrehozni, <quote>tudunk
kell</quote>, hogy ezek projekteknek feleltethetőek
meg, de az objektumok is rendelkezhetnek rekeszekkel. A
felhasználók ilyenkor csak úgy tudnak
elérni egyes objektumokat, ha az
<command>su</command> vagy a <command>setpmac</command>
használatával leszűkítik a
jogaikat egy olyan rekeszre, ahol már nem
érvényesülnek rájuk
korlátozások.</para>
</sect4>
</sect3>
<sect3>
<title>A felhasználók és
címkék kapcsolata</title>
<para>Maguknak a felhasználóknak is
szükségük van címkékre, mivel
csak ezek segítségével tudnak az
állományaik és programjaik megfelelő
módon együttműködni a rendszerben
érvényes biztonsági házirenddel.
Ezt a <filename>login.conf</filename>
állományban megadható
bejelentkezési osztályokkal
állíthatjuk be. Minden címkéket
használó modulban a
felhasználóknak is van
címkéjük.</para>
<para>Lentebb látható egy ilyen minta
bejegyzés, amely minden modulhoz tartalmaz
beállítást:</para>
<programlisting>default:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
:manpath=/usr/share/man /usr/local/man:\
:nologin=/usr/sbin/nologin:\
:cputime=1h30m:\
:datasize=8M:\
:vmemoryuse=100M:\
:stacksize=2M:\
:memorylocked=4M:\
:memoryuse=8M:\
:filesize=8M:\
:coredumpsize=8M:\
:openfiles=24:\
:maxproc=32:\
:priority=0:\
:requirehome:\
:passwordtime=91d:\
:umask=022:\
:ignoretime@:\
:label=partition/13,mls/5,biba/10(5-15),lomac/10[2]:</programlisting>
<para>Itt a <literal>label</literal> opciót
használtuk a felhasználói
osztályhoz tartozó alapértelmezett
címkék
beállításához, amit majd a
<acronym>MAC</acronym> betartat. A felhasználók
nem módosíthatják ezt az
értéket, ezért ez a
felhasználók számára nem
tekinthető tetszőlegesen elhagyható
beállításnak. Egy valós
konfigurációban azonban a rendszergazda
valószínűleg nem akarja majd egyszerre az
összes modult használni. Javasoljuk, hogy
mielőtt egy ilyen jellegű
konfigurációt adnánk meg, olvassuk el az
egész fejezetet.</para>
<note>
<para>A felhasználók ezt a címkét
meg tudják változtatni az első
bejelentkezés után, de csak a házirend
keretein belül. A fenti példában
úgy állítjuk be a Biba
házirendet, hogy a futó programok
sértetlenségi foka legalább 5,
legfeljebb 15 lehet, de az alapértéke 10.
Tehát a programok egészen addig 10-es szinten
futnak, amíg a programok a Biba
bejelentkezéskor megadott tartományában
meg nem változtatják ezt a
címkét, feltehetően a
<command>setpmac</command> parancs
hatására.</para>
</note>
<para>Mindig, amikor megváltozatjuk a
<filename>login.conf</filename>
beállításait, a
<command>cap_mkdb</command> paranccsal újra kell
generálni a bejelentkezési osztályokhoz
tartozó adatbázist, amire a későbbi
példákban vagy részekben igyekszünk
is mindig felhívni a figyelmet.</para>
<para>Nem árt hozzátennünk, hogy sok
rendszerben kifejezetten sok felhasználót kell
kezelnünk, amihez több különböző
bejelentkezési osztályra is
szükségünk lehet. Mivel később
már csak egyre jobban bonyolódni fog a
felhasználók kezelése, ezért soha
ne felejtsünk el komolyan előre tervezni.</para>
<para>A &os; következő változataiban meg fognak
jelenni más módszerek is a
felhasználók és címkék
közti kapcsolatok kezelésére. A
&os;&nbsp;5.3 előtt azonban ez még
semmiképpen sem várható.</para>
</sect3>
<sect3>
<title>A hálózati csatolófelületek
és a címkék kapcsolata</title>
<para>A hálózati csatlakozások
esetében is állíthatunk be
címkéket, melyek a hálózaton
keresztül folyó adatok
áramlását határozzák meg.
Minden esetben ugyanúgy működnek, mint ahogy
a házirendek az objektumokra. Például a
<literal>biba</literal> esetében a magas
beállításokkal rendelkező
felhasználók nem férhetnek hozzá
az alacsonyabb címkéjű
hálózati csatolófelületekhez.</para>
<para>Ha <acronym>MAC</acronym>-címkéket akarunk
rendelni egy hálózati felülethez, akkor az
<command>ifconfig</command> parancsnak adjuk meg a
<option>maclabel</option> paramétert.
Például a</para>
<screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal</userinput></screen>
<para>parancs beállítja a
<literal>biba/equal</literal>
<acronym>MAC</acronym>-címkét a &man.bge.4;
felületre. A <literal>biba/high(low-high)</literal>
alakú címkéket átadásukhoz
idézőjelek közé kell tenni,
különben hibát kapunk.</para>
<para>Minden címkézést
támogató modulhoz tartoznak futási
időben állítható paraméterek,
amelyekkel akár le is tudjuk tiltani a
<acronym>MAC</acronym>-címkéket a
hálózati csatolófelületeken.
Ugyanezt jelenti egyébként, ha
<option>equal</option> értéket adunk meg a
címkének. Ezt behatóbban úgy
ismerhetjük meg, ha kielemezzük a
<command>sysctl</command> parancs kimenetét, a
megfelelő modul man oldalát vagy a fejezetben
további részében található,
erre vonatkozó információkat.</para>
</sect3>
</sect2>
<sect2>
<title>Egy címke vagy több címke?</title>
<para>Alapértelmezés szerint a rendszer a
<option>singlelabel</option> beállítást
használja. Ez vajon mit tartogat a rendszergazda
számára? Számos olyan
eltérést, aminek megvannak a saját
előnyei és hátrányai a rendszer
védelmi modelljének rugalmassága
szempontjából.</para>
<para>A <option>singlelabel</option>
beállítás minden alany vagy objektum
esetében csupán egyetlen címke,
például a <literal>biba/high</literal>
használatát engedi. Kevesebb
adminisztrációs költséggel jár,
azonban csökkenteni a címkézést
támogató modulok
testreszabhatóságát. Ezért sok
rendszergazda inkább a <option>multilabel</option>
beállítást választja a
biztonsági házirend kialakítása
során.</para>
<para>A <option>multilabel</option> beállítás
lehetővé teszi, hogy mindegyik alanyhoz és
objektumhoz a szabványos <option>singlelabel</option>
beállítás lehetőségeivel
szemben egymástól függetlenül
külön-külön rendelhessünk
címkéket a partíciókon. Az egy-
és többcímkés opciónak csak
olyan modulok esetében van értelme, amelyek
támogatják a címkézést, mint
például a Biba, Lomac, <acronym>MLS</acronym>
és a <acronym>SEBSD</acronym> házirendek.</para>
<para>Sokszor egyáltalán nincs is
szükségünk a <option>multilabel</option>
használatára. Tekintsük
például a következő helyzetet és
biztonsági modellt:</para>
<itemizedlist>
<listitem>
<para>Adott egy &os; webszerver, ahol a <acronym>MAC</acronym>
rendszert több biztonsági házirenddel
alkalmazzuk.</para>
</listitem>
<listitem>
<para>A gépen egyedül csak a
<literal>biba/high</literal> címkére van
szükségünk mindenhez a rendszerben. Itt
egyszerűen csak nem adjuk meg az
állományrendszernek a
<option>multilabel</option> beállítást,
mivel az egycímkés rendszer mindig
rendelkezésünkre áll.</para>
</listitem>
<listitem>
<para>Mivel azonban erre a gépre telepíteni
akarunk egy webszervert is, ilyenkor a
<literal>biba/low</literal> címke
használatával igyekszünk
korlátozni a szerver feldolgozási
képességeit. A Biba házirendről
és annak működéséről
csak a későbbiekben fogunk írni,
ezért ha az előbbi megjegyzést még
nem teljesen értjük, akkor egyszerűen csak
olvassunk tovább és térjünk vissza
ide. A szerver futása alatt, vagy legalább is
idejének nagy részében egy
külön partíciót használhatna,
amire a <literal>biba/low</literal> címkét
állítanánk be. Természetesen ez
a példa korántsem teljes, hiszen
hiányoznak belőle az adatokra
érvényes korlátozások, a
konfigurációs és
felhasználói beállítások.
Ez csupán az iménti gondolatmenet gyors
illusztrációja.</para>
</listitem>
</itemizedlist>
<para>Amennyiben címkézést nem
támogató modulokat alkalmazunk, a
<option>multilabel</option> beállításra
szinte sosem lesz szükségünk. Ilyenek
például a <literal>seeotheruids</literal>,
<literal>portacl</literal> és
<literal>partition</literal> házirendek.</para>
<para>A <option>multilabel</option> opció használata
és így speciális,
többcímkés védelmi modell
létrehozása képes elbonyolítani a
rendszer karbantartását, mert ilyenkor az
állományrendszerben mindennek lennie kell
címkéjének: könyvtáraknak,
állományok és még az
eszközleíróknak is.</para>
<para>A most következő paranccsal
beállítjuk az állományrendszerre a
<option>multilabel</option> opciót. Ez csak
egyfelhasználós módban tehető
meg:</para>
<screen>&prompt.root; <userinput>tunefs -l enable /</userinput></screen>
<para>A lapozópartíció esetében erre
nincs szükség.</para>
<note>
<para>Előfordulhat, hogy néhány
felhasználónak nem sikerül a
<option>multilabel</option> opciót
beállítania a rendszerindító
partícióra. Ha ez történne, akkor
olvassuk el a fejezet <xref linkend="mac-troubleshoot"/>át.</para>
</note>
</sect2>
</sect1>
<sect1 xml:id="mac-planning">
<title>A védelem megtervezése</title>
<para>Mindig hasznos időt szánni a tervezésre,
amikor nekilátunk egy új technológia
alkalmazásához. A tervezés közben a
rendszergazdának <quote>egyben kell látnia a
képet</quote>, lehetőleg az alábbiak
figyelembevételével:</para>
<itemizedlist>
<listitem>
<para>Elvárások a modell felé</para>
</listitem>
<listitem>
<para>A modell célkitűzései</para>
</listitem>
</itemizedlist>
<para>Továbbá a <acronym>MAC</acronym>
használata esetén:</para>
<itemizedlist>
<listitem>
<para>Miként osztályozzuk a célrendszeren
rendelkezésre álló
információt és
erőforrásokat</para>
</listitem>
<listitem>
<para>Milyen információt vagy
erőforrást kell korlátoznunk és
milyen típusú korlátozást
alkalmazzunk rájuk</para>
</listitem>
<listitem>
<para>A <acronym>MAC</acronym> melyik moduljain keresztül
tudjuk elérni céljainkat</para>
</listitem>
</itemizedlist>
<para>Habár mindig módunkban áll
megváltoztatni és újra konfigurálni a
rendszerben található erőforrásokat
és biztonsági beállításokat,
sokszor azért igen kényelmetlen
utánanézni a rendszerben és
állítgatni az állományok, illetve
felhasználói hozzáférések
paramétereit. A beállításainkat
valamint azok konfigurációját
<emphasis>először</emphasis> külön
próbáljuk ki, mielőtt a <acronym>MAC</acronym>
alapú megvalósításunkat egy
éles rendszeren kezdjük el használni. Ennek
elhagyása szinte biztosan kudarcra ítél
minket.</para>
<para>A különböző környezetek
igényei és elvárásai eltérnek.
Egy alaposan és minden részletében
átgondolt védelmi profil megalapozása
csökkenti a rendszer üzembehelyezése után
elvégzendő módosítások
számát. Mint olyanokra, a következő
szakaszokban kitérünk a rendszergazdák
számára elérhető modulokra, bemutatjuk a
használatukat és beállításukat
és egyes esetekben betekintést is adunk olyan
helyzetekbe, ahol a legjobban kiaknázhatóak a
képességeik. Például egy webszerver
esetén hasznos lehet a &man.mac.biba.4; és
&man.mac.bsdextended.4; házirendek alkalmazása.
Más esetekben, például egy kevés
felhasználóval működő
számítógépen, a &man.mac.partition.4;
modul lehet jó választás.</para>
</sect1>
<sect1 xml:id="mac-modules">
<title>A modulok beállítása</title>
<para>A <acronym>MAC</acronym> rendszerben
megtalálható összes modul a korábban
leírtak szerint beépíthető a
rendszermagba vagy menet közben is betölthető
modulként. A használni kívánt
modulokat a <filename>/boot/loader.conf</filename>
állományba javasolt felvenni, így azok be
tudnak töltődni a rendszer indítása
folyamán.</para>
<para>A soron következő szakaszokban a
különböző <acronym>MAC</acronym>-modulokat
dolgozzuk fel és foglaljuk össze a
lehetőségeiket. Továbbá a fejezet
szeretne szólni ezek alkalmazásáról
speciális helyzetekben is. Egyes modulokkal
címkézni is tudunk, aminek révén a
hozzáféréseket címkékkel
szabályozzuk, például úgy, hogy
megmondjuk <quote>mit szabad és mit nem</quote>. A
címkék beállításait
tartalmazó állomány vezérli az
állományok elérését, a
hálózati kommunikációt és
még sok minden mást. Az előző szakaszban
már megismerhettük, hogy a <option>multilabel</option>
opció segítségével hogyan
állíthatjuk be az
állományonkénti vagy
partíciónkénti
hozzáférés-vezérlést.</para>
<para>Az egycímkés konfigurációban az
egész rendszerben csupán egyetlen címke
használatára nyílik mód, ezért
is hívják a <command>tunefs</command>
beállítását
<option>multilabel</option>nek.</para>
</sect1>
<sect1 xml:id="mac-seeotheruids">
<title>A seeotheruids MAC-modul</title>
<indexterm><primary><quote>Lássak
másokat</quote>MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_seeotheruids.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_SEEOTHERUIDS</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_seeotheruids_load="YES"</literal></para>
<para>A &man.mac.seeotheruids.4; modul a
<literal>security.bsd.see_other_uids</literal> és
<literal>security.bsd.see_other_gids</literal>
<command>sysctl</command>-változókat utánozza
és terjeszti ki. A használatához semmilyen
címkét nem kell beállítani és
transzparens módon képes
együttműködni a többi modullal.</para>
<para>A modult betöltése után az alábbi
<command>sysctl</command>-változókkal tudjuk
vezérelni:</para>
<itemizedlist>
<listitem>
<para>A <literal>security.mac.seeotheruids.enabled</literal>
engedélyezi a modult és az
alapértelmezett beállításokat
használja. Alapértelmezés szerint egyik
felhasználó sem láthatja a többiek
futó programjait és
csatlakozásait.</para>
</listitem>
<listitem>
<para>A
<literal>security.mac.seeotheruids.specificgid_enabled</literal>
egy adott csoportot mentesít a házirend
szabályozásai alól. Tehát ki
akarunk vonni egy csoportot a házirend
alkalmazásából, akkor
állítsuk be a
<literal>security.mac.seeotheruids.specificgid=XXX</literal>
<command>sysctl</command>-változót, ahol az
<replaceable>XXX</replaceable> a mentesíteni
kívánt csoport numerikus
azonosítója.</para>
</listitem>
<listitem>
<para>A
<literal>security.mac.seeotheruids.primarygroup_enabled</literal>
segítségével adott elsődleges
csoportokat vonhatunk ki a házirend hatálya
alól. Ezt a változót nem
használhatjuk a
<literal>security.mac.seeotheruids.specificgid_enabled</literal>
változóval együtt.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="mac-bsdextended">
<title>A bsdextended MAC-modul</title>
<indexterm>
<primary>MAC</primary>
<secondary>Állományrendszeri tűzfal
MAC-házirend</secondary>
</indexterm>
<para>A modul neve: <filename>mac_bsdextended.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_BSDEXTENDED</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_bsdextended_load="YES"</literal></para>
<para>A &man.mac.bsdextended.4; modul
segítségével egy
állományrendszer szintjén
működő tűzfalat tudunk kialakítani. Ez
a modul a szabványos állományrendszeri
engedély alapú modelljét bővíti
ki, lehetővé téve, hogy a rendszergazda
tűzfalszerű szabályokkal nyújtson
védelmet a könyvtárszerkezetben
található állományoknak,
segédprogramoknak és könyvtáraknak.
Amikor egy állományrendszerbeli objektumhoz
próbálunk meg hozzáférni, a modul
illeszti ezt egy szabályrendszerre, amiben vagy
talál egy hozzá tartozó szabályt vagy
kifut belőle. Ez a viselkedés a
<literal>security.mac.bsdextended.firstmatch_enabled</literal>
&man.sysctl.8; paraméter segítségével
változtatható meg. Hasonlóan a &os;-ben
található többi tűzfalmodulhoz, az
állományok elérését
definiáló szabályok a
rendszerindítás során egy &man.rc.conf.5;
változóból olvasódnak be.</para>
<para>A szabályokat a &man.ugidfw.8; segédprogrammal
adhatjuk meg, amelynek a formai szabályai hasonlóak
az &man.ipfw.8; programéhoz. A &man.libugidfw.3;
függvénykönyvtár
felhasználásával azonban további
segédprogramok is írhatóak
hozzá.</para>
<para>A modul használata során igyekezzünk
minél jobban odafigyelni, mert helytelen
alkalmazásával el tudjuk vágni magunkat az
állományrendszer bizonyos
részeitől.</para>
<sect2>
<title>Példák</title>
<para>Miután sikerült betölteni a
&man.mac.bsdextended.4; modult, a következő paranccsal
tudjuk lekérdezni a jelenleg érvényes
szabályokat:</para>
<screen>&prompt.root; <userinput>ugidfw list</userinput>
0 slots, 0 rules</screen>
<para>Ahogy az várható is volt, pillanatnyilag
még egyetlen szabályt sem adtunk meg. Ennek
értelmében tehát mindent el tudunk
érni. A következő paranccsal tudunk olyan
szabályt létrehozni, ahol a
<systemitem class="username">root</systemitem> kivételével
elutasítjuk az összes felhasználó
hozzáférését:</para>
<screen>&prompt.root; <userinput>ugidfw add subject not uid root new object not uid root mode n</userinput></screen>
<para>Ez egyébként egy nagyon buta ötlet, mivel
így a felhasználók még a
legegyszerűbb parancsokat, mint például az
<command>ls</command>-t, sem tudják rájuk kiadni.
Ennél sokkal humánusabb lesz, ha:</para>
<screen>&prompt.root; <userinput>ugidfw set 2 subject uid felhasználó1 object uid felhasználó2 mode n</userinput>
&prompt.root; <userinput>ugidfw set 3 subject uid felhasználó1 object gid felhasználó2 mode n</userinput></screen>
<para>Ilyenkor a <systemitem class="username">felhasználó1</systemitem>
nevű felhasználótól megvonjuk a
<systemitem class="username"><replaceable>felhasználó2</replaceable></systemitem>
felhasználói könyvtárának
összes hozzáférését,
beleértve a listázhatóságot
is.</para>
<para>A <systemitem class="username">felhasználó1</systemitem> helyett
megadhatjuk a <option>not uid
<replaceable>felhasználó2</replaceable></option>
opciót is. Ebben az esetben egy
felhasználó helyett az összes
felhasználóra ugyanaz a korlátozás
fog érvényesülni.</para>
<note>
<para>A <systemitem class="username">root</systemitem> felhasználóra
ezek a beállítások nem
vonatkoznak.</para>
</note>
<para>Ezzel felvázoltuk, miként lehet a
&man.mac.bsdextended.4; modult felhasználni az
állományrendszerek
megerősítésére. Részletesebb
információkért járuljunk a
&man.mac.bsdextended.4; és &man.ugidfw.8; man
oldalakhoz.</para>
</sect2>
</sect1>
<sect1 xml:id="mac-ifoff">
<title>Az ifoff MAC-modul</title>
<indexterm><primary><quote>a csatolófelületek
elfojtása</quote>
MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_ifoff.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_IFOFF</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_ifoff_load="YES"</literal></para>
<para>A &man.mac.ifoff.4; modul kizárólag abból
a célból készült, hogy
segítségével menet közben le tudjuk
tiltani bizonyos hálózati
csatolófelületek
beállítását a
rendszerindítás közben. Sem
címkékre, sem pedig a többi MAC-modulra nincs
szükségünk a használatához.</para>
<para>A vezérlést nagyrészt az alábbi
<command>sysctl</command>-változókkal tudjuk
megoldani.</para>
<itemizedlist>
<listitem>
<para>A <literal>security.mac.ifoff.lo_enabled</literal>
engedélyezi vagy letiltja a (&man.lo.4;) helyi loopback
felületen az összes forgalmat.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.ifoff.bpfrecv_enabled</literal>
engedélyezi vagy letiltja a Berkeley
csomagszűrő (BPF, Berkeley Packet Filter)
felületén az összes forgalmat.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.ifoff.other_enabled</literal>
engedélyezi vagy letiltja az összes többi
csatolófelületen az összes forgalmat.</para>
</listitem>
</itemizedlist>
<para>A &man.mac.ifoff.4; modult általában olyan
környezetek monitorozásakor szokták
használni, ahol a rendszer indítása
során még nem szabad hálózati
forgalomnak keletkeznie. Vagy például a <package>security/aide</package> porttal együtt
használva automatikusan el tudjuk zárni a
rendszerünket, ha a védett könyvtárakban
új állományok keletkeznek vagy
megváltoznak a régiek.</para>
</sect1>
<sect1 xml:id="mac-portacl">
<title>A portacl MAC-modul</title>
<indexterm><primary>Port
hozzáférés-vezérlési lista
MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_portacl.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása:
<literal>MAC_PORTACL</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_portacl_load="YES"</literal></para>
<para>A &man.mac.portacl.4; modul a helyi <acronym>TCP</acronym>
és <acronym>UDP</acronym> portok kiosztásának
korlátozását teszi lehetővé
különféle
<command>sysctl</command>-változókon keresztül.
A &man.mac.portacl.4; segítségével
lényegében a nem-<systemitem class="username">root</systemitem>
felhasználók is használhatnak
privilegizált, tehát 1024 alatti portokat.</para>
<para>Miután betöltöttük, a modul az
összes csatlakozásra alkalmazza a
<acronym>MAC</acronym>-házirendet. Ezután az
alábbi változókkal hangolhatjuk a
viselkedését:</para>
<itemizedlist>
<listitem>
<para>A <literal>security.mac.portacl.enabled</literal>
totálisan engedélyezi vagy letiltja a
házirend használatát.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.portacl.port_high</literal>
megadja azt a legmagasabb portot, amelyre még kiterjed
a &man.mac.portacl.4; védelme.</para>
</listitem>
<listitem>
<para>Ha a <literal>security.mac.portacl.suser_exempt</literal>
változónak nem nulla értéket adunk
meg, akkor azzal a <systemitem class="username">root</systemitem>
felhasználót kivonjuk a
szabályozások alól.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.portacl.rules</literal> az
érvényes mac_portacl házirendet adja meg,
lásd lentebb.</para>
</listitem>
</itemizedlist>
<para>A <literal>security.mac.portacl.rules</literal>
változó által megadott aktuális
<literal>mac_portacl</literal> házirend formátuma a
következő:
<literal>szabály[,szabály,...]</literal>, ahol ezen
a módon tetszőleges számú
szabályt adhatunk meg. Az egyes szabályok pedig
így írhatóak fel: <literal>
azonosítótípus:
azonosító:
protokoll:
port</literal>. Az
<parameter>azonosítótípus</parameter>
értéke <literal>uid</literal> vagy
<literal>gid</literal> lehet, amivel megadjuk, hogy az
<parameter>azonosító</parameter> paraméter
felhasználóra vagy csoportra hivatkozik. A
<parameter>protokoll</parameter> paraméter adja meg, hogy a
szabályt <acronym>TCP</acronym> vagy <acronym>UDP</acronym>
típusú kapcsolatra értjük, és
ennek megfelelően az értéke is
<literal>tcp</literal> vagy <literal>udp</literal> lehet. A sort
végül a <parameter>port</parameter> paraméter
zárja, ahol annak a portnak számát adjuk meg,
amelyhez az adott felhasználót vagy csoportot
akarjuk kötni.</para>
<note>
<para>Mivel a szabályokat közvetlenül maga a
rendszermag dolgozza fel, ezért a
felhasználók illetve csoportok
azonosítója, valamint a port értéke
kizárólag numerikus érték lehet.
Tehát a szabályokban név szerint nem
hivatkozhatunk felhasználókra, csoportokra vagy
szolgáltatásokra.</para>
</note>
<para>A &unix;-szerű rendszereken alapértelmezés
szerint az 1024 alatti portokat csak privilegizált
programok kaphatják meg és
használhatják, tehát a
<systemitem class="username">root</systemitem> felhasználó neve alatt
kell futniuk. A &man.mac.portacl.4; azonban a nem
privilegizált programok számára is
lehetővé teszi, hogy elfoglalhassanak 1024 alatti
portokat, amihez viszont először le kell tiltani ezt a
szabvány &unix;-os korlátozást. Ezt
úgy érhetjük el, ha a
<literal>net.inet.ip.portrange.reservedlow</literal> és
<literal>net.inet.ip.portrange.reservedhigh</literal>
változókat egyaránt nullára
állítjuk.</para>
<para>A &man.mac.portacl.4; működésének
részleteiről a példákon keresztül
vagy a megfelelő man oldalakból tudhatunk meg
többet.</para>
<sect2>
<title>Példák</title>
<para>A következő példák az
iméntieket igyekeznek jobban
megvilágítani:</para>
<screen>&prompt.root; <userinput>sysctl security.mac.portacl.port_high=1023</userinput>
&prompt.root; <userinput>sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0</userinput></screen>
<para>Elsőként beállítjuk, hogy a
&man.mac.portacl.4; vegye át a szabványos
privilegizált portok vezérlését
és letiltjuk a normál &unix;-os
korlátozásokat.</para>
<screen>&prompt.root; <userinput>sysctl security.mac.portacl.suser_exempt=1</userinput></screen>
<para>A <systemitem class="username">root</systemitem> felhasználót
azonban nem akarjuk kitenni a házirendnek, ezért a
<literal>security.mac.portacl.suser_exempt</literal>
változónak egy nem nulla értéket
adunk meg. A &man.mac.portacl.4; modul most pontosan
ugyanúgy működik, mint a &unix;-szerű
rendszerek alapértelmezés szerint.</para>
<screen>&prompt.root; <userinput>sysctl security.mac.portacl.rules=uid:80:tcp:80</userinput></screen>
<para>A 80-as azonosítóval rendelkező
felhasználó (aki általában a
<systemitem class="username">www</systemitem>) számára
engedélyezzük a 80-as port
használatát. Így a
<systemitem class="username">www</systemitem> felhasználó
anélkül képes webszervert futtatni, hogy
szüksége lenne a <systemitem class="username">root</systemitem>
jogosultságaira.</para>
<screen>&prompt.root; <userinput>sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995</userinput></screen>
<para>Az 1001-es azonosítóval rendelkező
felhasználónak megengedjük, hogy
elfoglalhassa a 110-es (<quote>pop3</quote>) és
995-ös (<quote>pop3s</quote>) portokat. Ennek
köszönhetően az adott felhasználó
el tud indítani egy szervert, amihez a 110-es és
995-ös portokon lehet kapcsolódni.</para>
</sect2>
</sect1>
<sect1 xml:id="mac-partition">
<title>A partition MAC-modul</title>
<indexterm><primary>a futó programok
felosztását megvalósító
MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_partition.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_PARTITION</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_partition_load="YES"</literal></para>
<para>A &man.mac.partition.4; házirend a futó
programokat címkéjük szerint adott
<quote>partíciókra</quote> osztja szét. Ezt
leginkább egy speciális &man.jail.8;
megoldásként tudjuk elképzelni, noha teljesen
felesleges összehasonlítani a kettőt.</para>
<para>Ez egy olyan modul, amelyet a &man.loader.conf.5;
állományba kell felvenni, hogy a
rendszerindítása közben be tudjon
töltődni.</para>
<para>Ezt a házirendet többségében a
&man.setpmac.8; segédprogrammal tudjuk
állítgatni, ahogy az majd lentebb
látható lesz. A következő
<command>sysctl</command>-változó tartozik
még a modulhoz:</para>
<itemizedlist>
<listitem>
<para>A <literal>security.mac.partition.enabled</literal>
engedélyezi a futó programok
<acronym>MAC</acronym> rendszeren keresztüli
felosztását.</para>
</listitem>
</itemizedlist>
<para>A házirend engedélyezésével a
felhasználók csak a saját programjaikat
láthatják, illetve mindazokat, amelyek az
övékével egy partícióba
tartoznak, de a rajta kívül levő programokkal
már nem dolgozhatnak. Például, ha egy
felhasználó az <literal>insecure</literal>
(<quote>nem biztonságos</quote>) osztály tagja,
akkor ne engedjük, hogy hozzáférhessen a
<command>top</command> vagy bármilyen más olyan
parancshoz, amely további futó programokat hoz
létre.</para>
<para>A <command>setpmac</command> használatával
tudunk címkéket készíteni a
partíciókhoz és programokat rendelni
hozzájuk:</para>
<screen>&prompt.root; <userinput>setpmac partition/13 top</userinput></screen>
<para>Így a <command>top</command> parancsot
hozzáadjuk az <literal>insecure</literal> osztályban
levő felhasználókhoz rendelt
címkéhez. Vegyük észre, hogy az
<literal>insecure</literal> osztályba tartozó
felhasználók által elindított
összes program a <literal>partition/13</literal>
címkét fogja használni.</para>
<sect2>
<title>Példák</title>
<para>A következő parancs megmutatja a
partíciók címkéit és a futó
programok listáját:</para>
<screen>&prompt.root; <userinput>ps Zax</userinput></screen>
<para>Ezzel paranccsal pedig megnézhetjük egy
másik felhasználó programjainak
címkéit és a felhasználó
által futtatott programokat:</para>
<screen>&prompt.root; <userinput>ps -ZU trhodes</userinput></screen>
<note>
<para>A felhasználók látják a
<systemitem class="username">root</systemitem> címkéjével
futó programokat is, hacsak be nem töltjük a
&man.mac.seeotheruids.4; házirendet.</para>
</note>
<para>Ezt a megoldást úgy tudnánk
igazán ravaszul felhasználni, ha
például az <filename>/etc/rc.conf</filename>
állományban letiltanánk az összes
szolgáltatást és egy olyan szkripttel
indítanánk el ezeket, amely futtatásuk
előtt beállítja hozzájuk a
megfelelő címkét.</para>
<note>
<para>A most következő házirendek a
három alapértelmezett
címkeérték helyett egész
számokat használnak. Ezekről, valamint a
rájuk vonatkozó
korlátozásokról a megfelelő modulok
man oldalain ismerhetünk meg többet.</para>
</note>
</sect2>
</sect1>
<sect1 xml:id="mac-mls">
<title>A többszintű biztonsági MAC-modul</title>
<indexterm><primary>a többszintű biztonsági
MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_mls.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_MLS</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_mls_load="YES"</literal></para>
<para>A &man.mac.mls.4; (MLS, Multi-Level Security) házirend
az információ szigorú
áramoltatásával vezérli a rendszerben
található alanyok és objektumok közti
elérést.</para>
<para>A <acronym>MLS</acronym> megoldását
alkalmazó környezetekben a rekeszek mellett minden
alanyra és objektumra be kell még
állítanunk egy adott szintű
<quote>engedélyt</quote> is. Mivel az engedélyek
avagy az érzékenység szintje akár a
hatezret is meghaladhatja, egy rendszergazda számára
valódi rémálommá válthat az
egyes alanyok és objektumok precíz
beállítása. Szerencsére a
házirend erre a célra tartalmaz három
előre definiált <quote>instant</quote>
címkét.</para>
<para>Ezek az <literal>mls/low</literal>,
<literal>mls/equal</literal> és
<literal>mls/high</literal>. Mivel a man oldal elég
részletesen kifejti ezeket, ezért itt csak
érintőlegesen foglalkozunk velük:</para>
<itemizedlist>
<listitem>
<para>Az <literal>mls/low</literal> címke egy olyan
alacsony szintű beállítást
képvisel, amely lehetővé teszi, hogy az
összes többi objektum uralja. Tehát
bárminek is adjuk az <literal>mls/low</literal>
címkét, alacsony szintű engedéllyel
fog rendelkezni és nem lesz képes elérni
a magasabb szinten levő információt.
Ráadásul a címke a magasabb szintű
objektumok számára se fogja engedni, hogy
információt közöljön vagy adjon
át az alacsonyabb szintek felé.</para>
</listitem>
<listitem>
<para>Az <literal>mls/equal</literal> címke olyan
objektumok esetében ajánlott, amelyeket ki
akarunk hagyni a házirend
szabályozásaiból.</para>
</listitem>
<listitem>
<para>Az <literal>mls/high</literal> címke az
elérhető legmagasabb szintű engedélyt
ábrázolja. Az ilyen címkével
ellátott objektumok a rendszer összes többi
objektuma felett uralommal rendelkeznek, habár az
alacsonyabb szintű objektumok felé nem
képesek információt
közvetíteni.</para>
</listitem>
</itemizedlist>
<para>Az <acronym>MLS</acronym>:</para>
<itemizedlist>
<listitem>
<para>Egy hierarchikus védelmi szinteket
épít fel nem hierarchikus
kategóriákkal.</para>
</listitem>
<listitem>
<para>Szabályai rögzítettek: a felsőbb
szintek olvasása és az alsóbb szintek
írása egyaránt tiltott (az alanyok csak a
saját vagy az alatta levő szinteken levő
objektumokat képesek olvasni, de a felette
állókat már nem. Ehhez hasonlóan
az alanyok a velük egyező vagy a felsőbb
szinteket tudják írni, de az alattuk
levőket már nem).</para>
</listitem>
<listitem>
<para>Megőrzi a titkokat (megakadályozza az adatok
alkalmatlan közzétételét).</para>
</listitem>
<listitem>
<para>Megadja mindazt az alapot, ami szükséges
ahhoz, hogy az adatokat több kényességi
szinten, párhuzamosan is kezelni tudjuk
(anélkül, hogy titkos és bizalmas
információkat szivárogtatnánk
ki).</para>
</listitem>
</itemizedlist>
<para>A speciális szolgáltatások és
felületek beállításához az
alábbi <command>sysctl</command>-változók
használhatóak:</para>
<itemizedlist>
<listitem>
<para>A <literal>security.mac.mls.enabled</literal>
engedélyezi vagy tiltja le az <acronym>MLS</acronym>
házirend alkalmazását.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.mls.ptys_equal</literal>
hatására látja el
<literal>mls/equal</literal> címkével az
összes &man.pty.4; eszközt
létrehozásuk során.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.mls.revocation_enabled</literal>
használható az alacsonyabb szintre
minősített objektumok
hozzáférésének
megvonására.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.mls.max_compartments</literal>
segítségével adható meg az
objektumok által használt rekeszek
szintjének maximális száma.
Lényegében a rekeszek rendszerben
engedélyezett maximuma.</para>
</listitem>
</itemizedlist>
<para>Az <acronym>MLS</acronym> címkéit a
&man.setfmac.8; paranccsal tudjuk módosítani. Egy
ehhez hasonló paranccsal tudunk egy objektumhoz
címkét rendelni:</para>
<screen>&prompt.root; <userinput>setfmac mls/5 próba</userinput></screen>
<para>A <filename>próba</filename>
állomány
<acronym>MLS</acronym>-címkéjét az
alábbi paranccsal kérhetjük le:</para>
<screen>&prompt.root; <userinput>getfmac próba</userinput></screen>
<para>Ezzel össze is foglaltuk az <acronym>MLS</acronym>
házirend lehetőségeit. Az eddigiket úgy
is megoldhatjuk, hogy létrehozunk egy központi
házirendet az <filename>/etc</filename>
könyvtárban, amelyben megadjuk az
<acronym>MLS</acronym> házirendhez tartozó
információkat, majd átadjuk a
<command>setfmac</command> parancsnak. Erre a módszerre
majd a házirendek bemutatása után kerül
sor.</para>
<sect2>
<title>A kényesség
megállapítása</title>
<para>A többszintű biztonsági házirend
használatával a rendszergazda a kényes
információk áramlásának
irányát tudja befolyásolni. A
megoldás <quote>felfele nem lehet olvasni, lefele nem
lehet írni</quote> jellege folytán alapból
mindent a legalacsonyabb szintre helyez. Így
tehát kezdetben minden elérhető, és a
rendszergazdának lassanként ebből az
állapotból elindulva kell behangolnia az erre
alapozó védelmi rendszert az
információ bizalmasságának
megfelelően.</para>
<para>A fentebb említett három alapvető
címke mellett a rendszergazdának
valószínűleg szüksége lesz a
felhasználók csoportosítására
és a csoportok közti
információáramlás
szabályozására. A információ
bizalmasságának szintjeit minden bizonnyal
könnyebb szavakkal beazonosítani,
például <literal>Confidential</literal>
(bizalmas), <literal>Secret</literal> (titkos) vagy <literal>Top
Secret</literal> (szigorúan bizalmas). Bizonyos
helyzetekben elég csak a futó projekteknek
megfelelően kialakítani csoportokat. Az
osztályozás konkrét
módszerétől függetlenül azonban
mindig elmondható, hogy előzetes tervezés
nélkül sose állítsunk össze ilyen
fajsúlyú házirendet.</para>
<para>Ezt a biztonsági modult például webes
üzletek esetén érdemes használnunk, ahol
egy állományszerver tárolja a cég
fontos adatait és pénzügyi
információit. Viszont egy két vagy
három felhasználóval üzemelő
munkaállomás esetében szinte teljesen
felesleges gondolkodni rajta.</para>
</sect2>
</sect1>
<sect1 xml:id="mac-biba">
<title>A Biba MAC-modul</title>
<indexterm><primary>a Biba sértetlenségi
MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_biba.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_BIBA</literal></para>
<para>Rendszerindítási beállítás:
<literal>mac_biba_load="YES"</literal></para>
<para>A &man.mac.biba.4; modul a <acronym>MAC</acronym> Biba
elnevezésű házirendjét tölti be.
Ez leginkább az <acronym>MLS</acronym> házirendhez
hasonlít, azzal a kivétellel, hogy az
információ áramoltatására
vonatkozó szabályok némileg visszafelé
működnek. Tehát míg az
<acronym>MLS</acronym> házirend a kényes
információ áramlását
felfelé nem engedi, addig ez a lefelé
irányuló áramlást
állítja meg. Emiatt ez a szakasz
tulajdonképpen mind a két házirendre
érvényesül.</para>
<para>A Biba alkalmazása során minden alany és
objektum egy <quote>sértetlenséget</quote>
jelképező címkét visel. Ezek a
címkék hierarchikus osztályokból, nem
peidg hiearchikus összetevőkből származnak.
Egy objektum vagy alany sértetlensége a
besorolásával növekszik.</para>
<para>A modul a <literal>biba/low</literal>,
<literal>biba/equal</literal> és
<literal>biba/high</literal> címkéket ismeri, vagyis
bővebben:</para>
<itemizedlist>
<listitem>
<para>A <literal>biba/low</literal> címke tekinthető
az alanyok és objektumok legkisebb
sértetlenségének. Ha
beállítjuk egy objektumra vagy alanyra, akkor
ezzel megakadályozzuk, hogy nagyobb
sértetlenségű objektumokat vagy alanyokat
tudjanak írni. Ettől függetlenül
azonban még képesek olvasni ezeket.</para>
</listitem>
<listitem>
<para>A <literal>biba/equal</literal> címke
használata kizárólag olyan objektumok
esetében javasolt, amelyeket ki akarunk vonni a
házirend alól.</para>
</listitem>
<listitem>
<para>A <literal>biba/high</literal> címke megengedi az
alacsonyabb szinteken levő objektumokat
írását, de az olvasását
viszont már nem. Ezt a címkét olyan
objektumra érdemes ragasztani, amelyek hatással
vannak az egész rendszer
sértetlenségére.</para>
</listitem>
</itemizedlist>
<para>A Biba:</para>
<itemizedlist>
<listitem>
<para>Hierarchikus sértetlenségi szinteket
épít fel nem hiearchikus
sértetlenségi kategóriákkal
kiegészítve.</para>
</listitem>
<listitem>
<para>Szabályai rögzítettek: az felsőbb
szintek írása és az alsóbb szintek
olvasása egyaránt tilos (pontosan az
<acronym>MLS</acronym> ellentéte). Egy alany csak a
saját vagy az alatta álló szinteken
szereplő objektumokat tudja írni. Ehhez
hasonló módon egy alany csak a saját vagy
az afeletti szinten található objektumokat
képes olvasni.</para>
</listitem>
<listitem>
<para>Az adatok sértetlenségét
biztosítja (megakadályozza az alkalmatlan
módosításukat)</para>
</listitem>
<listitem>
<para>Sértetlenségi szinteket határoz meg
(szemben az MLS kényességi szintjeivel).</para>
</listitem>
</itemizedlist>
<para>Az alábbi
<command>sysctl</command>-változókkal
vezérlhetjük a Biba házirend
működését:</para>
<itemizedlist>
<listitem>
<para>A <literal>security.mac.biba.enabled</literal>
használható a célrendszeren a Biba
házirend engedélyezére vagy
letiltására.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.biba.ptys_equal</literal>
segítségével kapcsolhatjuk ki a Biba
házirend alkalmazását a &man.pty.4;
eszközökön.</para>
</listitem>
<listitem>
<para>A <literal>security.mac.biba.revocation_enabled</literal>
hatására visszavonódik az objektumok
hozzáférése, ha az rájuk
vonatkozó címke megváltozik.</para>
</listitem>
</itemizedlist>
<para>A rendszer objektumain a Biba házirendet a
<command>setfmac</command> és <command>getfmac</command>
paranccsal állíthatjuk be:</para>
<screen>&prompt.root; <userinput>setfmac biba/low próba</userinput>
&prompt.root; <userinput>getfmac próba</userinput>
<replaceable>próba</replaceable>: biba/low</screen>
<sect2>
<title>A sértetlenség
megállapítása</title>
<para>A sértetlenség a
kényességtől eltérően azt igyekszik
szavatolni, hogy az információt
illetéktelenek nem módosítják. Ez
egyaránt vonatkozik az alanyok, objektumok és a
kettő között átadott adatokra.
Gondoskodik róla, hogy a felhasználók csak
olyan információkat változtathathassanak
meg, sőt csak olyat érhessenek el, amire
ténylegesen szükségük van.</para>
<para>A &man.mac.biba.4; biztonsági modul megengedi a
rendszergazda számára, hogy megmondja milyen
állományokat és programokat láthat
vagy hívhat meg a felhasználó vagy
felhasználók egy csoportja, miközben
biztosítja, hogy az állományok és a
programok nincsenek kitéve semmilyen
fenyegetésnek, és a rendszer az adott
felhasználóban vagy felhasználói
csoportban megbízik.</para>
<para>A kezdeti tervezési fázis során a
rendszergazdának fel kell készülnie arra,
hogy a felhasználókat osztályokra,
szintekre és területekre kell osztania. A
felhasználók nem csak adatokhoz, hanem
programokhoz és segédprogramokhoz sem lesznek
képesek hozzáférni, mind az
indításuk előtt és után. A
modul aktiválás után a rendszer
alapból rögtön a legmagasabb
címkét kapja meg, és teljesen a
rendszergazdára hárul, hogy a
felhasználókhoz beállítsa a
különféle osztályokat és
szinteket. A fentebb leírt engedélyszintek
helyett akár témák alapján is
tervezhetünk. Például
kizárólag csak a fejlesztők
számára engedjük meg a
forráskód módosítását,
a forráskód lefordítását
és a többi fejlesztőeszköz
használatát. Eközben a többi
felhasználót felosztjuk további
csoportokba, például tesztelőkre és
tervezőkre, vagy meghagyjuk ezeket átlagos
felhasználóknak, akik csak olvasási joggal
rendelkeznek.</para>
<para>A megvalósított biztonsági modell
természetéből fakadóan egy
kevésbé sértetlenebb alany nem
írhatja a sokkal sértetlenebb alanyokat, a sokkal
sértetlenebb alanyok pedig nem érhetik el vagy
olvashatják a kevésbé sértetlen
objektumokat. A lehető legkisebb osztályú
címke beállításával
gyakorlatilag elérhetetlenné teszük az
alanyok számára. A modult
valószínűleg egy korlátozott
webszerver, fejlesztői- és tesztgépek vagy
forráskód tárolására
szánt környezetben érdemes bevetni.
Annál esélytelenebb a használata viszont
egy munkaállomás, útválasztó
vagy hálózati tűzfal esetében.</para>
</sect2>
</sect1>
<sect1 xml:id="mac-lomac">
<title>A LOMAC MAC-modul</title>
<indexterm><primary>a LOMAC
MAC-házirend</primary></indexterm>
<para>A modul neve: <filename>mac_lomac.ko</filename></para>
<para>A rendszermag konfigurációs
beállítása: <literal>options
MAC_LOMAC</literal></para>
<para>Rendszerindítás beállítás:
<literal>mac_lomac_load="YES"</literal></para>
<para>Eltérően a <acronym>MAC</acronym> Biba
házirendjétől, a &man.mac.lomac.4; egyedül
csak azután engedi elérni az kevésbé
sértetlenebb objektumokat, miután
csökkentjük a sértetlenség szintjét
és ezzel betartjuk a sértetlenségre
vonatkozó szabályokat.</para>
<para>A gyenge vízjeles sértetlenségi
házirend <acronym>MAC</acronym> alapú
változatát nem szabad összetéveszteni a
korábbi &man.lomac.4; implementációval, amely
majdnem ugyanúgy működik, mint a Biba, azzal az a
kivétellel, hogy a lebegő címkékkel
támogatjuk az alanyok lefokozását egy
kisegítő osztály rekeszén
keresztül. Ez a másodlagos rekesz
<literal>[kisegítő_osztály]</literal>
alakú. Tehát amikor egy kisegítő
osztállyal adjuk meg a lomac házirendet, valahogy
így néz ki: <literal>lomac/10[2]</literal>, ahol a
kettes (2) szám ez a kisegítésre
használt osztály.</para>
<para>A <acronym>MAC</acronym> LOMAC házirendje az
összes rendszerszintű objektum esetében
jelenlevő sértetlenségi
címkézésen alapszik, megengedve az alanyok
számára, hogy az kevésbé
sértetlen objektumokat olvasni tudják, majd a
címke leminősítésével az alany
meg tudja akadályozni a sokkal sértetlenebbnek
ítélt objektumok jövőbeni
írását. Ez az a fentebb tárgyalt
<literal>[kisegítő_osztály]</literal>
opció, ezért ez a modul a
Bibáénál több kompatibilitást
és kevesebb kezdeti beállítást
igényel.</para>
<sect2>
<title>Példák</title>
<para>Hasonlóan a Biba és <acronym>MLS</acronym>
házirendeknél megszokottakhoz, a
<command>setfmac</command> és <command>setpmac</command>
segédprogramok használhatóak a
címkék
hozzárendeléséhez:</para>
<screen>&prompt.root; <userinput>setfmac /usr/home/trhodes lomac/high[low]</userinput>
&prompt.root; <userinput>getfmac /usr/home/trhodes</userinput> lomac/high[low]</screen>
<para>Itt a kisegítő osztály a
<literal>low</literal>. Ezt csak a LOMAC
<acronym>MAC</acronym>-házirendnél adhatjuk
meg.</para>
</sect2>
</sect1>
<sect1 xml:id="mac-implementing">
<title>A Nagios elzárása a MAC rendszerrel</title>
<indexterm><primary>a Nagios elzárása a MAC
rendszerrel</primary></indexterm>
<para>A most következő bemutatóban a
<acronym>MAC</acronym> moduljainak és a megfelelően
beállított házirendek
használatával fogunk kialakítani egy
biztonságos környezetet. Ne feledjük azonban,
hogy ez csupán egy ártatlan próba és
nem pedig a mindenki biztonsági aggályait
kielégítő legvégső megoldás.
Ha egy házirendet vakon építünk fel
és nem értjük meg a
működését, az soha nem válik
hasznunkra, és egy éles helyzetben
katasztrofális hatással járhat.</para>
<para>A folyamat megkezdése előtt be kell
állítanunk a <literal>multilabel</literal>
opciót mindegyik állományrendszerre, a
fejezet elején leírtaknak megfelelően. Ha ezt
a lépést kihagyjuk, akkor hibákat kapunk.
Továbbá még az előkészület
részeként ne felejtsünk el gondoskodni a
<package>net-mngt/nagios-plugins</package>,
<package>net-mngt/nagios</package> és
<package>www/apache13</package> portok
telepítéséről,
beállításáról és
megfelelő működéséről
sem.</para>
<sect2>
<title>A nem megbízható felhasználók
osztályának létrehozása</title>
<para>Az eljárást kezdjük az alábbi
(insecure) felhasználói osztály
hozzáadásával az
<filename>/etc/login.conf</filename>
állományban:</para>
<programlisting>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):</programlisting>
<para>Valamint egészítsük ki az
alapértelmezett (default) felhasználói
osztályt a következő sorral:</para>
<programlisting>:label=biba/high:</programlisting>
<para>Ahogy ezzel elkészültünk, az
hozzá tartozó adatbázis újbóli
legyártásához a következő
parancsot kell kiadnunk:</para>
<screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
</sect2>
<sect2>
<title>A rendszerindítással kapcsolatos
beállítások</title>
<para>Még ne indítsuk újra a
számítógépet, csupán a
szükséges modulok betöltéséhez
bővítsük ki a
<filename>/boot/loader.conf</filename> állományt
az alábbi sorokkal:</para>
<programlisting>mac_biba_load="YES"
mac_seeotheruids_load="YES"</programlisting>
</sect2>
<sect2>
<title>A felhasználók
beállítása</title>
<para>Soroljuk be a <systemitem class="username">root</systemitem>
felhasználót a <literal>default</literal>
osztályba:</para>
<screen>&prompt.root; <userinput>pw usermod root -L default</userinput></screen>
<para>Az összes <systemitem class="username">root</systemitem>
felhasználón kívüli
hozzáférésnek vagy
rendszerfelhasználónak most kelleni fog egy
bejelentkezési osztály. A bejelentkezési
osztályra egyébként is szükség
lesz, mert ennek hiányában a
felhasználók még az olyan egyszerű
parancsokat sem tudják kiadni, mint például
a &man.vi.1;. A következő <command>sh</command>
szkript nekünk erre pontosan megfelel:</para>
<screen>&prompt.root; <userinput>for x in `awk -F: '($3 &gt;= 1001) &amp;&amp; ($3 != 65534) { print $1 }' \</userinput>
<userinput>/etc/passwd`; do pw usermod $x -L default; done;</userinput></screen>
<para>Helyezzük át a <systemitem class="username">nagios</systemitem>
és <systemitem class="username">www</systemitem> felhasználókat az
insecure osztályba:</para>
<screen>&prompt.root; <userinput>pw usermod nagios -L insecure</userinput></screen>
<screen>&prompt.root; <userinput>pw usermod www -L insecure</userinput></screen>
</sect2>
<sect2>
<title>A <filename>contexts</filename> állomány
létrehozása</title>
<para>Most csinálnunk kell egy
<filename>contexts</filename> állományt. Ebben
példában az
<filename>/etc/policy.contexts</filename>
állományt használjuk.</para>
<programlisting># Ez a rendszer alapértelmezett BIBA házirendje.
# Rendszer:
/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
# Nagios:
/usr/local/etc/nagios
/usr/local/etc/nagios/* biba/10
/var/spool/nagios biba/10
/var/spool/nagios/* biba/10
# Apache:
/usr/local/etc/apache biba/10
/usr/local/etc/apache/* biba/10</programlisting>
<para>Ezzel a házirenddel az információ
áramlását szabályozzuk. Ebben a
konkrét konfigurációban a
felhasználók, a <systemitem class="username">root</systemitem>
és társai, nem férhetnek hozzá a
<application>Nagios</application>hoz. A
<application>Nagios</application>
beállításait tároló
állományok és a neve alatt futó
programok így teljesen különválnak
vagyis elzáródnak a rendszer többi
részétől.</para>
<para>Ez az iménti állomány a
következő parancs hatására kerül be
a rendszerünkbe:</para>
<screen>&prompt.root; <userinput>setfsmac -ef /etc/policy.contexts /</userinput>
&prompt.root; <userinput>setfsmac -ef /etc/policy.contexts /</userinput></screen>
<note>
<para>A fenti állományrendszer
felépítése a környezettől
függően eltérhet, habár ezt minden
egyes állományrendszeren le kell
futtatni.</para>
</note>
<para>Az <filename>/etc/mac.conf</filename>
állományt törzsét a
következőképpen kell még
átírnunk:</para>
<programlisting>default_labels file ?biba
default_labels ifnet ?biba
default_labels process ?biba
default_labels socket ?biba</programlisting>
</sect2>
<sect2>
<title>A hálózat engedélyezése</title>
<para>Tegyük hozzá a következő sort az
<filename>/boot/loader.conf</filename>
állományhoz:</para>
<programlisting>security.mac.biba.trust_all_interfaces=1</programlisting>
<para>Ezt az alábbi beállítást pedig
szúrjuk be az <filename>rc.conf</filename>
állományba a hálózati kártya
konfigurációjához. Amennyiben az
internetet <acronym>DHCP</acronym>
segítségével érjük el, ezt a
beállítást manuálisan kell megtenni
minden rendszerindítás alkalmával:</para>
<programlisting>maclabel biba/equal</programlisting>
</sect2>
<sect2>
<title>A konfiguráció
kipróbálása</title>
<indexterm><primary>a MAC beállításainak
kipróbálása</primary></indexterm>
<para>Gondoskodjunk róla, hogy a webszerver és a
<application>Nagios</application> nem fog elindulni a rendszer
indításakor, majd indítsuk újra a
gépet. Ezenkívül még
ellenőrizzük, hogy a <systemitem class="username">root</systemitem> ne
tudjon hozzáférni a
<application>Nagios</application>
beállításait tartalmazó
könyvtárhoz. Ha a <systemitem class="username">root</systemitem>
képes kiadni egy &man.ls.1; parancsot a
<filename>/var/spool/nagios</filename> könyvtárra,
akkor valamit elronthattunk. Normális esetben egy
<errorname>permission denied</errorname> üzenetet kell
kapnunk.</para>
<para>Ha minden jónak tűnik, akkor a
<application>Nagios</application>,
<application>Apache</application> és
<application>Sendmail</application> most már
elindítható a biztonsági házirend
szabályozásai szerint. Ezt a következő
parancsokkal tehetjük meg:</para>
<screen>&prompt.root; <userinput>cd /etc/mail &amp;&amp; make stop &amp;&amp; \
setpmac biba/equal make start &amp;&amp; setpmac biba/10\(10-10\) apachectl start &amp;&amp; \
setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart</userinput></screen>
<para>Kétszer is ellenőrizzük, hogy minden a
megfelelő módon viselkedik-e. Ha valamilyen
furcsaságot tapasztalunk, akkor nézzük
át a naplókat vagy a hibaüzeneteket. A
&man.sysctl.8; használatával tiltsuk le a
&man.mac.biba.4; biztonsági modult és
próbáljunk meg mindent a szokott módon
újraindítani.</para>
<note>
<para>A <systemitem class="username">root</systemitem> felhasználó
különösebb aggodalom nélkül
képes megváltoztatni a biztonsági rend
betartatását és átírni a
konfigurációs állományokat. Egy
frissen indított parancsértelmező
számára ezzel a paranccsal tudjuk
csökkenteni a biztonsági besorolást:</para>
<screen>&prompt.root; <userinput>setpmac biba/10 csh</userinput></screen>
<para>Ennek kivédésére a
felhasználókat a &man.login.conf.5;
beállításaival le kell korlátozni.
Ha a &man.setpmac.8; megpróbál a rekesz
határain túl futtatni egy parancsot, akkor
hibát ad vissza és a parancs nem fut le. Ebben
az esetben a <systemitem class="username">root</systemitem>
felhasználót tegyük a
<literal>biba/high(high-high)</literal> értékek
közé.</para>
</note>
</sect2>
</sect1>
<sect1 xml:id="mac-userlocked">
<title>A felhasználók
korlátozása</title>
<para>Ebben a példában egy viszonylag kicsi,
nagyjából mindössze ötven
felhasználós, adattárolásra
használatos rendszert veszünk alapul. A
felhasználók rendelkezhetnek bizonyos
bejelentkezési tulajdonságokkal, és nem csak
adatokat tudnak tárolni, hanem az
erőforrásokhoz is hozzá tudnak
férni.</para>
<para>Itt most a &man.mac.bsdextended.4; és a
&man.mac.seeotheruids.4; modulokat vetjük be együttesen,
és nem csak a rendszer objektumainak
elérését tudjuk megakadályozni, hanem
az egyes felhasználók futó programjait is
elrejtjük.</para>
<para>A műveletet kezdjük azzal, hogy a
<filename>/boot/loader.conf</filename> állományt
kibővítjük a következő
módon:</para>
<programlisting>mac_seeotheruids_load="YES"</programlisting>
<para>A &man.mac.bsdextended.4; biztonsági modul az
alábbi
<filename>rc.conf</filename>-változóval
hozható működésbe:</para>
<programlisting>ugidfw_enable="YES"</programlisting>
<para>A hozzá tartozó alapértelmezett
szabálykészlet az
<filename>/etc/rc.bsdextended</filename> állományban
tárolódik, amely pedig a rendszer
indítása során töltődik be. Ezeket
némileg módosítanunk kell majd. Mivel a
példában szereplő
számítógép csak a
felhasználók kiszolgálását
hivatott ellátni, az utolsó kettő
kivételével mindent hagyhatunk megjegyzésben.
Így kikényszerítjük
felhasználók által birtokolt
rendszerobjektumok alapértelmezés szerinti
betöltését.</para>
<para>Vegyük fel a szükséges
felhasználókat a
számítógépre és indítsuk
újra. Tesztelési célból
próbáljunk meg különböző
felhasználókként bejelentkezni két
konzolon. Futassuk le a <command>ps aux</command> parancsot,
és így meg tudjuk figyelni, hogy mennyire
látjuk a többi felhasználót. Amikor
megpróbáljuk kiadni a &man.ls.1; parancsot a
többiek felhasználói könyvtáraira,
akkor hibát kell kapnunk.</para>
<para>Ne próbálgassunk a <systemitem class="username">root</systemitem>
felhasználóval, hacsak a megfelelő
<command>sysctl</command> változókban be nem
állítottuk az ő
hozzáférésének
blokkolását is.</para>
<note>
<para>Amikor felveszük egy felhasználót a
rendszerbe, a hozzá tartozó &man.mac.bsdextended.4;
szabály nem fog szerepelni a szabályrendszerben.
A szabályrendszer gyors frissítését
úgy tudjuk megoldani, ha a &man.kldunload.8;
használatával egyszerűen
eltávolítjuk a biztonsági modult a
memóriából és
újratöltjük a &man.kldload.8;
paranccsal.</para>
</note>
</sect1>
<sect1 xml:id="mac-troubleshoot">
<title>A hibák elhárítása a MAC
rendszerben</title>
<indexterm><primary>MAC
hibaelhárítás</primary></indexterm>
<para>A fejlesztés fázisában bizonyos
normál konfigurációval rendelkező
felhasználók gondokat jeleztek. Ezeket foglaljuk
most itt össze:</para>
<sect2>
<title>A <option>multilabel</option>
beállítás nem adható meg a
<filename>/</filename> állományrendszerre</title>
<para>A <option>multilabel</option> beállítás
nem marad meg a rendszerindító
(<filename>/</filename>) partíciómon!</para>
<para>A tapasztalatok szerint körülbelül minden
ötvenedik felhasználó szembesül ezzel a
problémával, és mi is találkozunk
vele a kezdeti konfigurációk
kialakítása során. Ennek az
úgynevezett <quote>hibának</quote> a
behatóbb tanulmányozása során arra
jutottunk, hogy ez többnyire vagy a hibás
dokumentálásból vagy a
dokumentáció
félreértelmezéséből ered.
Független attól, hogy ez mitől is
következett be, a következő lépések
megtételével orvosolhatjuk:</para>
<procedure>
<step>
<para>Nyissuk meg az <filename>/etc/fstab</filename>
állományt és adjuk meg a
rendszerindító partíciónak az
<option>ro</option>, vagyis az
írásvédett (read-only)
beállítást.</para>
</step>
<step>
<para>Indítsuk újra a gépet
egyfelhasználós módban.</para>
</step>
<step>
<para>A <command>tunefs</command> <option>-l enable</option>
parancsot futtassuk le a <filename>/</filename>
állományrendszeren.</para>
</step>
<step>
<para>Indítsuk újra a rendszert normál
módban.</para>
</step>
<step>
<para>Adjuk ki a <command>mount</command>
<option>-urw</option> <filename>/</filename> parancsot, majd
az <filename>/etc/fstab</filename> állományban
írjuk át a <option>ro</option>
beállítást az <option>rw</option>
értékre és megint indítsuk
újra a rendszert.</para>
</step>
<step>
<para>Alaposan nézzük át a
<command>mount</command> parancs kimenetét és
győzödjünk meg róla, hogy a
<option>multilabel</option> opció valóban
beállítódott a
rendszerindító
állományrendszerre.</para>
</step>
</procedure>
</sect2>
<sect2>
<title>A <acronym>MAC</acronym> után nem lehet
indítani az X11 szervert</title>
<para>Nem indul az X, miután <acronym>MAC</acronym>-kel
kialakítottunk egy biztonságos
környezetet!</para>
<para>Ezt vagy a <acronym>MAC</acronym>
<literal>partition</literal> házirendje okozza, vagy az
egyik címkékeket használó
házirend helytelen beállítása. A
következő módon deríthetjük ki az
okát:</para>
<procedure>
<step>
<para>Figyelmesen olvassuk el a hibaüzenetet: ha a
felhasználó az <literal>insecure</literal>
osztály tagja, akkor a <literal>partition</literal>
házirend lesz a bűnös.
Próbáljuk meg a felhasználót
visszatenni a <literal>default</literal> osztályba
és a <command>cap_mkdb</command> paranccsal
újragenerálni az adatbázist. Ha ez nem
segít a problémán, akkor haladjunk
tovább.</para>
</step>
<step>
<para>Alaposan ellenőrizzük a
címkékhez tartozó házirendeket.
Vizsgáljuk meg, hogy a kérdeses
felhasználó esetében a
házirendet és az X11 alkalmazást,
valamint a <filename>/dev</filename>
eszközöket tényleg jól
állítottuk be.</para>
</step>
<step>
<para>Ha az iméntiek egyik sem oldja meg gondunkat,
küldjük el a hibaüzenetet és a
környezetünk rövid
leírását a a <link xlink:href="http://www.TrustedBSD.org">TrustedBSD</link>
honlapjáról elérhető TrustedBSD
levelezési lista vagy a &a.questions;
címére.</para>
</step>
</procedure>
</sect2>
<sect2>
<title>Hiba: &man..secure.path.3; cannot stat
<filename>.login_conf</filename></title>
<para>Amikor a rendszerben megpróbálok a
<systemitem class="username">root</systemitem> felhasználóról
átváltani egy másik
felhasználóra, a <errorname>_secure_path: unable
to state .login_conf</errorname> hibaüzenet jelenik
meg.</para>
<para>Ez az üzenet általában akkor
látható, amikor a felhasználó
nagyobb értékű címkével
rendelkezik annál, mint akivé válni akar.
Például vegyük a <systemitem class="username">joska</systemitem>
nevű felhasználót a rendszerben, aki az alap
<literal>biba/low</literal> címkével rendelkezik.
A <systemitem class="username">root</systemitem> felhasználó, akinek
<literal>biba/high</literal> címkéje van, nem
láthatja <systemitem class="username">joska</systemitem>
felhasználói könyvtárát. Ez
attól függetlenül megtörténik, hogy
a <systemitem class="username">root</systemitem> a <command>su</command> paranccsal
váltott át a <systemitem class="username">joska</systemitem> nevű
felhasználóra vagy sem. Egy ilyen helyzetben a
Biba sértetlenségi modellje nem fogja engedni a
<systemitem class="username">root</systemitem> felhasználóra
számára, hogy láthassa a
kevésbé sértetlen objektumokat.</para>
</sect2>
<sect2>
<title>A <systemitem class="username">root</systemitem> felhasználó nem
megy!</title>
<para>A rendszer normál vagy egyfelhasználós
módban sem ismeri fel a <systemitem class="username">root</systemitem>
felhasználót. A <command>whoami</command> parancs
0 (nullát) ad vissza és a <command>su</command>
parancs pedig annyit mond: <errorname>who are you?</errorname>
(<errorname>ki vagy?</errorname>). Mi
történhetett?</para>
<para>Ez csak olyankor történhet, ha a
címkézési házirendet nem
engedélyezzük, vagy a &man.sysctl.8;
használatával, vagy pedig a modul
eltávolításával. Ha a
házirendet letiltjuk vagy ideiglenesen letiltódik,
akkor a bejelentkezési tulajdonságokat
tároló adatbázist a <option>label</option>
beállítás
eltávolításával kell
újrakonfigurálni. A
<filename>login.conf</filename> állományból
ne felejtsük el kivenni az összes
<option>label</option> beállítást és
a <command>cap_mkdb</command> paranccsal
újragenerálni az adatbázist.</para>
<para>Ilyen akkor is előfordulhat, amikor a házirend
valamilyen módon korlátozza a
<filename>master.passwd</filename> állomány vagy
adatbázis elérhetőségét. Ezt
általában az okozza, hogy a rendszergazda az
állományt olyan címke alatt
módosítja, amely ütközik a rendszerben
alkalmazott általános házirenddel. Ebben
az esetekben a rendszer próbálja meg beolvasni a
felhasználók adatait, azonban mivel közben az
állomány új címkét
örökölt, nem fér hozzá. Ha a
&man.sysctl.8; paranccsal letiltjuk a házirendet, minden
vissza fog térni a rendes
kerékvágásba.</para>
</sect2>
</sect1>
</chapter>