martes, 16 de julio de 2013

Problema con SELinux y OpenVPN Centos 6.4

Hola amigos blogueros,


Les comento que me encuentro haciendo una migración de servidor y me topé con un problema configurando el servicio openvpn, el nuevo servidor tiene instalado Centos 6.4 x86_64.

Una guía de como configurar openvpn en Centos muy buena la pueden encontrar en: http://www.alcancelibre.org/staticpages/index.php/como-openvpn-server-centos

Básicamente el problema se origina porque quiero dejar habilitado SELinux en estado enforcing y no trabajo con el puerto por default del openvpn que es el 1194.

El error generado que me muestra el /var/log/message es el siguiente:

rsyslogd-2177: imuxsock begins to drop messages from pid 1216 due to rate-limiting
kernel: type=1400 audit(1373989530.644:7): avc:  denied  { name_bind } for  pid=1216 comm="openvpn" src=1199 scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=system_u:object_r:reserved_port_t:s0 tclass=udp_socket

Manos a la obra.

Googleando encuentro que la solución es la siguiente, hay que agregar mi puerto a los que SELinux considera seguros y para eso debemos de usar el comando semanage. Para mi desgracia; aunque más creo que para mi fortuna; dicho comando no estaba presente en mi Centos. 

Nota: Soy de la idea que cada problema que se presenta es una oportunidad de aprender algo.

Nuevamente tocó googlear y encontré este página que me ayudó mucho: http://rm-rf.es/selinux-semanage-command-not-found/

Lo que hay que hacer es instalar el paquete que permite administrar las políticas del core, el paquete en mi caso es el: policycoreutils-python-2.0.83-19.30.el6.x86_64

Para instalarlo ejecutamos el siguiente comando:

# yum install policycoreutils*

Y le damos yes para que descargue todas las dependencias necesarias.

Ya con eso podemos hacer uso del comando semange.

Si quiero ver que puertos son los que el SELinux tiene agregados ejecuto el siguiente comando: 

# semanage port -l

El comodín usado es con una L en minúscula al final ( -l ).

Para filtar y que muestre solo los del openvpn:

# semanage port -l | grep openvpn

Como se podrán dar cuenta solo aparecen el 1194 en udp y tcp.

Ahora por último tenemos que agregar el puerto que necesitamos, esto lo hacemos con el siguiente comando:

# semanage port -a -t openvpn_port_t -p udp 1199

1199 es el puerto a usar.

Si cometieron algún error al digitar el puerto, el comando para borrarlo es el siguiente:

# semanage port -d -t openvpn_port_t -p udp 1199

Como ven solo se cambia la a de add por d de delete.

Hecho todo esto logré hacer arrancar el openvpn.

Espero les sea de ayuda a alguien y nos veremos en mi próximo post.

Cualquier comentario lo dejan por esta vía o me escriben un tweet a: @Danny_Obando.

No hay comentarios:

Publicar un comentario