
A cikk fordítása a kurzus hallgatói számára készült
A SELinux, vagyis a Security Enhanced Linux egy fejlett hozzáférés-ellenőrzési mechanizmus, amelyet az Egyesült Államok Nemzetbiztonsági Ügynöksége (NSA) fejlesztett ki a rosszindulatú behatolások megelőzésére. Ez egy kötelező (vagy mandátum) alapú hozzáférés-ellenőrzési modellt (angolul: Mandatory Access Control, MAC) valósít meg a meglévő diszkrecionális (vagy szelektív) modell (angolul: Discretionary Access Control, DAC) felett, azaz olvasási, írási és végrehajtási engedélyek révén.
A SELinuxnak három módja van:
- Kötelező — a hozzáférés megtiltása a politikai szabályok alapján.
- Engedékeny — az engedékeny módban megtiltott tevékenységek naplózása.
- Letiltva — a SELinux teljes letiltása.
Alapértelmezés szerint a beállítások a következő helyen találhatók /etc/selinux/config
A SELinux módok megváltoztatása
A jelenlegi mód megismeréséhez indítsa el a következőt
$ getenforceA mód engedékeny értékre állításához futtassa a következő parancsot
$ setenforce 0vagy a mód megváltoztatásához engedékeny Gyorsan emlékezzünk vissza, hogyan működik a moduláris aritmetika. Az óra már egy ismert koncepció. Az órák használata kötelezőre, hajtsa végre
$ setenforce 1Ha teljesen le szeretné tiltani a SELinuxot, azt csak a konfigurációs fájlon keresztül teheti meg
$ vi /etc/selinux/configA letiltáshoz módosítsa a SELINUX paramétert a következőképpen:
SELINUX=disabledA SELinux beállítása
Minden fájl és folyamat SELinux kontextussal van megjelölve, amely tartalmazza a felhasználóra, szerepre, típusra és egyéb információkra vonatkozó információkat. Ha először aktiválja a SELinuxot, először be kell állítania a kontextust és a címkéket. A címkézés és a kontextus kijelölésének folyamata címkézésnek nevezik. A címkézés megkezdéséhez a konfigurációs fájlban változtassuk meg a módot engedékeny.
$ vi /etc/selinux/config
SELINUX=permissiveA mód beállítása után engedékeny, hozzunk létre a gyökérben egy üres, rejtett fájlt a következő néven .autorelabel
$ touch /.autorelabelés indítsa újra a számítógépet
$ init 6Megjegyzés: a címkézés során kötelező módot használunk, mivel a kötelező mód használata a rendszer újraindítása során összeomláshoz vezethet. engedékeny Ne aggódjon, ha a rendszer betöltése elakad egy fájlnál, a címkézés időigényes folyamat. A címkézés és a rendszer betöltése után átmehet a konfigurációs fájlhoz és beállíthatja a módot kötelezőre , valamint futtathatja a:
Most már sikeresen aktiválta a SELinuxot a számítógépén. kötelezőreFelügyeljük a naplókat
$ setenforce 1Теперь вы успешно включили SELinux на своем компьютере.
Мониторим логи
Lehetséges, hogy hibák merültek fel a címkézés során vagy a rendszer működése során. Annak ellenőrzéséhez, hogy a SELinux megfelelően működik-e és nem blokkol-e hozzáférést bármely porthoz, alkalmazáshoz stb., meg kell nézni a naplókat. A SELinux napló itt található /var/log/audit/audit.log, de nincs szükség arra, hogy teljesen elolvassa a hibák kereséséhez. Használhatja az audit2why eszközt a hibák keresésére. Futassa le a következő parancsot:
$ audit2why < /var/log/audit/audit.logEnnek eredményeként egy hiba lista jelenik meg. Ha a naplóban nem volt hiba, akkor nem jelenik meg üzenet.
A SELinux politika beállítása
A SELinux politika egy szabályokból álló halmaz, amelyet a SELinux biztonsági mechanizmus követ. A politika meghatározza a szabályok halmazát egy adott környezet számára. Most nézzük meg, hogyan állíthatjuk be a politikát, hogy lehetővé tegyük a tiltott szolgáltatásokhoz való hozzáférést.
1. Logikai értékek (kapcsolók)
A kapcsolók (booleans) lehetővé teszik a politika egyes részeinek módosítását működés közben, új politikák létrehozása nélkül. Lehetővé teszik a módosításokat újraindítás vagy SELinux politikák újrakompilálása nélkül.
támadásra
Tegyük fel, hogy FTP-n keresztül olvasási és írási hozzáférést szeretnénk biztosítani a felhasználó otthoni könyvtárához, és ezt már megosztottuk, de a hozzáférés során nem látunk semmit. Ez azért van, mert a SELinux politika megakadályozza az FTP szerver számára, hogy olvassa és írja a felhasználó otthoni könyvtárába. A politikát módosítanunk kell, hogy az FTP szerver hozzáférjen az otthoni könyvtárakhoz. Nézzük meg, hogy van-e ehhez kapcsolónk, futtatva
$ semanage boolean -lEz a parancs a rendelkezésre álló kapcsolók listáját adja meg az aktuális állapotukkal (bekapcsolva/on vagy kikapcsolva/off) és leírásukkal. A keresés pontosításához használhatja a grep-et, hogy csak az ftp-vel kapcsolatos eredményeket találja:
$ semanage boolean -l | grep ftpés a következőt találja
ftp_home_dir -> off Allow ftp to read & write file in user home directoryEz a kapcsoló ki van kapcsolva, ezért bekapcsoljuk a következő paranccsal setsebool ftp_home_dir on
Most az ftp démonunk hozzáférhet a felhasználó otthoni könyvtárához.
Megjegyzés: a rendelkezésre álló kapcsolók listáját kérheti le leírás nélkül is, a következő parancs futtatásával getsebool -a
2. Címkék és kontextus
Ez a legelterjedtebb módja a SELinux politika megvalósításának. Minden fájl, mappa, folyamat és port SELinux kontextussal van megcímkézve:
- A fájlok és mappák címkéi bővített attribútumokként tárolódnak a fájlrendszerben, és a következő parancs használatával nézhetők meg:
$ ls -Z /etc/httpd - A folyamatok és portok címkézését a kernel kezeli, és ezeket a címkéket így ellenőrizhetjük:
folyamat
$ ps –auxZ | grep httpdport
$ netstat -anpZ | grep httpdtámadásra
Most nézzük meg a példát, hogy jobban megértsük a címkéket és a kontextust. Tegyük fel, hogy van egy webszerver, ami a könyvtár helyett /var/www/html/ использует /home/dan/html/. A SELinux ezt a biztonsági politika megsértésének tekinti, és nem tudja megjeleníteni a weboldalaidat. Ennek az az oka, hogy nem állítottuk be a HTML fájlokhoz kapcsolódó biztonsági kontextust. Az alapértelmezett biztonsági kontextus megtekintéséhez használd a következő parancsot:
$ ls –lz /var/www/html
-rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/Itt megkaptuk httpd_sys_content_t címkét a html fájlokhoz. Be kell állítanunk ezt a biztonsági kontextust a jelenlegi könyvtárunkhoz, amely most a következő kontextussal rendelkezik:
-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/Alternatív parancs a fájl vagy könyvtár biztonsági kontextusának ellenőrzésére:
$ semanage fcontext -l | grep '/var/www'A semanage-t is használni fogjuk a kontextus módosítására, miután megtaláltuk a megfelelő biztonsági kontextust. A /home/dan/html kontextus módosításához hajtsuk végre a következő parancsokat:
$ semanage fcontext -a -t httpd_sys_content_t '/home/dan/html(/.*)?'
$ semanage fcontext -l | grep '/home/dan/html'
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/htmlMiután a kontextust a semanage segítségével módosítottuk, a restorecon parancs visszaállítja az alapértelmezett kontextust a fájlok és könyvtárak számára. A webkiszolgálónk most már képes lesz olvasni a fájlokat a mappából /home/dan/html, mivel a biztonsági kontextus erre a mappára módosult httpd_sys_content_t.
3. Helyi politikák létrehozása
Előfordulhatnak olyan helyzetek, amikor a fenti módszerek haszontalannak bizonyulnak, és hibákat (avc/denial) kapsz az audit.log fájlban. Ilyen esetekben létre kell hozni egy helyi politikát (Local policy). Minden hibát az audit2why segítségével találhatsz, ahogy az fentebb is volt.
A hibák megszüntetésére helyi politikát hozhatsz létre. Például, ha httpd (apache) vagy smbd (samba) hibát kapunk, grep-peljük a hibákat, és létrehozzuk hozzájuk a politikát:
apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policyItt http_policy és smb_policy — ezek a helyi irányelvek nevei, amelyeket létrehoztunk. Most fel kell töltenünk ezeket a létrehozott helyi irányelveket az aktuális SELinux irányelvek közé. Ezt a következőképpen tehetjük meg:
$ semodule –I http_policy.pp
$ semodule –I smb_policy.ppA helyi irányelveink feltöltésre kerültek, és nem kell többé avc vagy denail üzeneteket látnunk az audit.log fájlban.
Ez volt a próbálkozásom, hogy segítsen megérteni a SELinux-t. Remélem, hogy miután elolvasta ezt a cikket, kényelmesebben fogja érezni magát a SELinux-szal kapcsolatban.
Forrás: habr.com
