[[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