
Solo estoy tratando de comprender mejor el SELinux específico. Si bien entiendo que los usuarios, procesos, puertos, etc. están etiquetados con un cuádruple <user>,role>,<type>,<sensitivity>
y cómo configurar las etiquetas usando semanage, restorecon
, etc., todavía no entiendo cómo SELinux decide si se puede acceder a un recurso desde un proceso y cómo se puede acceder a él. el proceso.
Por ejemplo, mirando mi httpd
en REL8 puedo ver las siguientes etiquetas en el proceso y el DocumentRoot
directorio predeterminado /var/www/html
:
[root@mylinux targeted]# ls -alZ /var/www/html
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0 6 Aug 17 16:53 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Aug 17 16:53 ..
[root@mylinux targeted]# ps -efZ | grep httpd
system_u:system_r:httpd_t:s0 root 35291 1 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35292 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35293 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35294 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 apache 35295 35291 0 13:23 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 35838 27088 0 13:30 pts/0 00:00:00 grep --color=auto httpd
Pero lo que estoy buscando son respuestas a las siguientes preguntas:
- ¿Por qué se permite al proceso httpd acceder a los archivos en /var/www/html?? ¿Qué etiquetas se comprueban aquí, en qué orden y qué etiquetas deben coincidir?
- ¿Cómo se ve la
role
definición de que este acceso está permitido?? ¿Cómo puedo verificar la definición de rol? - ¿Cómo puedo determinar cómo un proceso puede acceder a un recurso de una etiqueta específica??
- ¿Puedo, como administrador, modificar la función para que, por ejemplo, también se pueda acceder a otros contextos de archivos??
Muchas gracias de antemano por cualquier aclaración.
Respuesta1
De su salida:
[root@mylinux targeted]# ps -efZ | grep httpd
system_u:system_r:httpd_t:s0 root 35291 1 0 13:23 ?
httpd
se ejecuta como httpd_t
etiqueta. Dicha etiqueta se adjunta al proceso mediante una regla de transición de dominio Selinux específica.
Entonces, como podemos ver:
[root@mylinux targeted]# ls -alZ /var/www/html
total 0
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0 6 Aug 17 16:53 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Aug 17 16:53 ..
/var/www/html
tiene la etiqueta de dominio permitido httpd_sys_content_t
. Por lo tanto, un proceso que se ejecuta httpd_d
puede leer el contenido del sistema de archivos etiquetado con el mismo httpd_sys_content_t
.
Todo esto se controla mediante reglas de Selinux muy complejas (y detalladas). No se espera que los administradores de sistemas comprendan todo el conjunto de reglas, así que no entre en pánico. Lo importante es entender es a) registros de Selinux, b) semanage
yc)audit2allow
Para más información, puedes leerDocumentos de RedHat Selinux
Para responder a sus preguntas:
¿Por qué se permite al proceso httpd acceder a los archivos en /var/www/html?Porque una regla permite que un proceso con
httpd_t
etiqueta lea archivos con lahttpd_sys_content_t
etiqueta (es decirALLOW apache_process apache_log:FILE READ;
:)¿Cómo es el rol que define que se permite este acceso?Los roles aplican MAC a los tipos de usuarios (es decir, personal), pero no se utilizan en la política predeterminada; más bien, se utilizan en la política MLS (no predeterminada).
¿Cómo puedo determinar cómo un proceso puede acceder a un recurso de una etiqueta específica?Puede volcar todo el conjunto de políticas, pero esto no proporcionará información simple. Más bien, echa un vistazo a
semange fcontext -l
¿Puedo, como administrador, modificar la función para que, por ejemplo, también se pueda acceder a otros contextos de archivos?Seguro. Puede escribir una política desde cero (no recomendado) o usarla
audit2allow
(mejor). Sin embargo, trate de evitar esto ya que cualquier cambio de política personalizada será difícil de rastrear/administrar; más bien, cuando sea posible, utilicesetsebool
osemanage
personalice su política base.