cn:ccr:formazione:centos7:2018-11:selinux
Table of Contents
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
cn/ccr/formazione/centos7/2018-11/selinux.txt · Last modified: 2018/11/29 14:01 by brunengo@infn.it