Rocky Linux / Desactivar SELinux y volver a activarlo: modos y precauciones
Es más seguro verificar primero los problemas y modificar las políticas necesarias que desactivar SELinux (Security-Enhanced Linux) por completo en Rocky Linux. Si se necesita diagnóstico, use temporalmente el modo permissive, y considere la desactivación permanente solo cuando no haya otra solución debido a software incompatible.
Verificar el estado actual de SELinux
getenforce muestra el modo de operación actual en una línea, y sestatus muestra detalles como el modo y la política en el archivo de configuración.
getenforce
sestatus
| Modo | Significado |
|---|---|
Enforcing |
Registra violaciones de políticas y las bloquea efectivamente. Es el estado recomendado para servidores de producción. |
Permissive |
Registra violaciones de políticas pero no las bloquea. Adecuado para análisis de causas y pruebas de políticas. |
Disabled |
SELinux no está activo y también se detiene la gestión de contextos de seguridad de archivos. |
Uso temporal del modo Permissive
Cambios solo para el arranque actual
setenforce 0 cambia un sistema con SELinux activo a modo permisivo durante este arranque. No activa SELinux si está Disabled. Use el cambio temporal para comparar síntomas y vuelva a Enforcing al terminar; otros controles, como permisos de archivos y cortafuegos, siguen aplicándose.
sudo setenforce 0
getenforce
Volver al modo enforcing
sudo setenforce 1
getenforce
El hecho de que el problema desaparezca en modo permisivo solo indica una posible relación con SELinux, no concluye que se deba desactivar SELinux. Debe revisar los registros de auditoría para ajustar el contexto de archivos, booleanos o tipos de puertos necesarios.
Verificación de la causa del bloqueo
Consultar registros recientes de denegaciones AVC
Las denegaciones de acceso de SELinux se registran en los registros de auditoría como mensajes AVC (Access Vector Cache). Los registros recientes se pueden consultar de la siguiente manera.
sudo ausearch -m AVC,USER_AVC -ts recent
Si no existe ausearch, verifique el paquete audit y el estado del servicio. Examine los procesos en los registros, las rutas de destino y los permisos solicitados para determinar si coinciden con el funcionamiento real del servicio.
Restauración del contexto de seguridad de archivos
Un contexto de seguridad identifica el tipo y otros atributos que utiliza la política. Confirme que /srv/www existe, corresponde al contenido web previsto y no tiene una regla local que deba conservar. semanage fcontext registra la regla persistente y restorecon la aplica. El tipo httpd_sys_content_t se orienta a contenido legible por el servicio web, no a autorizar escritura arbitraria.
sudo semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?'
sudo restorecon -Rv /srv/www
El comando semanage generalmente es proporcionado por el paquete policycoreutils-python-utils. Los directorios que requieren permisos de escritura deben seleccionar un tipo separado adecuado para su propósito y no se debe aplicar un tipo de ejemplo de manera obligatoria.
Ajuste de booleanos y puertos no estándar
Habilitar funciones del servicio con booleanos
Los booleanos son interruptores de funciones previstas por la política. Consulte su estado y habilite únicamente la función necesaria; el ejemplo permite conexiones salientes para el dominio web y -P hace persistente el cambio. Registre el estado anterior para restaurarlo si hace falta.
getsebool -a | grep httpd
sudo setsebool -P httpd_can_network_connect on
Registrar tipo de puertos del servicio
Si el servicio utiliza puertos que no son los predeterminados, puede ser necesaria una política de puertos de SELinux además del permiso en el firewall. Verifique las asignaciones existentes antes de agregar nuevas. Las condiciones y procedimientos relacionados se pueden encontrar en Cómo gestionar el firewall.
sudo semanage port -l | grep http_port_t
sudo semanage port -a -t http_port_t -p tcp 8088
Para cambiar el tipo de un puerto ya registrado, puede que se necesite -m en lugar de -a. Primero verifique si el puerto está siendo utilizado por otro servicio.
Mantener el modo Permissive incluso después del arranque
Para conservar el modo permisivo tras reiniciar, haga una copia de /etc/selinux/config y establezca SELINUX=permissive. El bloque siguiente usa /etc/selinux/config.backup: si ese archivo ya existe, no lo sobrescriba; elija otro nombre para la copia. Revise el resultado de grep para confirmar que se cambió la línea prevista.
sudo cp -a /etc/selinux/config /etc/selinux/config.backup
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
grep '^SELINUX=' /etc/selinux/config
El archivo configura el siguiente arranque, sujeto a los parámetros del kernel. Para cambiar además el modo actual de un sistema activo, use setenforce 0 y confirme con getenforce; modificar el archivo por sí solo no cambia el estado en ejecución.
Procedimientos según la versión para desactivación completa y reactivación
El diagnóstico temporal prioriza el modo permissive. Si la desactivación completa es absolutamente necesaria, verifique la versión principal real y el cargador de arranque de Rocky, y prepare la consola, la configuración, los parámetros actuales del kernel y la copia de seguridad. El procedimiento oficial de desactivación completa de la serie RHEL 9 usa el parámetro selinux=0 del kernel, diferenciándose de la guía genérica que solo cambia SELINUX=disabled.
cat /etc/rocky-release
rpm -q grubby
cat /proc/cmdline
sudo grubby --info=ALL
Verifique que grubby administra este arranque. El ejemplo presupone que no había parámetros selinux ni enforcing previos; si los había, conserve sus valores y prepare una restauración específica. Aplique el cambio durante la ventana de mantenimiento prevista.
sudo grubby --update-kernel ALL --args selinux=0
Después del reinicio planificado, verifique los resultados reales con getenforce y cat /proc/cmdline. Mientras está deshabilitado, no se proporciona protección de bloqueo o auditoría de SELinux. Si es necesario, debe poder volver a los argumentos de arranque y la configuración original.
Para reactivar, prepare primero SELINUX=permissive en /etc/selinux/config. Las dos órdenes siguientes retiran el parámetro de desactivación añadido en este ejemplo y preparan el siguiente arranque con enforcing=0. Respete cualquier configuración previa registrada; todavía no ejecute fixfiles.
sudo grubby --update-kernel ALL --remove-args selinux
sudo grubby --update-kernel ALL --args enforcing=0
Reinicie con la consola de recuperación disponible y confirme con getenforce que el sistema está en Permissive. Si no lo está, deténgase. Solo después de esa comprobación, programe el reetiquetado con la orden siguiente.
sudo fixfiles -F onboot
Asegure la consola de recuperación y espere hasta que se completen el reinicio y la reetiquetación. Dependiendo del número de archivos, puede tardar mucho tiempo. Después de revisar los registros de servicios y AVC en modo permissive, configure SELINUX=enforcing, elimine enforcing=0 de los argumentos de arranque y ejecute sudo setenforce 1 para verificar la aplicación en el arranque actual y el siguiente. No lo use como un script de recuperación general para discos de operación arbitrarios.
Guía oficial de modos de SELinux y reactivación de RHEL 9
Orden recomendada para la resolución de problemas
- Verifique el estado actual con
getenforceysestatus. - Primero se revisan los registros del propio servicio, los permisos de archivos y el cortafuegos.
- Si es necesario, se cambia temporalmente al modo Permissive para comparar los síntomas.
- Se verifica el registro real de denegaciones con
ausearch. - Se corrige solo el alcance mínimo con el contexto correcto de archivos, booleanos o tipo de puerto.
- Se vuelve al modo Enforcing y se vuelven a verificar la funcionalidad y los registros.
Documentos de referencia
La guía de aprendizaje de SELinux de Rocky Linux explica los modos, los contextos de seguridad, los booleanos y los principios básicos de resolución de problemas.




