Útmutató kezdőknek a SELinuxhoz

Útmutató kezdőknek a SELinuxhoz

A kurzus hallgatói számára készített cikk fordítása "Linux biztonság"

A SELinux vagy a Security Enhanced Linux egy továbbfejlesztett hozzáférés-felügyeleti mechanizmus, amelyet az Egyesült Államok Nemzetbiztonsági Ügynöksége (NSA) fejlesztett ki a rosszindulatú behatolások megelőzésére. A meglévő diszkrecionális (vagy szelektív) modell (angol diszkrecionális hozzáférés-vezérlés, DAC) fölé kényszerített (vagy kötelező) hozzáférés-vezérlési modellt (angolul kötelező hozzáférés-szabályozás, MAC) valósít meg, azaz olvasási, írási, végrehajtási engedélyeket.

A SELinux három üzemmóddal rendelkezik:

  1. érvényesítése — a hozzáférés megtagadása a szabályzat szabályai alapján.
  2. Megengedő — a szabályzatot sértő cselekmények naplózása, amely végrehajtási módban tilos lenne.
  3. mozgássérült — a SELinux teljes letiltása.

Alapértelmezés szerint a beállítások benne vannak /etc/selinux/config

SELinux módok megváltoztatása

Az aktuális mód megtekintéséhez futtassa

$ getenforce

Az üzemmód megengedőre való módosításához futtassa a következő parancsot

$ setenforce 0

vagy módváltáshoz megengedő on érvényesítése, végrehajtani

$ setenforce 1

Ha teljesen le kell tiltania a SELinuxot, akkor ezt 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 az alábbiak szerint:

SELINUX=disabled

A SELinux beállítása

Minden fájl és folyamat egy SELinux kontextussal van megjelölve, amely további információkat tartalmaz, például felhasználó, szerepkör, típus stb. Ha először engedélyezi a SELinuxot, először be kell állítania a környezetet és a címkéket. A címkék és a kontextus hozzárendelésének folyamatát címkézésnek nevezik. A jelölés megkezdéséhez a konfigurációs fájlban módosítjuk a módot megengedő.

$ vi /etc/selinux/config
SELINUX=permissive

Az üzemmód beállítása után megengedő, hozzon létre egy üres rejtett fájlt a gyökérben a névvel autorelabel

$ touch /.autorelabel

és indítsa újra a számítógépet

$ init 6

Megjegyzés: A módot használjuk megengedő jelölésre, a mód használata óta érvényesítése a rendszer összeomlását okozhatja újraindításkor.

Ne aggódjon, ha a letöltés elakad valamelyik fájlon, a jelölés eltart egy ideig. Miután a jelölés befejeződött, és a rendszer elindult, a konfigurációs fájlhoz léphet, és beállíthatja a módot érvényesítéseés futtasd is:

$ setenforce 1

Sikeresen engedélyezte a SELinux használatát a számítógépén.

A naplók figyelése

Előfordulhat, hogy a jelölés vagy a rendszer futása közben hibákat észlelt. Annak ellenőrzéséhez, hogy a SELinux megfelelően működik-e, és nem blokkolja-e a hozzáférést egyetlen porthoz, alkalmazáshoz stb. sem, meg kell néznie a naplókat. A SELinux naplója itt található /var/log/audit/audit.log, de nem kell az egészet elolvasnia a hibák megtalálásához. Használhatja az audit2why segédprogramot a hibák keresésére. Futtassa a következő parancsot:

$ audit2why < /var/log/audit/audit.log

Ennek eredményeként megjelenik egy hibalista. Ha nem volt hiba a naplóban, akkor nem jelennek meg üzenetek.

A SELinux házirend konfigurálása

A SELinux házirend a SELinux biztonsági mechanizmusát szabályozó szabályok összessége. A házirend egy adott környezetre vonatkozó szabályokat határoz meg. Most megtanuljuk, hogyan konfigurálhatunk házirendeket a tiltott szolgáltatásokhoz való hozzáférés engedélyezéséhez.

1. Logikai értékek (kapcsolók)

A kapcsolók (logikai értékek) lehetővé teszik a házirend egyes részei futás közbeni módosítását anélkül, hogy új házirendeket kellene létrehozniuk. Lehetővé teszik a változtatások végrehajtását a SELinux házirendek újraindítása vagy újrafordítása nélkül.

Példa
Tegyük fel, hogy meg akarjuk osztani egy felhasználó saját könyvtárát FTP olvasási/írási funkción keresztül, és már megosztottuk, de amikor megpróbáljuk elérni, nem látunk semmit. Ennek az az oka, hogy a SELinux házirend megakadályozza, hogy az FTP-kiszolgáló olvassa és írjon a felhasználó saját könyvtárába. Módosítanunk kell a házirendet, hogy az FTP-szerver hozzáférhessen a saját könyvtárakhoz. Lássuk, vannak-e kapcsolók ehhez

$ semanage boolean -l

Ez a parancs felsorolja az elérhető kapcsolókat aktuális állapotukkal (be vagy kikapcsolva) és leírásával. Finomíthatja a keresést a grep hozzáadásával, hogy csak ftp-t találjon:

$ semanage boolean -l | grep ftp

és a következőket találja

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Ez a kapcsoló le van tiltva, így engedélyezni fogjuk a következővel setsebool $ setsebool ftp_home_dir on

Mostantól az ftp démonunk hozzáférhet a felhasználó saját könyvtárához.
Megjegyzés: Az elérhető kapcsolók listáját leírás nélkül is megkaphatja, ha ezt megteszi getsebool -a

2. Címkék és kontextus

Ez a SELinux házirend megvalósításának legáltalánosabb módja. Minden fájl, mappa, folyamat és port a SELinux kontextussal van megjelölve:

  • A fájlok és mappák esetében a címkék kiterjesztett attribútumokként vannak tárolva a fájlrendszerben, és a következő paranccsal tekinthetők meg:
    $ ls -Z /etc/httpd
  • A folyamatok és portok esetében a címkézést a kernel kezeli, és ezeket a címkéket az alábbiak szerint tekintheti meg:

folyamat

$ ps –auxZ | grep httpd

kikötő

$ netstat -anpZ | grep httpd

Példa
Most nézzünk egy példát a címkék és a kontextus jobb megértéséhez. Tegyük fel, hogy van egy webszerverünk, amely könyvtár helyett /var/www/html/ использует /home/dan/html/. A SELinux ezt az irányelvek megsértésének tekinti, és Ön nem fogja tudni megtekinteni weboldalait. Ennek az az oka, hogy nem állítottuk be a HTML-fájlokhoz társított biztonsági környezetet. Az alapértelmezett biztonsági környezet megtekintéséhez használja 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 vagyunk httpd_sys_content_t html fájlok kontextusaként. Ezt a biztonsági környezetet be kell állítanunk a jelenlegi könyvtárunkhoz, amely jelenleg a következő kontextussal rendelkezik:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Alternatív parancs egy fájl vagy könyvtár biztonsági környezetének ellenőrzésére:

$ semanage fcontext -l | grep '/var/www'

Szemanázst is használunk a kontextus megváltoztatására, ha megtaláltuk a megfelelő biztonsági környezetet. A /home/dan/html kontextusának megváltoztatásához futtassa 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 megváltoztatta a semanage használatával, a restorecon parancs betölti a fájlok és könyvtárak alapértelmezett környezetét. Webszerverünk mostantól képes lesz olvasni a mappában lévő fájlokat /home/dan/htmlmert a mappa biztonsági környezete a következőre módosult httpd_sys_content_t.

3. Helyi szabályzatok létrehozása

Előfordulhatnak olyan helyzetek, amikor a fenti módszerek nem használnak, és hibákat (avc/denial) kap az audit.log fájlban. Ha ez megtörténik, létre kell hoznia egy helyi szabályzatot. Az összes hibát megtalálja az audit2why használatával, a fent leírtak szerint.

A hibák megoldásához helyi házirendet hozhat létre. Például hibát kapunk a httpd (apache) vagy smbd (samba) kapcsán, grep-et kapunk a hibákról, és létrehozunk egy házirendet hozzájuk:

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 и smb_policy ezek az általunk létrehozott helyi irányelvek nevei. Most be kell töltenünk ezeket a létrehozott helyi házirendeket a jelenlegi SELinux házirendbe. Ez a következőképpen tehető meg:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Helyi szabályzatainkat letöltöttük, és többé nem kapunk semmilyen avc-t vagy denail-t az audit.log-ban.

Ezzel próbáltam segíteni a SELinux megértésében. Remélem, hogy a cikk elolvasása után jobban érzi majd magát a SELinux használatával.

Forrás: will.com

Hozzászólás