Protege el acceso a tu servidor con TCP Wrapper

TCP Wrapper es un sistema que nos permite permitir, denegar o filtrar el acceso a los servicios de un servidor con sistema operativo UNIX (como por ejemplo Linux o BSD).

Con este artículo aprenderás cómo funciona y aprenderás a configurar los TCP Wrappers en tu servidor.

TCP Wrapper

Los ficheros principales implicados en TCP Wrappers son «/etc/host.allow» y «/etc/host.deny». En el fichero /etc/host.allow se indican las políticas permisivas y en el fichero /etc/host.deny las políticas restrictivas.

Las políticas o reglas para filtrar el acceso al servidor desde la red se definen de la siguiente forma:

Demonios o lista de demonios del sistema : Lista de equipos : Acción a realizar

A continuación detallamos cada campo:

Demonios: Son servicios que existen en sistemas operativos Unix como por ejemplo sshd (servicio SSH),  slapd (servicio LDAP) o proftpd (servicio FTP). Para crear una regla común para varios demonios debemos indicar su nombre separados por comas. Existe también el comodín «ALL» que hace que dicha política afecte a todos los demonios del sistema.

Lista de equipos: En este campo indicamos a que equipos aplicamos esta política. Podemos indicar una dirección IP, un rango de direcciones IP, o un nombre de dominio. También podremos usar el comodín «ALL» para que esta política afecte a todos los equipos que intenten acceder. También existe el operador «EXCEPT» que nos permite eliminar de la regla uno o varios equipos.

 – Acción a realizar: Aquí debemos indicar si la política permite el acceso o deniega el acceso a los demonios indicados anteriormente. Las palabras que se usa denegar el acceso es «deny». En caso de dejar este campo vacío, significa que permitimos el acceso a los demonios y equipos indicados. Opcionalmente, podemos enviar comandos con la directiva «spawn». Esta directiva suele ser utilizada para la creación de registros de conexión al propio equipo. Existe también la directiva «twist» que sustituye el servicio o demonio solicitado por el comando que le hemos especificado. Esto significa que por defecto se deniega el acceso. Esto es muy útil para la creación de honeypots.

Ejemplo de uso de TCP Wrapper

 

Ahora pondremos en práctica todo lo que hemos explicado anteriormente.

Como primer ejemplo vamos a denegar el acceso a un servidor SSH instalado en el equipo solo a una determinada IP. Al ser una política permisiva (permite el acceso a todos los equipos excepto a la IP que se le indica) la vamos a definir utilizando el fichero /etc/host.allow .

Escribiremos lo siguiente para aplicar esta política:

Denegamos acceso por SSH a una IP
Denegamos acceso por SSH a una IP

sshd —> Deminio del servicio SSH

192.168.5.135—> Ip a la que vamos a aplicar la política

deny —> Denegamos el acceso

Comprobamos que desde el equipo con la IP 192.168.5.135 no se puede acceder al servicio SSH:

Comprobación de acceso al Servicio SSH
Comprobación de acceso al Servicio SSH desde una IP no permitida

 

A continuación vamos a denegar el acceso al servicio SSH a todos los equipos. Además, gracias a la directiva «spawn» vamos a guardar un registro del intento de conexión a nuestro servidor. Con %d imprimimos el demonio que denegamos y %h el equipo que se intenta conectar.

Fichero hosts.deny
Denegamos el acceso a todos lo equipos y guardamos un registro con el intento de conexión

Una vez que un equipo se intenta conectar a la máquina en la que tenemos la política anterior configurada, se crea una linea en el fichero que hemos indicado con el demonio al que hemos denegado el acceso y la IP desde donde se intentaba conectar.

Registro de Acceso
Registro de Acceso

 

Espero que os haya sido útil este artículo y os haya gustado

Julio Caballero

@jucab1989