SELinux: ¿Por qué httpd puede leer archivos en /var/www/html?

SELinux: ¿Por qué httpd puede leer archivos en /var/www/html?

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 httpden REL8 puedo ver las siguientes etiquetas en el proceso y el DocumentRootdirectorio 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:

  1. ¿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?
  2. ¿Cómo se ve la roledefinición de que este acceso está permitido?? ¿Cómo puedo verificar la definición de rol?
  3. ¿Cómo puedo determinar cómo un proceso puede acceder a un recurso de una etiqueta específica??
  4. ¿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 ?        

httpdse ejecuta como httpd_tetiqueta. 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/htmltiene la etiqueta de dominio permitido httpd_sys_content_t. Por lo tanto, un proceso que se ejecuta httpd_dpuede 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) semanageyc)audit2allow

Para más información, puedes leerDocumentos de RedHat Selinux

Para responder a sus preguntas:

  1. ¿Por qué se permite al proceso httpd acceder a los archivos en /var/www/html?Porque una regla permite que un proceso con httpd_tetiqueta lea archivos con la httpd_sys_content_tetiqueta (es decir ALLOW apache_process apache_log:FILE READ;:)

  2. ¿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).

  3. ¿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 asemange fcontext -l

  4. ¿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, utilice setseboolo semanagepersonalice su política base.

información relacionada