Capítulo 4. Configuración de SELinux para aplicaciones y servicios con configuraciones no estándar
Cuando SELinux está en modo de aplicación, la política por defecto es la política objetivo. Las siguientes secciones proporcionan información sobre cómo establecer y configurar la política de SELinux para varios servicios después de cambiar los valores predeterminados de configuración, como los puertos, las ubicaciones de las bases de datos o los permisos del sistema de archivos para los procesos.
En los siguientes procedimientos, aprenderás a cambiar los tipos de SELinux para los puertos no estándar, a identificar y arreglar las etiquetas incorrectas para los cambios de directorios por defecto, y a ajustar la política usando booleanos de SELinux.
4.1. Personalización de la política SELinux para el servidor HTTP Apache en una configuración no estándar Copiar enlaceEnlace copiado en el portapapeles!
Puede configurar el servidor HTTP Apache para que escuche en un puerto diferente y proporcione contenido en un directorio no predeterminado. Para evitar las consiguientes denegaciones de SELinux, siga los pasos de este procedimiento para ajustar la política de SELinux de su sistema.
Requisitos previos
-
Se instala el paquete
httpdy se configura el servidor HTTP Apache para que escuche en el puerto TCP 3131 y utilice el directorio/var/test_www/en lugar del directorio predeterminado/var/www/. -
Los paquetes
policycoreutils-python-utilsysetroubleshoot-serverestán instalados en su sistema.
Procedimiento
Inicie el servicio
httpdy compruebe el estado:# systemctl start httpd # systemctl status httpd ... httpd[14523]: (13)Permission denied: AH00072: make_sock: could not bind to address [::]:3131 ... systemd[1]: Failed to start The Apache HTTP Server. ...La política de SELinux asume que
httpdse ejecuta en el puerto 80:# semanage port -l | grep http http_cache_port_t tcp 8080, 8118, 8123, 10001-10010 http_cache_port_t udp 3130 http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 pegasus_https_port_t tcp 5989Cambie el tipo de SELinux del puerto 3131 para que coincida con el puerto 80:
# semanage port -a -t http_port_t -p tcp 3131Comienza de nuevo
httpd:# systemctl start httpdSin embargo, el contenido sigue siendo inaccesible:
# wget localhost:3131/index.html ... HTTP request sent, awaiting response... 403 Forbidden ...Encuentre el motivo con la herramienta
sealert:# sealert -l "*" ... SELinux is preventing httpd from getattr access on the file /var/test_www/html/index.html. ...Compare los tipos de SELinux para la ruta estándar y la nueva usando la herramienta
matchpathcon:# matchpathcon /var/www/html /var/test_www/html /var/www/html system_u:object_r:httpd_sys_content_t:s0 /var/test_www/html system_u:object_r:var_t:s0Cambie el tipo de SELinux del nuevo directorio de contenido
/var/test_www/html/al tipo del directorio por defecto/var/www/html:# semanage fcontext -a -e /var/www /var/test_wwwReetiquetar el directorio
/varrecursivamente:# restorecon -Rv /var/ ... Relabeled /var/test_www/html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /var/test_www/html/index.html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
Pasos de verificación
Compruebe que el servicio
httpdestá funcionando:# systemctl status httpd ... Active: active (running) ... systemd[1]: Started The Apache HTTP Server. httpd[14888]: Server configured, listening on: port 3131 ...Compruebe que el contenido proporcionado por el servidor HTTP Apache es accesible:
# wget localhost:3131/index.html ... HTTP request sent, awaiting response... 200 OK Length: 0 [text/html] Saving to: ‘index.html’ ...
Recursos adicionales
-
Las páginas de manual
semanage(8),matchpathcon(8), ysealert(8).