Limitar puertos sólo a conexiones dentro de la red local con Iptables

En algunas ocasiones disponemos de un servidor que se encuentra conectado a Internet pero al cuál queremos restringir que ciertos servicios y/o puertos sólo escuchen el tráfico que proviene de la red local y evitar que estos sean accesibles desde Internet.

Normalmente todos los daemon disponen de un archivo de configuración donde podemos asignar las IP o las máscaras de IP a las que queremos que escuchen, sin embargo, como medida de seguridad extra, yo creo unas reglas que bloquean el tráfico si proviene de una IP que no se encuentra dentro de la red local a través de Iptables.

Reglas especiales para bloquear el tráfico desde Internet y permitir sólo tráfico desde la red local

Las reglas son muy sencillas y voy a publicar algunas de ellas de ejemplo, tanto para puertos individuales como para un grupo de puertos específico, mis direcciones de red local son todas 192.168.1.X por lo que si tus IP’s son distintas deberás modificarlas al igual que los puertos si los has modificado, también ten en cuenta que debemos especificar los protocolos TCP o UDP en cada caso:

# Bloquear tráfico SSH desde fuera de la red local
-A INPUT ! -s 192.168.1.0/24 -p tcp --dport 22 -j DROP

# Bloquear tráfico FTP desde fuera de la red local
-A INPUT ! -s 192.168.1.0/24 -p tcp -m multiport --dports 20,21 -j DROP

# Bloquear tráfico Samba/CIFS desde fuera de la red local
-A INPUT ! -s 192.168.1.0/24 -p tcp -m multiport --dports 137,138,139,445 -j DROP

Estas reglas rechazarán todo el tráfico que provenga desde una IP fuera de nuestra red local a los puertos y/o servicios que hemos especificado ya que indican una máscara de IP, también puedes definir una única IP en lugar de la máscara si lo deseas de la siguiente forma:

# Bloquear tráfico SSH si no se conecta desde la IP 192.168.1.10
-A INPUT ! -s 192.168.1.10 -p tcp --dport 22 -j DROP

Crear un archivo de reglas permanentes

Para que estas reglas sean permanentes, debes guardarlas en un archivo y cargarlas al inicio del sistema, tal y como explican en la documentación de Iptables, de lo contrario sólo serán efectivas hasta que se reinicie o apague el servidor, para ello, guardamos todas nuestras reglas en un archivo:

sudo nano /etc/iptables.up.rules

Una vez creado nuestro archivo de reglas, debemos crear un pequeño script para que el sistema las cargue en cada inicio, introducimos el siguiente comando:

sudo nano /etc/network/if-pre-up.d/iptables

Y dentro del archivo, pegamos el siguiente contenido:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

Por último le damos permisos de ejecución al archivo que acabamos de crear:

chmod +x /etc/network/if-pre-up.d/iptables

Y con esto nuestras reglas ya serán permanentes, ya que se aplicarán de nuevo en cada inicio del sistema.

También te podría gustar...

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.