User Tools

Site Tools


cn:ccr:formazione:centos7:2018-11:selinux

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

  1. Visualizzazione dello stato di SELinux
  2. Visualizzazione del context dei processi di systemd e cron
  3. Visualizzazione del context dei file /etc/passwd, /etc/shadow, /etc/cron.d (verificare la presenza degli extended attributes corrispondenti)
  4. Visualizzazione degli SELinux user e associazione con role e level
  5. Visualizzazione della associazione degli user agli SELinux user
  6. 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)
  7. 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
  8. 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

  1. 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
  2. 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
  3. Domain transition: identificare le policy che permettono la domain transition da systemd a httpd
    1. Visualizzare domain e type di systemd, httpd, /usr/sbin/httpd
    2. Verificare l'esistenza di una rule che permetta a systemd di eseguire /usr/sbin/httpd
    3. Verificare che esista una rule che definisca che il type dell'eseguibile sia entrypoint del dominio di destinazione
    4. Verificare che esista una rule che permette al parent domain (init_t) una transizione verso il destination domain (httpd_t)
    5. 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

  1. Confinamento di un utente: confinare user1 a user_u (verifica impossibilita' di fare su)
    1. Visualizzazione context del processo di login dell'utente user1 e verifica che l'utente user1 possa eseguire su e diventare user2
    2. Confinare il linux user user1 associandolo all'SELinux user user_u
    3. Verificare che user1, il cui dominio attuale e' user_t, non puo' fare su e diventare user2
  2. Visualizzazione del policy module apache
  3. Abilitare tramite boolean httpd a leggere le home directory degli utenti

Esercitazione 4

  1. Generare un messaggio di errore eseguendo il comando su come user user1
  2. Analizzare l'errore e generare un modulo che contenga le rule per rendere lecita l'operazione
  3. Caricare il modulo generato e verificare che l'operazione ora e' permessa
  4. 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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki