Tengo un pequeño servidor web (CentOS 8) que ejecuta una pequeña aplicación php y mysql. También ejecuta Nagios, BIND y Postfix como MX secundario.
Todo parece "funcionar" y nunca he notado ningún problema. Puedo cargar Nagios y la otra aplicación PHP a través del puerto 443. Si cargo las URL a través del puerto http/puerto 80, Apache está configurado para redirigir al 443 y lo hace igualmente bien.
Sin embargo, selinux registra habitualmente el siguiente AVC, lo que indica algún problema en el puerto 80:
time->Sat Dec 12 01:55:16 2020
type=AVC msg=audit(1607756116.608:1381369): avc: denied { name_connect } for pid=631936 comm="httpd" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
Al mirar /var/log/httpd/error_log
, veo el Permiso denegado correspondiente para el mismo pid al mismo tiempo:
[Sat Dec 12 01:55:16.608941 2020] [core:warn] [pid 631936] (13)Permission denied: AH00056: connect to listener on [::]:80
¿Hay alguna manera de rastrear qué es exactamente lo que Apache está tratando de hacer y que se está bloqueando? Como mencioné, nada parece estar roto, por lo que no he intentado crear un módulo para permitir esto. Pero me gustaría encontrar aquí la causa raíz del mensaje de denegación de AVC y:
- Permitirlo si es inofensivo y realmente debería permitirse, O
- Configure Apache para que deje de intentar hacer lo que sea que esté intentando hacer.
Respuesta1
La conexión que se realiza aquí es que Apache se vuelve a conectar consigo mismo: estos se registran como un internal dummy connection
y son la forma de Apache dedespertando sus procesos hijos.
De forma predeterminada, SELinux no permite que el servidor web realice conexiones de red salientes. Varios booleanos cambiarán este comportamiento, pero probablemente el que quieras usar para solucionar este problema es httpd_graceful_shutdown
el que permite a Apache conectarse a cualquier puerto TCP etiquetado http_port_t
(80, 81, 443, 488, 8008, 8009, 8443, 9000), y nada. demás. Como sugiere el nombre, esto hace que el apagado de Apache no arroje advertencias falsas, ya que también quiere conectarse consigo mismo cuando se apaga. También eliminará el problema instantáneo y permitirá la conexión ficticia interna.
setsebool -P httpd_graceful_shutdown 1