SELinux httpd escribe acceso a un directorio

9

Soy nuevo en SELinux. vino de debian. Quiero dar httpdacceso a un directorio.

El navegador de alertas de SELinux sugiere:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

No pude entender cómo funciona este comando. No especifico una ruta de directorio en ningún lado. ¿Cómo sabe qué directorio permitir httpd?

Anteriormente he usado grep para extraer texto de salida o archivo. Pero aquí grep se está utilizando en un proceso. Eso no lo entendí.

También cuál es la solución real. Si quiero dar acceso de escritura httpd a un directorio?

Neel Basu
fuente
44
Y para responder a su otra pregunta, audit2allow lee el archivo de registro de SELinux y escribe una política que permite todo lo que ha sido bloqueado; el nombre del directorio estará en el mensaje de registro. Al grepping para httpd lo estás limitando un poco, pero el método es aún más amplio de lo que debería ser.
miken32 23/0614
Respuesta relevante: unix.stackexchange.com/questions/511929/…
Salah-1

Respuestas:

17

Aquí se explica cómo cambiar permanentemente el contexto de un directorio:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

Aquí hay más documentación sobre los diferentes contextos para httpd:

RHEL 7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

RHEL 6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

Greg
fuente
¡Perfecto! Trabajó para mí en Fedora 26, policycoreutils-python ya estaba instalado por defecto.
Sir_Faenor
5

SELinux utiliza atributos extendidos que pueden agregarse a las estructuras de directorio en el disco. Piensa si estos son metadatos. Las listas de control de acceso (ACL) son otra.

Los atributos extendidos que necesita agregar a un directorio se denominan contextos y SELinux actúa como un policía de tráfico, asegurándose de que un ejecutable que tiene ciertos contextos tenga acceso al sistema de archivos en función de estos contextos. Puede ver lo que está disponible en el directorio utilizando el -Zinterruptor para ls.

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

Aquí puede ver que estos directorios tienen el contexto httpd_sys_script_exec_t:s0en el cgi-bindirectorio. y el htmldir. tiene httpd_sys_content_t:s0.

Puede agregarlos con el chconcomando:

$ sudo chcon -t httpd_sys_content_t public_html

El comando que está preguntando simplemente cargará el módulo mypoll.pp. No creo que otorgue ningún permiso a nada, es probable que haya más mensajes audit.logque le faltan con su comando, que le dirá con más detalle lo que necesita. hacer para permitir el acceso.

Le animo a que se tome un tiempo y se familiarice con SELinux. Es confuso al principio, pero generalmente es sencillo, después de pasar un poco de tiempo con él. Vea los recursos a continuación para comenzar.

Referencias

slm
fuente
Gracias. Los revisaré. Pero, ¿puede decirme por ahora qué debo hacer para dar acceso de escritura a este directorio?
Neel Basu
Si es contenido que desea que Apache lea, probablemente necesite agregar este contexto al directorio:chcon -R -t httpd_sys_content_t <dir>
slm