====== SELinux ====== ==== Setup iniziale ==== Installazione dei pacchetti necessari al management di SELinux. [root@statichostname ~]# yum -y install policycoreutils selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans policycoreutils-devel selinux-policy-devel Attivazione di SELinux e relabel del file system [root@statichostname ~]# vi /etc/selinux/config [root@statichostname ~]# grep ^SELINUX= /etc/selinux/config SELINUX=enforcing [root@statichostname ~]# touch /.autorelabel [root@statichostname ~]# reboot Creazione utenti [root@statichostname ~]# useradd user1 [root@statichostname ~]# useradd user2 [root@statichostname ~]# # set password (user1/user1, user2/user2) ==== Esercitazione 1 ==== - Visualizzazione dello stato di SELinux - Visualizzazione del context dei processi di systemd e cron - Visualizzazione del context dei file /etc/passwd, /etc/shadow, /etc/cron.d (verificare la presenza degli extended attributes corrispondenti) - Visualizzazione degli SELinux user e associazione con role e level - Visualizzazione della associazione degli user agli SELinux user - Visualizzare i context di httpd e della sua DocumentRoot ed identificare la rule che permette l'accesso\\ Utilizzare sesearch (man sesearch) per trovare la rule) - Verificare che cambiando il context type di /var/www/html/index.html in var_t l'accesso a httpd e' negato, quindi restorare il context del file e verificare che l'accesso e' consentito - Spostare la DocumentRoot di httpd in /www/html\\ Per fare questo si deve: modificare la configurazione di httpd, creare la nuova document root, verificare che non funziona, assegnare il default context (semanage fcontext), e modificare il context (restorecon) ==== Esercitazione 2 ==== - Utilizzare seinfo per visualizzare l'esistenza di un type init_t, l'elenco degli attributi associati a questo type e verificare che domain sia tra questi - Utilizzare seinfo per visualizzare l'esistenza dell'attribute domain, l'elenco di type che hanno domain tra i loro attributi e verificare che init_t sia tra questi - Domain transition: identificare le policy che permettono la domain transition da systemd a httpd - Visualizzare domain e type di systemd, httpd, /usr/sbin/httpd - Verificare l'esistenza di una rule che permetta a systemd di eseguire /usr/sbin/httpd - Verificare che esista una rule che definisca che il type dell'eseguibile sia entrypoint del dominio di destinazione - Verificare che esista una rule che permette al parent domain (init_t) una transizione verso il destination domain (httpd_t) - Verificare l'esistenza di una transition rule che definisca il default destination domain conseguente alla esecuzione di un eseguibile di type httpd_exec_t da parte di un processo di domain init_t ==== Esercitazione 3 ==== - Confinamento di un utente: confinare user1 a user_u (verifica impossibilita' di fare su) - Visualizzazione context del processo di login dell'utente user1 e verifica che l'utente user1 possa eseguire su e diventare user2 - Confinare il linux user user1 associandolo all'SELinux user user_u - Verificare che user1, il cui dominio attuale e' user_t, non puo' fare su e diventare user2 - Visualizzazione del policy module apache - Abilitare tramite boolean httpd a leggere le home directory degli utenti ==== Esercitazione 4 ==== - Generare un messaggio di errore eseguendo il comando **su** come user **user1** - Analizzare l'errore e generare un modulo che contenga le rule per rendere lecita l'operazione - Caricare il modulo generato e verificare che l'operazione ora e' permessa - Disabilitare e rimuovere il modulo, verificando che l'operazione e' nuovamente proibita