GUIDA PER CREARE POLICIES PERSONALIZZATA SELINUX SU CENTOS 5.6 E 6.0
<p><font face="Arial">GUIDA PER CREARE POLICIES PERSONALIZZATA SELINUX SU CENTOS 5.6 E 6.0<br />
__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">Che cos'è Selinux</font></p>
<p><font face="Arial">http://it.wikipedia.org/wiki/Security-Enhanced_Linux</font></p>
<p><font face="Arial">http://wiki.centos.org/HowTos/SELinux<br />
__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">In questa guida vedremo Selinux in particolare come crare policies personalizzate.</font></p>
<p><font face="Arial">Spesso viene consigliato di disabilitarlo per non creare problemi, cosa che a mio avviso non trovo corretta.</font></p>
<p><font face="Arial">Selinux è un sistema di sicurezza che protegge la macchina.</font></p>
<p><font face="Arial">Si puo utilizzare in 3 modi:</font></p>
<p><font face="Arial">enable<br />
permissive<br />
disable</font></p>
<p><font face="Arial">enable: Selinux abilitato</font></p>
<p><font face="Arial">permissive: Selinux non è disabilitato esegue i log ma di fatto non è in funzione</font></p>
<p><font face="Arial">disable: Selinux disabilitato</font></p>
<p><font face="Arial">si puo settare in permissive per test sconsiglio di disabiltarlo <br />
__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">Nel caso sia disabilitato dalle guide red hat viene indicato di eseguire questo comando:</font></p>
<p><font face="Arial">touch /.autorelabel<br />
reboot</font></p>
<p><font face="Arial">PERSONALMENTE NON MI E' MAI CAPITATO DI DISABILITARE SELINUX SCONSIGLIO DI FARLO MASSIMO METTETELO IN PERMISSIVE<br />
__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">File di configurazione</font></p>
<p><font face="Arial">/etc/sysconfig/selinux</font></p>
<p><font face="Arial"># This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= can take one of these two values:<br />
# targeted - Targeted processes are protected,<br />
# mls - Multi Level Security protection.<br />
SELINUXTYPE=targeted</font></p>
<p><font face="Arial">modificando la riga</font></p>
<p><font face="Arial">SELINUX=</font></p>
<p><font face="Arial">possiamo variare lo stato di selinux in questo modo per la modifica sara valida al riavvio del sistema</font></p>
<p><font face="Arial">mentre usando il tool setenforce [ Enforcing | Permissive | 1 | 0 ]</font></p>
<p><font face="Arial">setenforce 1 attiva selinux in modo immediato</font></p>
<p><font face="Arial">setenforce 0 lo mette in permissive in maniera immediata</font></p>
<p><font face="Arial">Possiamo sempre utilizzare il tool sestatus per verificare lo stato di selinux</font></p>
<p><font face="Arial">sestatus<br />
SELinux status: enabled<br />
SELinuxfs mount: /selinux<br />
Current mode: permissive<br />
Mode from config file: permissive<br />
Policy version: 24<br />
Policy from config file: targeted</font></p>
<p><font face="Arial">"Current mode" ci indica lo stato attuale mentre "Mode from config file" ci indica come è settato in /etc/sysconfig/selinux</font></p>
<p><font face="Arial">è ovvio che se setto selinux in enforcing nel file di configurazione poi per test con setenforce lo metto in permissive riavvio la macchina</font></p>
<p><font face="Arial">Selinux ritorna in enforcing quindi ricordatevi sempre di controllare il suo stato.</font></p>
<p><font face="Arial">il tool setenforce è molto utile per test, installato un nuovo applicativo o modifico la macchina e volgio essere sicuro di non avere intralci</font></p>
<p><font face="Arial">metto selinux in permissive e procedo.</font></p>
<p><font face="Arial">Per poi riattivarlo guardare i log e sistemare cio che occorre.<br />
__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">Esistono gia dei boolean che si possono attivare o disattivare </font></p>
<p><font face="Arial">#getsebool -a</font></p>
<p><font face="Arial">vi mostrerà l'elenco completo ed il loro stato "off" o "on"</font></p>
<p><font face="Arial"># getsebool -a | grep samba<br />
samba_create_home_dirs --> off<br />
samba_domain_controller --> off<br />
samba_enable_home_dirs --> off<br />
samba_export_all_ro --> off<br />
samba_export_all_rw --> off<br />
samba_run_unconfined --> off<br />
samba_share_fusefs --> off<br />
samba_share_nfs --> off<br />
use_samba_home_dirs --> off<br />
virt_use_samba --> off</font></p>
<p><font face="Arial">con l'opzione | grep samba visualizziamo solo le boolean per samba ed il loro stato</font></p>
<p><font face="Arial">samba_domain_controller esempio va attivata qualora stessimo creando un domain controller samba</font></p>
<p><font face="Arial">use_samba_home_dirs esempio va attivata qualora volessimo creare condivisioni in /home</font></p>
<p><font face="Arial">per attivare una boolean</font></p>
<p><font face="Arial">#setsebool -P samba_domain_controller on</font></p>
<p><font face="Arial">per disattivarla</font></p>
<p><font face="Arial">#setsebool -P samba_domain_controller off</font></p>
<p><font face="Arial">A questo indirizzo trovate la lista delle boolean ed il loro ruolo</font></p>
<p><font face="Arial">http://wiki.centos.org/TipsAndTricks/SelinuxBooleans</font></p>
<p><font face="Arial">__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">Pacchetti necessari per la creazione di una policies personalizzata</font></p>
<p><font face="Arial">Verificare pacchetto policycoreutils-python su Centos 6 di default non è installato su Centos 5.6 si</font></p>
<p><font face="Arial">yum install policycoreutils-python</font></p>
<p><font face="Arial">__________________________________________________________________________________________________________________________________________________________________________________________</font></p>
<p><font face="Arial">Creiamo la policy</font></p>
<p><font face="Arial">in genere consiglio di creare una cartella dove tenere le policy esempio /home/cfg/mypolicies/</font></p>
<p><font face="Arial">#cd /home/cfg/mypolicies</font></p>
<p><font face="Arial">#audit2allow -i /var/log/audit/audit.log -m mypolicies > mypolicies.te</font></p>
<p><font face="Arial"># vi mypolicies.te</font></p>
<p><font face="Arial">Ora fare bene attenzione a cosa trovate dentro il file potrebbero esserci sezioni relative ad altri programmi in tal caso sarebbero da eliminare; oppure potrebbero essere indicato di</font></p>
<p><font face="Arial">attivare boolean tramite setsebool</font></p>
<p><font face="Arial">CANCELLIAMO CIO' CHE NON CI INTERESSA E COMPILIAMO IL MODULO</font></p>
<p><font face="Arial"># checkmodule -M -m -o mypolicies.mod mypolicies.te</font></p>
<p><font face="Arial">pacchettiziamo</font></p>
<p><font face="Arial"># semodule_package -o mypolicies.pp -m mypolicies.mod</font></p>
<p><font face="Arial">carichiamo</font></p>
<p><font face="Arial"># semodule -i mypolicies</font></p>
<p><font face="Arial">controlliamo che sia stato caricato</font></p>
<p><font face="Arial"># semodule -l<br />
__________________________________________________________________________________________________________________________________________________________________________________________<br />
</font></p>