7.3.4. Dominios Permisivos
Cuando SELinux se ejecuta en modo permisivo, SELinux no niega el acceso, sino que las negaciones para las acciones se guardan como si fuera que corre en modo obediente. Previamente, no era posible hacer permisivo un único dominio (recuerde: los procesos corren en dominios). En ciertas situaciones, esto llevó a hacer el sistema permisivo para poder corregir los problemas.
Fedora 11 introduce los dominios permisivos, donde un administrador puede configurar un único proceso (dominio) para que corra permisivo, en vez de hacer todo el sistema permisivo. Los chequeos de SELinux se realizan igualmente para dominios permisivos; sin embargo, el kernel permite el acceso e informa la negación AVC para situaciones donde SELinux hubiera negado el acceso. Los dominios permisivos están también disponibles en Fedora 9 (con las últimas actualizaciones aplicadas).
En el Linux para Empresas de Red Hat 4 y 5, los Booleanos dominio
_disable_trans
están disponibles para prevenir que una aplicación transicione a un dominio confinado, y por lo tanto, el proceso se ejecute en un dominio no confinado, tal como initrc_t
. Poniendo en 1 tales booleanos pueden causar problemas serios. Por ejemplo, si el Booleano httpd_disable_trans
se pone en 1:
httpd
corre en el dominio no confinado initrc_t
. Los archivos creados por los procesos en el dominio initrc_t
puede no tener aplicadas las mismas reglas de etiquetados como los archivos creados por el proceso corriendo en el dominio httpd_t
, permitiendo que los procesos puedan potencialmente crear archivos mal etiquetados. Esto causa problemas más adelante.
dominios confinados que pueden comunicarse con httpd_t
no pueden comunicarse con initrc_t
, posiblemente causan fallas adicionales.
Los Booleanos domain
_disable_trans
fueron eliminados de Fedora 7, y no se pusieron reemplazos. Los dominios permisivos pueden resolver esos problemas: se aplican las reglas de transición y los archivos se crean con las etiquetas correctas.
Los dominios permisivos se pueden usar para:
hacer que un único proceso (dominio) corra permisivo para solucionar alguna cuestión, en vez de poner todo el sistema en riesgo haciendo permisivo a todo el sistema.
creación de políticas para nuevas aplicaciones. Previamente, era recomendado crear una política mínima, y luego poner la máquina completa en modo permisivo, para que la aplicación pudiera funcionar, pero las negaciones de SELinux eran igualmente grabadas. audit2allow
podría usarse luego para ayudar a escribir la política. Esto pone todo el sistema en riesgo. Con dominios permisivos, sólo el dominio en la nueva política puede marcarse como permisivo, sin poner en riesgo todo el sistema.
7.3.4.1. Creando un Dominio Permisivo
Para hacer un dominio permisivo, ejecute el comando semanage permissive -a dominio
, donde dominio
es el dominio que quiere hacer permisivo. Por ejemplo, ejecute el siguiente comando como usuario root de Linux para hacer permisivo el dominio httpd_t
(el dominio en el que corre el Servidor HTTP Apache):
/usr/sbin/semanage permissive -a httpd_t
Para ver una lista de los dominios que hizo permisivos, corra el comando semodule -l | grep permissive
como usuario root de Linux. Por ejemplo:
# /usr/sbin/semodule -l | grep permissive
permissive_httpd_t 1.0
Si ya no quiere que un dominio sea permisivo, corra el comando semanage permissive -d dominio
como usuario root de Linux. Por ejemplo:
/usr/sbin/semanage permissive -d httpd_t