[[oktatas:linux|< Linux]] ====== SELinux ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2012 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== A SELinux a Security Enhanced Linux rövidítése, és a szabványos linuxok egy kiterjesztése, amely lehetővé teszi hozzáférés szabályozást, folyamatok rendszerhez való hozzáférésének állítását. Eredetileg az NSA fejlesztette. Ez a lap csak egy rövid leírás. ==== DAC ==== A DAC a Discretionary Access Control rövidítése, amely tulajdonképpen az Unix rendszerekből örökölt tulajdonos és csoport alapú hozzáférés vezérlés, így minden Linux alapból tartalmazza. ==== MAC ==== A MAC a Mandatory Access Control rövidítése, amely egy újabb biztonsági modell. Lehetővé teszi, olyan korlátozások bevezetését, amelyet más felhasználó nem képes megváltoztatni. Szigorú szabályok beállítását teszi lehetővé. A SELinux tulajdonképpen a MAC modell egy megvalósítása. További még szigorúbb szabályozáshoz nézd meg az [[http://www.rsbac.org|RSBAC]] és/vagy a [[http://www.grsecurity.net|Grsecurity]] megvalósításokat. ===== Vezérelvek ===== * targeted * nincs minden korlátozva. A hálózati szolgáltatások védettek. * strict * minden tilos ami nincs megengedve * multi-level security * több szintű hozzáférés. A hozzáférések tartományokhoz és erőforrásokhoz rendeltek. * multi-category security * kategorizált hozzáférés ===== Biztonsági környezetek ===== Egy folyamat jogai ezen környezetektől függ. * user * SELinux felhasználó (ez nem egyenlő egy Linuxos felhasználóval. * role * SELinux szerep, egy erőforráshoz rendelve. * type * Erőforrástípuis * sensitivity * Erőforrások érzékenységi szintje. * A következő érzékenységek lehetségesek: * Public * Internal * Restricted * Confidential * Strictly Confidential * A sensitivity környezet csak az MLS vezérelv mellett használható. * category * Az erőforrásokat kategóriákban sorolhatjuk. * Ez akkor hasznos, ha az azonos típusú erőforrásokat szét akarjuk választani. * A category környezet használható az MLS és a MCS vezérelvek mellett. ===== Telepítés ===== A Debian GNU/Linux kernel alapból támogatja SELinuxot, használatához azonban telepíteni kell néhány felhasználói térben futó programot. A SELinux használatához szükség van ext2, ext3 vagy ext4 fájlrendszerre és egy GRUB vagy LILO bootmenedzserre. Telepítés előtt a Debian GNU/Linuxos rendszerben elve van egy /selinux könyvtár üresen. Másik könyvtár az /etc/selinux. Ebben egyetlen fájl található: /etc/selinux/semanage.conf. Telepítsük a SELinuxhoz a szükséges csomagokat: apt-get install selinux-basics selinux-policy-default Telepítés utána a /etc/selinux könyvtár újabb könyvtárakkal és fájlokkal gazdagodik. A Könyvtár ekkor így néz ki: * default/ * config * restorecond.conf * restorecond_user.conf * semanage.conf A SELinux aktiválása: selinux-activate Ehhez hasonló sorokat láthatunk: Activating SE Linux Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.2.0-4-686-pae Found initrd image: /boot/initrd.img-3.2.0-4-686-pae done SE Linux is activated. You mey need to reboot now. A beállítások újraindítás után lesznek érvényesek: reboot A SELinux a fájlrendszert és a folyamatokat felcímkézi, alkalmazza a beállításokat. Ellenőrizhetjük a fájlrendszer címkéit: ls -Z /bin A folyamatok címkéit: ps axZ Ellenőrizzük a SELinux telepítését: check-selinux-installation A második újraindulás után ellenőrizzük, hogy a SELinux be van-e kapcsolva: sestatus Az engedélyezett modulokat is megnézhetjük: semodule -l ===== Alapbeállítások ===== Az enforce mód engedélyezése: setenforce 1 Az enforce mód kikapcsolása: setenforce 0 Az enforcemód lekérdezése: getenforce Lehetséges eredmények: | Permissive | Enforcing | | Enforcemód kikapcsolva | Enforcemód bekapcsolva | A SELinux kikapcsolása nano /etc/selinux/config Az állományban beállítjuk: SELINUX=disabled Futtatom a setenforce parancsot a kívánt paraméterrel: setenforce 0 ===== SELinux címkék ===== A fájlokat, a könyvtárakat és a folyamatokat a SELinux úgy tudja használni, ha azok meg vannak jelölve címkékkel. Egy ilyen címkére példa: system_u:object_r:user_home_t:s0 A fájlok esetén az ilyen címkék meglétéről már a ls -l parancs is tájékoztat bennünket. Lássuk egy könyvtár esetén: ls -ld Lehetséges kimenet: drwxr-xr-x. 59 joska joska 4096 jún 15 20:51 /home/joska/Tervek A kimenetben a pont (.), azt jelenti könyvtár fel van címkézve. Lássuk ezeket a címkéket: ls -Zd /home/joska/Tervek A -Z kapcsoló megmutatja a címkéket. A lehetséges kimenet: system_u:object_r:user_home_t:s0 /home/joska/Tervek Folymatok esetén: ps axZ Lehetséges Kimenet: LABEL PID TTY STAT TIME COMMAND system_u:system_r:init_t:s0 1 ? Ss 0:01 init [2] system_u:system_r:kernel_t:s0 1 ? S 0:00 [kthreadd] system_u:system_r:kernel_t:s0 1 ? S 0:00 [ksoftirqd/0] system_u:system_r:kernel_t:s0 1 ? S 0:00 [migration/0] ... system_u:system_r:postfix_master_to:s0 3410 ? S 0:00 [/usr/lib/postfix/master ... ===== Irodalom ===== * http://selinuxproject.org * http://wiki.debian.org/SELinux * https://www.wzdftpd.net/docs/selinux * http://www.lurking-grue.org/gettingstarted_newselinuxHOWTO.html * http://www.crypt.gen.nz/papers/selinux_introduction.html * http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/ * http://www.crypt.gen.nz/selinux/faq.html (FAQ) * http://www.crypt.gen.nz/papers/selinux_introduction.html (SELinux bemutatás) * http://debian-handbook.info/browse/stable/sect.selinux.html * http://www.freetechbooks.com/efiles/selinuxnotebook/The_SELinux_Notebook_Volume_1_The_Foundations.pdf * https://www.wzdftpd.net/docs/selinux/ (Debian SELinux Handbook) * http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Introduction-SELinux_on_Other_Operating_Systems.html * http://www.gentoo.org/proj/en/hardened/selinux/selinux-handbook.xml?part=1&chap=1