Desactivar SELinux para determinados servicios (permissive mode)

En esta entrada vamos a ver la forma de configurar SELinux para trabajar en modo permisivo de forma selectiva, concretamente indicando qué procesos queremos que trabajen en modo permisivo cuando a nivel global la configuración es enforcing.

Si usamos la terminología correcta, debemos hablar de configurar determinados dominios de SELinux en modo permisivo, ya que los procesos se ejecutan dentro de estos dominios. Nos guste o no, SELinux es todo un mundo así que no voy a profundizar mucho en el tema pues la entrada sería interminable. El que no odie SELinux (jaja) puede indagar por su cuenta.

Lo primero que nos interesa es saber la lista de dominios disponibles, para ello ejecutaremos el siguiente comando:

Nota: para utilizar el comando seinfo hay que instalar el paquete setools-console

[root@centos6 ~]# yum install setools-console
[root@centos6 ~]# seinfo -adomain -x | less
   domain
      sosreport_t
      git_session_t
      cfengine_execd_t
      bootloader_t
      netutils_t
      qmail_tcp_env_t
      devicekit_power_t
      httpd_collectd_script_t
      sandbox_x_client_t
      nova_api_t
      sblim_reposd_t
      dkim_milter_t
      virt_qemu_ga_unconfined_t
      admin_crontab_t
      consolekit_t
      nova_compute_t
      nova_console_t
      pam_console_t
      zarafa_gateway_t
      policykit_grant_t
      logrotate_t
      openvswitch_t
      update_modules_t
      ssh_keysign_t
      nova_network_t
      qmail_rspawn_t
      uml_switch_t
      qmail_inject_t
      qmail_lspawn_t
[...]

Para configurar un dominio en modo permisivo ejecutamos el comando semanage permissive -a domain, donde domain es el dominio que queremos modificar. Por ejemplo, podemos configurar Apache para que SELinux trabaje con sus procesos en modo permisivo en lugar de enforcing:

Nota: para utilizar el comando semanage hay que instalar los paquetes policycoreutils-python y policycoreutils

[root@centos6 ~]#  semanage permissive -a httpd_t

Si listamos con semodule o seinfo los dominios en modo permisivo aparecerá Apache:

[root@centos6 ~]#  semodule -l | grep permissive
permissive_httpd_t      1.0
permissivedomains       1.0.0
[root@centos6 ~]# seinfo --permissive | grep http
   httpd_t

Si en algún momento se quiere revertir el cambio ejecutamos semanage de la misma forma que para añadir pero con el parámetro -d, siempre como root:

[root@centos6 ~]#  semanage permissive -d httpd_t

3 comentarios en “Desactivar SELinux para determinados servicios (permissive mode)

  1. Al establecer un servicio en modo «permissive» en log sigue dejando un evento de tipo AVC (denied), ¿verdad?.

  2. Buenos días, estoy trabajando en un panel de control y estoy hace días buscando como obtener el uso total de RAM de un usuario en Ubuntu. (La ram que está utilizando ese usuario en el momento que ejecuto el comando)

    Lo sabes? Gracias!!!

Comments are closed.