A Linux - felépítéséből adódóan - egyszerűen, de hatékonyan szabályozza az egyes felhasználók, illetve folyamatok által az elérhető erőforrásokhoz és fájlokhoz történő hozzáféréseket. A rendszermagban található alapszintű szabályrendszer (a DAC - discretional access control) legtöbb esetben megfelelően működik, de találkozhatunk olyan helyzetekkel, amikor ez bizony nem elegendő, ennél szigorúbb rendre van szükség. Gondoljunk csak bele abba a helyzetbe, amikor a webkiszolgálónk az apache user nevében fut. Egy DAC-t használó rendszeren a webszerver processzei hozzáférhetnek mindazokhoz a fájlokhoz, amelyekhez az apache user is (pl. az /etc könyvtár tartalma), viszont ez egyes esetekben inkább hátrányos, mint előnyös. Jó lenne, ha létezne ilyenkor egy kötelező házirend, amely megszabja, hogy a httpd processz bizony csak adott erőforrásokat érhet el. Jó hírünk van, létezik ilyen megoldás. A neve: SELinux.
A SELinux (Security Enhanced Linux) nevű projekt az amerikai NSA (National Security Agency) égisze alatt jött létre. Céla egy olyan rendszerkiegészítés elkészítése volt, amelyik a hagyományos DAC mellett MAC (Mandatory Access Control) típusú védelmet kínál. Ez lehetővé teszi, hogy egy kiszolgálóprocessz vagy alkalmazás hozzáférését minimalizálva rendkívül biztonságos környezetet alakítsunk ki szerverünkön vagy akár desktop gépünkön is. Az SELinux számos biztonsági modellt ötvöz magában, mint például a Role-Based Access Control (RBAC) vagy a Multi-level Security (MLS). Az SELinux eredendően a Flask operációs rendszerhez készült kiegészítésnek indult, de fejlesztői a Linux kernelhez implementálták megoldásaikat. Az SELinux megbízhatóságát és sikerét mi sem jelzi jobban, minthogy a vállalati megoldásokat nyújtó Red Hat minden operációs rendszerében felhasználja. E biztonsági kiegészítés több más disztribúcióban, így pl. a Fedora vagy a CentOS változatokban is megtalálható, de természetesen másokhoz is elérhető kernelpatch és más kiegészítő alkalmazások formájában.
Az SELinux használata, működésének megértése nem egyszerű feladat, mint ahogy a magasszintű biztonság kialakítása sem. Sorozatunkban nem törekszünk majd arra, hogy a SELinux fejlesztésének mélységeit megismerjük, inkább a beállítások, alapszintű konfigurációk és hibakeresés részleteit fogjuk ismertetni. A példákat Fedora Core 5 alatti környezetben mutatjuk be, de ezek természetesen más disztribúciókban is felhasználhatóak. Mint korábban említettük, a Red Hat család tagjaiban "gyárilag" implementálásra került az SELinux, valamint az alapértelmezett csomagkészletben megtalálhatók a userspace alkalmazások is, melyekkel szabályozzuk majd az SELinux működését, a szabályok (policy-k) felépítését. Ebből kifolyólag már a telepítés során választhatunk, milyen üzemmódban fusson az SELinux. Alapbeállításként természetesen engedélyezve van, ez az ún. enforcing mód, ilyenkor a kernel a megtalálható policyk alapján fog dolgozni. Hasznos üzemmód a permissive is, amikor a rendszermag feldolgozza ugyan a szabályokat, de azokat nem juttatja érvényre, mindössze egy-egy logüzenet tájékoztat bennünket a helytelen működésről. Ezt az módot tesztelési, tanulási fázisban célszerű használni.
Természetesen lehetőségünk nyílik az SELinux teljes kikapcsolására is.A védelem a rendszerindítás korai szakaszában, az rc.sysinit script lefutásakor aktivizálódik. Célszerű emlékeznünk erre, hiszen egy nem körültekintően végzett konfiguráció akár a rendszergazda kizárását is eredményezheti. Ilyen esetben a GRUB-nál megadott enforcing=0 kernel boot paraméterrel kikapcsolhatjuk az SELinuxot. Ugyanitt érdemes megjegyezni, hogy ez a módszer aktív, problémamentes rendszereken is a védelem megszűntetését eredményezi, gondoskodjunk tehát arról, hogy illetéktelenek ne tudják a rendszerindítási folyamatot módosítani! (folytatjuk)