Kezdők útmutatója a SELinuxhoz

Kezdők útmutatója a SELinuxhoz

A cikk fordítása a kurzus hallgatói számára készült A Linux biztonság

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:

  1. Kötelező — a hozzáférés megtiltása a politikai szabályok alapján.
  2. Engedékeny — az engedékeny módban megtiltott tevékenységek naplózása.
  3. 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

$ getenforce

A mód engedékeny értékre állításához futtassa a következő parancsot

$ setenforce 0

vagy 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 1

Ha teljesen le szeretné tiltani a SELinuxot, azt csak a konfigurációs fájlon keresztül teheti meg

$ vi /etc/selinux/config

A letiltáshoz módosítsa a SELINUX paramétert a következőképpen:

SELINUX=disabled

A 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=permissive

A 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 6

Megjegyzé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.log

Ennek 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 -l

Ez 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 directory

Ez 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 httpd

port

$ netstat -anpZ | grep httpd

tá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/html

Miutá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_policy

Itt 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.pp

A 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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster