Importar / exportar contextos y booleanos personalizados de SELinux

El comando semanage es una herramienta que nos permite configurar las políticas de SELinux (Security-Enhanced Linux), está disponible dentro del paquete policycoreutils-python:

# yum info policycoreutils-python
Installed Packages
Name        : policycoreutils-python
Arch        : i686
Version     : 2.0.83
Release     : 19.24.el6
Size        : 910 k
Repo        : installed
From repo   : base
Summary     : SELinux policy core python utilities
URL         : http://www.selinuxproject.org
License     : GPLv2+
Description : The policycoreutils-python package contains the management tools use to manage an SELinux
            : environment.

En el caso de instalaciones masivas en las que queramos clonar las configuraciones, contextos, booleanos de SELinux, logins, etc de una máquina base, o si simplemente queremos tener una copia de seguridad de todas nuestras configuraciones de una máquina, el parámetro «-o» de semanage nos servirá.

       -o, --output
              Output current customizations as semanage commands

Volcamos entonces la configuración personalizada de SELinux a un fichero:

# semanage -o /root/selinux.configuration

Una vez finalizado vemos que efectivamente el fichero contiene nuestra configuración de booleeanos, contextos, login, etc:

# cat selinux.configuration
boolean -D
boolean -1 allow_ftpd_anon_write
boolean -1 rsync_export_all_ro
boolean -1 samba_export_all_rw
login -D
login -a -s guest_u -r 's0' __default__
user -D
port -D
interface -D
node -D
fcontext -D
fcontext -a -f 'all files' -t public_content_rw_t '/ftp(/.*)?'
fcontext -a -f 'all files' -t samba_share_t '/samba-shares(/.*)?'
fcontext -a -f 'all files' -t httpd_sys_content_t '/www(/.*)?'

Nota: los comandos que veis con -D eliminan las personalizaciones locales en la máquina antes de añadir las especificadas en el volcado.

El paso inverso, importar es igual pero con el parámetro «-i» y especificando el fichero del cual extraer las configuraciones. Como habéis podido ver el fichero son los comandos de semanage en orden de ejecución.

# semanage -i /root/selinux.configuration

El procedimiento para exportar e importar las configuraciones de SELinux entre máquinas sería el siguiente:

# semanage -o /root/selinux.configuration
# scp /root/selinux.configuration server-destino:/root
# ssh server-destino
# semanage -i /root/selinux.configuration