Comandos iptables para configurar un firewall en Linux con ejemplos
Un firewall es un dispositivo de seguridad informática que permite o bloquea el tráfico de paquetes entre dos o más redes, en función de un conjunto de reglas definidas. Trabaja en la capa 3 y 4 del modelo OSI filtrando el tráfico de los protocolos UDP, TCP, ICMP e IP, decidiendo si los paquetes de red pasan o se descartan. Se trata de un dispositivo muy versátil debido a que puede realizar modificaciones sobre las telecomunicaciones. En este artículo veremos el uso de los comandos iptables para configurar un firewall en Linux con ejemplos.

Topología básica de un firewall
Los firewalls están presentes en todas partes; en nuestros routers de banda ancha, en las empresas, en nuestros computadores y en cualquier dispositivo con Internet.
Internet es una red bastante inhóspita por la agresividad de los atacantes informáticos.
Bueno, vamos al grano porque aprender a dominar iptables es de bastante práctica con el teclado.
Ejemplos para configurar un firewall en Linux con iptables
Si te encuentras en un ambiente empresarial, los siguientes comandos te ayudarán a desplegar un potente firewall en Linux.
Abrir puerto del servicio DNS
Ya sea que uses los DNS típicos de Gooogle (8.8.8.8), o los que te proporcine tu ISP, tu firewall debe tener el puerto 53 abierto para que la red de área local pueda navegar en Internet a la perfección:
El puerto de red conectado a Internet se llama enp6s4f1.

Habilitando puertos DNS
Usamos el objetivo MASQUERADE para trabajar con conexiones telefónicas, o banda ancha tipo hogar, que obtienen direcciones IP dinamicamente con DHCP. De todas formas el objetivo MASQUERADE lo podemos usar tanto en conexiones IP asignadas dinamicamente, en las que antes de conectar con el ISP no sabemos la dirección que tendremos, como también en conexiones de Internet dedicado (con IP pública fija). Sin embargo, si tienes una conexión IP estática, también puedes usar el objetivo SNAT en su lugar.
El objetivo MASQUERADE sólo es válido en la cadena POSTROUTING de la tabla nat, igual que el objetivo SNAT.
Habilitar ICMP
Ahora, habilitamos el puerto ICMP para podamos hacer pruebas de conectividad con el comando ping hacía cualquier dominio o ip pública en Internet
Habilitar el servicio de correo
Reglas para habilitar la conexión a los protocolos de correo tipo SMTP, POP3, IMAP y correo seguro con SSL:

Habilitando servicios de correo
Habilitar FTP
Habilitamos el sistema con un par de módulos y configuramos el firewall para que la red pueda hacer conexiones al protocolo FTP

Habilitando conexión al servicio FTP
Habilitar full navegación a un computador específico ó a un rango de equipos
Creamos una regla para que el host con dirección privada 192.168.0.32 tenga navegación completa a Internet (abrimos todos los puertos específicamente para esa IP):
Ahora habilitamos full navegación a un rango de direcciones IP privadas. La siguiente regla nos ayudará para que el rango de direcciones ip, desde la 192.168.0.100 hasta 192.168.0.254, tenga navegación completa:

Full Internet a un rango específico
Habilitar el acceso a servicios desde Internet a nuestra red
Necesitamos que un empleado se conecte desde su casa a un computador de la red privada, por Escritorio Remoto (protocolo RDP, puerto 3389):

Conexión desde afuera a un host
Servicio de correo interno
Tenemos un servicio de correo electrónico en la dirección ip privada 192.168.0.22, y necesitamos que los usuarios puedan usarlo desde cualquier lugar del mundo:

Conexión desde afuera a un servidor
Aunque estos dos últimos ejemplos corresponden a una DMZ (Zona Desmilitarizada), lo mejor es hacerlo con los servidores conectados en otro puerto del firewall, aislados de la red de datos de los usuarios, así:

DMZ
Bloquear completamente la navegación
Regla para bloquear el acceso a Internet en dos dispositivos de la red privada
Básicamente el objetivo REJECT (rechazar) funciona igual al objetivo DROP. La diferencia es que el primero devuelve un mensaje de error al host que envío el paquete. Solo es válido en las cadenas INPUT, FORWARD y OUTPUT.
¿Abrirlos todos y ajustar, o cerrarlos todos y ajustar?
Supongo que te preguntarás ¿Bueno, para qué molestarse abriendo cada puerto si podemos abrirlos todos de un solo golpe?… Bueno, en un ambiente empresarial tienes más control de la seguridad informática cerrándolos todos, y abriendo los que realmente necesitan los usuarios.
Además, notarás que en ningún momento hemos abierto el puerto 80, y eso es debido a que la mejor práctica es que los usuarios naveguen en Internet por medio de un Proxy montado sobre este mismo firewall. El servidor Proxy recibe las conexiones por el puerto 3128 ó 8080.
Restringir las actualizaciones automáticas del Windows Update en horarios específicos
Si bien es cierto que las empresas cuentan con altas velocidades en sus canales de Internet, en ocasiones no son suficientes para las desbordadas actualizaciones de Microsoft Windows, sobretodo si son más de 100 estaciones de trabajo con Windows 10. Por eso, con un poco de Cron y el siguiente paquete de reglas, podemos montar una especie de pico y placa para el Windows Update (aunque una mejor solución es montar WSUS):
Lo que iptables hace en este caso con ayuda del algoritmo Boyer Moore (--algo bm
), es evaluar si los paquetes contienen la cadena (string) «microsoft», «windowsupdate» y similares. Si la condición se cumple, entonces procede a bloquear toda conexión con destino al Windows Update.
Guardamos el anterior paquete de reglas en un archivo bash con permisos de ejecución. Luego, lo programamos en Cron para que se ejecute en el horario pico, que casi siempre es en las mañanas cuando el personal llega a encender sus estaciones de trabajo.
Debemos armar un segundo paquete con la eliminación de esas reglas para que el firewall habilite la conexión a las actualizaciones pasada la hora pico.
Para eliminar solo debemos cambiar el -A por -D

Observe el reflejo de esta medida de control, donde iptables se programa para que habilite la conexión con el Windows Update a partir de la 1:00 PM (Gráfico generado con Monitorix)
Puedes leer más en este articulo sobre monitorear tráfico de red con GNU/Linux.
Habilitar solo hasta cinco conexiones a Windows Update
Si necesitamos suavizar un poco la anterior medida de control, podemos configurar iptables para permita hasta cinco conexiones simultaneas al Windows Update:
Visualización de las reglas
La visualización de las reglas que hayamos creado la podemos hacer con el siguientes comandos iptables:
iptables -t nat -L
iptables -L INPUT
Hasta aquí un poco de iptables, sin embargo, son cientos de posibilidades con este fantástico firewall en Linux. Te recomiendo la página web de Netfilter por si quieres profundizar más sobre este genial cortafuegos.
netfilter.org/documentation/HOWTO/es/packet-filtering-HOWTO.html
Vea cómo configurar un servidor Proxy con Squid, aquí
Puedes ver más aplicaciones de IPTABLES en los siguientes artículos:
Valora este artículo
Excelente
Comparte esto en
Pingback: 🥇 Instalar OpenVPN en Ubuntu - Linux - Espacio Tecnológico