Protege tu servidor con TCP Wrapper

tcpd

Algunos se preguntaran porque, usar TCP Wrapper si podemos tener un Firewall como Iptables o usar herramientas como fail2ban la cual ya fue mencionada recientemente en el blog, aquí dejamos en claro el porqué, TCP Wrapper es un sistema de Lista de Control de Accesos (ACL) que ofrece una capa adicional de seguridad para los servicios, puede ser utilizado para filtrar el acceso de red a servicios proporcionados por los servidores, ya que define que hosts pueden conectarse a los servicios de red.

Cuando un intento de conexión invoca a un servicio en especifico como (sshd,vsftpd,…), TCP Wrapper referencia los archivos de acceso a host (/etc/hosts.allow y /etc/hosts.deny) para determinar el acceso (Permitir/Denegar) a la conexión entrante. Hay administradores que recomiendan solo usar el archivo host.allow para mantener el control de las reglas…

La instalación es sencilla, por ejemplo en un equipo con una distribución de linux como Ubuntu

tcpd-1

Inicialmente podemos validar el demonio del servicio para determinar si es posible ser monitoreado por tcpwrapper(tcpd), para el caso de ssh realizamos lo siguiente:

  • Validamos la ruta de instalación del demonio (sshd)

tcpd-2

  • Verificamos de la siguiente forma si podemos monitorear sshd con tcpd.

tcpd-3

  • Para que funcione TcpWrapper es necesario tener instalado inetd que es un demonio, conocido como el “Super Servidor de Internet“, el cual se encarga de gestionar las conexiones de varios demonios.

tcpd-4

El cual podemos instalarlo, sin ‘necesidad’ de configurar nada en especial.

tcpd-5

  • Al momento de la instalación se crea un archivo de configuración en el cual se pueden realizar configuraciones un poco más avanzadas que para mi personalmente no son tan necesarias.

tcpd-6

Ahora vamos a ver las consideraciones a tomar, al momento de definir el acceso a los servicios (nombres del demonio):

Las reglas de acceso en hosts.allow son evaluadas inicialmente, y preceden a las reglas definidas en el archivo hosts.deny, si se permite el acceso a un servicio en hosts.allow, una regla negando el acceso al mismo servicio en hosts.deny, es totalmente ignorada.

Las reglas en cada archivo son leídas secuencialmente de arriba hacia abajo y la primera regla que coincida para un servicio dado, es la única aplicada.

TCP Wrapper no hace cache de las reglas especificadas en los archivos acceso de host, así que cualquier cambio en los archivos hosts.allow o a hosts.deny tendrá efecto de inmediato sin tener que reiniciar el servicio de red para aplicar el cambio.

Las reglas tienen la siguiente estructura en los archivos host:

<daemon list>: <client list> [: <option>: <option>: …]

<daemon list> Una lista separada por comas de los nombres de procesos (no de los nombres de servicios, para el caso de ssh el name del demonio es sshd ) o el comodín ALL

<client list> Una lista separada por comas de nombres de host, direcciones IP, patrones especiales, la cual identifica los hosts afectados por la regla.

<option> Una acción opcional o una lista separada con puntos y comas de acciones realizadas cuando la regla es activada. Los campos de opciones soportan expansiones.

En el siguiente ejemplo se puede apreciar una muestra básica de una regla de acceso, podemos usar vi, gedit, o cualquier editor de texto que tengas instalado, para editar el archivo host.deny

tcpd-7httpd : 192.168.0.100

Esta regla instruye a los TCPwrappers a que estén atentos por conexiones al demonio httpd desde la ip 192.168.0.100,si esta regla aparece en hosts.deny, la conexión será negada.

sshd: ALL

Negar el acceso ssh a todas las IP

tcpd-8

Para el ejemplo de sshd se creó un archivo de log, que se creó nuevo para las pruebas

tcpd-9

El cual tiene por nombre sshd.log en el cual se pueden apreciar los accesos al servicio de SSH con un mensaje creado.

tcpd-10

Hay unos comandos adicionales proporcionados por tcpd, llamado tcpdchk

tcpd-11

con el cual validar las reglas de acceso

tcpd-12

Es de acotar que en la publicación no pretende realizar un manual técnico, la finalidad es dar a conocer la diversidad de aplicaciones existentes que podemos implementar de acuerdo a nuestras necesidades.

One thought on “Protege tu servidor con TCP Wrapper”

  1. tannhausser says:

    Gracias por el aporte amigo @anger.

    Una interesante introducción a esa veterana herramienta para Unix/Linux/BSD 🙂

Deja un comentario