Monday, October 12, 2009

SELinux

Trocha Teorie

SELinux má tři základní typy (POLICIES)
  • Strict - vše zkázáno, pouze se povoluje
  • MLS(Multi Level Security) - RHEL 5 se speciální licencí
  • Targeted - pouze některé procesy(systémové) jsou omezeny
Standardně se používá targeted.

SELinux může být ve třech stavech
  • disable
  • permissive - pouze zaznamenává případné konflikty
  • enforcing - vynucuje pravidla
SELinux Labeling
SELinux přidává ke všemu(souborům, procesům, porty, pakety ....) toto:

user_u:role_r:types_t:MLS

např:
system_u:object_r:httpd_exec_t:s0

Jediné co se v targeted používá je types_t(Type Enforcement) a user_u(velice omezeně)

user_u práva
/usr/sbin/semanage login -l
Ukáže mapování uživatelů na SELinux

  • unconfined_u .. nevztahuje se na něj SELinux (takto spuštěné procesy se chovají stejně jako bez SELinuxu)
  • system_u .. standardní systémový uživatel (řídí se dle SELinux pravidel)
type_t práva
Vše co končí na _t patří do Type. Práva se dědí dle adresáře.

  • httpd_t .. základní jméno
  • httpd_sys_content_t .. static web
  • httpd_sys_script_exec_t .. skripty, které může Apache spouštět
  • httpd_sys_content_rw_t .. soubory do, kterých může zapisovat pouze httpd_sys_script_exec_t
  • httpd_sys_content_ra_t .. pouze přidávat
Nastavení se dají zjistit například nainstalováním SELinux devel

yum install selinux-policy-devel.noarch

A průzkumem jednotlivých konfiguráků v

/usr/share/selinux/devel/include

Pro jednotlivé adresáře jsou práva zadaná v

/etc/selinux/targeted/contexts/files/

SELinux transition
Některá pravidla slouží k tomu, aby měnila type_t spouštěných aplikací.

Například toto initrc_t, named_exec_t, named_t nám říká, pokud proces initrc_t spouští soubor named_exec_t mají přejít práva z initrc_t na named_t.
Normálně to co spustí proces initrc_t běží s právy initrc_t.

Příklad předávání práv:


Změna policy za běhu

Výpis všech nestavení, které se dají měnit za běhu
getsebool -a

Nastavení požadované hodnoty
setsebool ­-P virt_use_nfs [1|0]

Konfiguráky
/etc/selinux

Logy
/var/log/audit/audit.log

Zapnutí SELinuxu
Pro změnu z disable na permissive nebo enforcing je potřeba restartovat počítač.
Změna z permissive na enforcing a obráceně je možná za chodu.

Změnu lze provést zde
/etc/selinux/config

Změna za chodu (trvá pouze do restartu jinak se musí zapsat do konfiguráku)

Permissive na Enforcing
echo "1" > /selinux/enforce nebo setenforce 0

Enforcig na Permissive
echo "0" > /selinux/enforce nebo setenforce 1

Ověření stavu SELinuxu
sestatus

SELinux změněné příkazy
ls -Z, id -Z, ps auxZ, lsof -Z, find / -context

Moduly SELinuxu
Vypsání všech modulů
semodule -l

Změna SELinux práv na souborech
Krátkodobá (do restartu)
chcon -t type file-name

Trvalá (zapíše do souboru /etc/selinux/targeted/contexts/files/file_contexts.local)
Soubor
/usr/sbin/semanage fcontext -a -t samba_share_t /etc/file1
Adresář
/usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"

Obnovení práv podle souborů v /etc/selinux/targeted/contexts/files/
/sbin/restorecon -R -v /adresar/

Práce se soubory
Kopírování
Zachování práv
cp -Z co kam
Přesun
Vždy si zachovává práva co měl.
Kontrola práv
Udělá kontrolu zda jsou nastavena práva dle definic.
/usr/sbin/matchpathcon -V Cesta

LinkFedora SELinux
http://fedoraproject.org/wiki/SELinux
Ceska Dokumentace
http://www.root.cz/knihy/ceska-dokumentace-pro-selinux/
Clanky Root
http://www.root.cz/serialy/jak-spravne-na-selinux/

No comments:

Post a Comment