Lo prometido es deuda y aquí, en esta primera parte, veremos los conceptos básicos del funcionamiento de SELinux en nuestro sistema operativo.
Entendiendo cómo funciona
Al finalizar una instalación tradicional de un sistema Red Hat o derivado (CentOS, Fedora, etc.) podemos confirmar que SELinux se encuentra activo.
[root@localhost ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targetedAdemás instalaremos el paquete setroubleshoot-server y sus dependencias, el cual tiene las herramientas de depuración y resolución de problemas para SELinux.
[root@localhost ~]# yum install -y setroubleshoot-server
Para ver una lista de los usuarios de SELinux y los roles asignados, lo haremos con el comando semanage el cual es parte del paquete setroubleshoot-server:
[root@localhost ~]# semanage user -l Labeling MLS/ MLS/ SELinux User Prefix MCS Level MCS Range SELinux Roles git_shell_u user s0 s0 git_shell_r guest_u user s0 s0 guest_r root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r sysadm_u user s0 s0-s0:c0.c1023 sysadm_r system_u user s0 s0-s0:c0.c1023 system_r unconfined_r unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r user_u user s0 s0 user_r xguest_u user s0 s0 xguest_r
Contexto de seguridad
Un contexto de seguridad en SELinux para un fichero o proceso está compuesto por cuatro atributos: SELinux User, Role, Type/Domain y Category/Level.
Para ver el contexto de un fichero podemos hacer uso del comando ls -Z.
En la segunda parte de esta serie veremos algunos detalles del filesystem /selinux y el fichero de configuración /etc/selinux/config
Para ver el contexto de un fichero podemos hacer uso del comando ls -Z.
[root@localhost ~]# ls -Z anaconda-ks.cfg -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfgComo podemos observar, hay información que sin la opción -Z no podemos ver:
- system_u: Es el SELinux User
- object_r: Es el Role
- admin_home_t: Es el Type/Domain
- s0: Es el Category/Level
[root@localhost ~]# ps auxZ | grep postfix system_u:system_r:postfix_master_t:s0 root 984 0.0 0.6 81272 3408 ? Ss 23:18 0:00 /usr/libexec/postfix/master system_u:system_r:postfix_pickup_t:s0 postfix 990 0.0 0.6 81352 3360 ? S 23:18 0:00 pickup -l -t fifo -u system_u:system_r:postfix_qmgr_t:s0 postfix 991 0.0 0.6 81420 3408 ? S 23:18 0:00 qmgr -l -t fifo -u unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 1172 0.0 0.1 103244 852 pts/0 S+ 23:23 0:00 grep postfix
Con el comando anterior estamos visualizando el contexto del proceso postfix, un Mail Transfer Agent (MTA). Al igual que con el comando ls, con la opción Z hay datos que no visualizamos sin ella.
- system_u: Es el SELinux user
- system_r: Es el Role
- postfix_master_t: Es el Type/Domain
- s0: Es el Category/Level
En la segunda parte de esta serie veremos algunos detalles del filesystem /selinux y el fichero de configuración /etc/selinux/config
Excelente
ResponderEliminar