LINUX

Cómo utilizar el comando Semanage para la política de SELinux

Semanage es una herramienta que se utiliza para configurar ciertos elementos de la política de SELinux sin modificar o recompilar las fuentes de la política. Esto incluye mapear nombres de usuario de Linux a identidades de usuario de SELinux y mapeos de contexto de seguridad para objetos como puertos de red, interfaces y hosts.

De forma predeterminada, SELinux solo permite que los servicios conocidos se unan a puertos conocidos. Si queremos modificar un servicio para usar un puerto no predeterminado, necesitaremos modificar el tipo de puerto con el comando semanage.

En este artículo, exploraremos el comando semanage y aprenderemos cómo enumerar, crear / agregar y eliminar tipos de puertos en distribuciones basadas en RPM como CentOS y RedHat.

Listado de puertos con Semanage

El comando básico para listar todos los puertos es

# semanage port -l
SELinux Port Type              Proto    Port Number

afs3_callback_port_t           tcp      7001
afs3_callback_port_t           udp      7001
afs_bos_port_t                 udp      7007
afs_fs_port_t                  tcp      2040
afs_fs_port_t                  udp      7000, 7005
afs_ka_port_t                  udp      7004
afs_pt_port_t                  tcp      7002
afs_pt_port_t                  udp      7002
...

Para enumerar los números de puerto de un puerto específico como http, use este comando:

# semanage port -l | grep -w http_port_t

http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000

Del mismo modo para mysqld

# semanage port -l | grep -w mysqld_port_t
mysqld_port_t                  tcp      1186, 3306, 63132-63164

Para encontrar nombres de puertos con un número de puerto específico, use este comando:

# semanage port -l | grep 53
apertus_ldp_port_t             tcp      539
apertus_ldp_port_t             udp      539
dns_port_t                     tcp      53
dns_port_t                     udp      53

Crear o agregar puertos con Semanage

En este ejemplo, crearemos un nuevo puerto para http y lo asignaremos al puerto tcp 2222. El -a opción es agregar un nuevo puerto, la -t La opción especifica el tipo SELinux y la -p La opción es especificar el protocolo a utilizar (en este caso tcp).

# semanage port -a -t http_port_t -p tcp 2222

para ver el puerto recién creado, usamos el comando lista de comandos con el -C opción para mostrar solo personalizaciones.

# semanage port -lC

Tipo de puerto SELinux Número de puerto proto

http_port_t                    tcp      2222

Para asignar un rango de números de puertos a un puerto específico, use el comando:

# semanage port -a -t http_port_t -p tcp 2223-2225

Ahora, podemos ver el rango de puertos aquí.

# semanage port -lC
SELinux Port Type              Proto    Port Number

http_port_t                    tcp      2223-2225

Si intenta agregar otra entrada con los mismos valores que utilizó antes, obtiene el error:

ValueError: Port tcp/2222 already defined

Para anular un puerto existente que ya fue creado, use el -m opción para modificar:

# semanage port -m -t unreserved_port_t -p tcp 2222

Ahora, si enumeramos todos los puertos, veremos el cambio.

# semanage port -lC
SELinux Port Type              Proto    Port Number

unreserved_port_t              tcp      2222

Eliminar puertos con Semanage

Usamos la opción -d para eliminar un registro de puerto. Para eliminar unreserved_port_t en el puerto tcp 2222, usamos el comando:

# semanage port -d -t unreserved_port_t -p tcp 2222

Para eliminar un rango de puertos, use el comando:

# semanage port -d -t http_port_t -p tcp 2223-2225

Si ejecuta el comando de lista personalizada y no devuelve nada, la entrada se ha eliminado.

Usando Semanage-Permmissive

Semanage permissive se utiliza para agregar o eliminar módulos permisivos de la Política SELinux.

Para enumerar todos los módulos permisivos, use el -l opción:

# semanage permissive -l

Customized Permissive Types


Builtin Permissive Types

sanlk_resetd_t
hsqldb_t
systemd_hwdb_t
blkmapd_t
ipmievd_t
targetd_t

Para crear httpd_t un dominio permisivo, use el -a opción:

# semanage permissive -a httpd_t

Ahora, revisemos todos los módulos permisivos:

# semanage permissive -l

Customized Permissive Types

httpd_t

Builtin Permissive Types

sanlk_resetd_t
hsqldb_t
systemd_hwdb_t
blkmapd_t
ipmievd_t

Para eliminar un tipo permisivo que acabamos de crear, usamos el -d opción.

# semanage permissive -d httpd_t

libsemanage.semanage_direct_remove_key: Removing last permissive_httpd_t module (no other permissive_httpd_t module exists at another priority).

En este artículo, vimos cómo listar, agregar y eliminar puertos usando la herramienta semanage para distribuciones de Linux basadas en RPM. Si su sistema tiene una GUI, puede instalar el policycoreutils-gui paquete a través de yum y luego ejecutar system-config-selinux comando para abrir la versión GUI y configurar los tipos de puerto SELinux desde el menú Puerto de red.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar