firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny

Algo que he aprendido hace poco, aunque ya sabía pero no con tanto detalle, es el manejo de los archivos /etc/hosts.allow y /etc/hosts.deny en linux para bloquear el acceso de ips a determinados servicios que puedan usar el tcp_wrapper y esté activado en sus respectivos archivos de configuración.

Gráfico básico del control de flujo del tcp_wrapper

Por defecto, a menos que se indique lo contrario, todos los servicios y/o direcciones definidas en el hosts.allow son admitidas mientras que las definidas en el hosts.deny son rechazadas.

La sintaxis de estos archivos es muy simple:
servicio : host
Importante insertar un salto de linea después de cada instrucción para que ésta surta efecto, sino no se tendrá en cuenta

servicio: es la primera palabra que encontramos en cada linea del archivo, principalmente se refiere a servicios, por ejemplo vsftpd, sshd, etc,..
Si queremos referirnos a todos los puertos bastará con poner ALL, también podemos poner una lista de servicios separados por espacios en blanco.

host: es una o mas direcciones de red separadas por espacios en blanco, esta dirección se contrasta con la del sistema que nos hace la petición de conexión. La dirección puede ser del tipo IP numérica, IP/mask, rango de IP (por ejemplo 195.116.), dominio, grupo de dominios.
Ademas pueden usarse otras palabras como ALL (para referirse a todos los host), LOCAL (los que no tienes un . en su nombre) KNOWN o UNKNOWN (de los que se tiene información o no) y PARANOID (el nombre que te ofrecen no concuerda con el que tcp_wrappers espera).

Con esto ya podemos hacer nuestra primera configuración super segura:
#/etc/hosts.deny
ALL: ALL

Esta es la política de seguridad más alta del tcp_wrapper. Esta instrucción indica que todas las conexiones que usen el tcp_wrapper estarán bloqueadas. Después se tendrá que ir habilitando en el /etc/hosts.allow los servicios y las ips deseadas.

Ejemplos

Completamente cerrado:

#/etc/hosts.deny
ALL: ALL

Cerrado para todos excepto para las conexiones locales:

#/etc/hosts.allow
ALL: 127.0.0.1

Habilitado el servicio de ftp (vsftpd) para el entorno local

#/etc/hosts.allow
vsftpd:127.0.0.1

Estos ejemplos son una forma básica de usarlo, también hay configuraciones avanzadas para detectar spoofing y otro tipo de eventos.
Ojo!! No es aconsejable probar estas instrucciones en un entorno de producción a menos de que se esté muy seguro de lo que se hace.

Una respuesta a “firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny”

  1. Hola,
    Me parece un buen comentario, pero me hace enlazar este comentario con más *allow y *deny.

    Me pregunto:
    El Gráfico básico del control de flujo del tcp_wrapper es igual también para:
    – at.allow y at.deny.
    o
    – cron.allow y cron.deny.

    Si no está ningún archivo, como si está solo los *.allow, tienen políticas diferentes si son:
    (hosts.allow, hosts.deny), que si son at.* o cron.*

    Gracias por el comentario.

Deja un comentario

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