iptables, el firewall de Linux

Resumen
El objetivo de este manual es proporcionar una guía detallada para la instalación, configuración y uso de iptables, una herramienta de filtrado de paquetes en sistemas Linux. Se incluye una descripción general del software, las operaciones principales, y los aspectos relacionados con la gestión de usuarios y seguridad.
1. Portada
Manual de Usuario de iptables
Versión: 1.8
Fecha: Septiembre de 2024
Autor: Ricardo Naranjo Faccini, Skina IT Solutions
Licencia: GNU General Public License (GPL)
2. Introducción
El objetivo de este manual es proporcionar una guía detallada para la instalación, configuración y uso de iptables, una herramienta de filtrado de paquetes en sistemas Linux. Se incluye una descripción general del software, las operaciones principales, y los aspectos relacionados con la gestión de usuarios y seguridad.
2.a) Propósito del Manual:
El propósito de este manual es ofrecer a los usuarios una referencia clara y comprensible para la administración de reglas de firewall con iptables. El manual está diseñado para permitir a los usuarios configurar, monitorear, y mantener su firewall de manera efectiva, protegiendo su sistema contra amenazas de red y asegurando el flujo adecuado del tráfico de datos.
2.b) Alcance:
Este manual cubre desde la instalación básica de iptables en las principales distribuciones de Linux hasta la configuración avanzada de reglas de firewall. Incluye instrucciones sobre el manejo de tráfico de red, control de acceso por IP, apertura y bloqueo de puertos, y otras funcionalidades críticas relacionadas con la seguridad en la red. No se aborda la integración con otras herramientas externas o configuraciones específicas de red empresarial.
2.c) Audiencia Objetivo:
Este manual está dirigido a administradores de sistemas, ingenieros de red y usuarios avanzados que requieren configurar y mantener un firewall en entornos basados en Linux. Se espera que los usuarios tengan conocimientos básicos de Linux, administración de sistemas y redes.
2.d) Requisitos Previos:
-
Conocimientos básicos de Linux y acceso a la línea de comandos.
-
Familiaridad con conceptos de redes como direcciones IP, puertos, protocolos y servicios.
-
Acceso de superusuario (root) o privilegios administrativos en el sistema para realizar cambios en la configuración de iptables.
-
Una instalación activa de Linux en la que se pueda ejecutar iptables.
3. Descripción General del Software
3.a) ¿Qué es iptables?
iptables
es una utilidad de filtrado de paquetes usada en la mayoría de distribuciones de Linux. Permite crear reglas para gestionar el tráfico de red, protegiendo el sistema contra accesos no autorizados, ataques de fuerza bruta, y otra clase de tráfico malicioso.
3.b) Características Principales:
-
Filtrado de paquetes en función de protocolo, puerto y dirección IP.
-
Control de tráfico entrante, saliente y reenviado.
-
Reglas de redireccionamiento NAT.
-
Registro de eventos y ataques de red.
-
Configuración flexible y personalizada.
-
Bloqueo de IPs y control de acceso por listas negras y blancas.
3.c) Segmentación de la red
Cuando se configura un firewall en una red, uno de los principios fundamentales es segmentar las redes para crear áreas de seguridad diferenciadas. Cada segmento de red debe tener un rango de direcciones IP independientes para facilitar el control del tráfico y la implementación de políticas específicas de seguridad. Esta segmentación ayuda a aislar los distintos tipos de tráfico y a proteger los activos más sensibles de la red, limitando el acceso solo a las zonas que realmente lo requieren.
3.d) Zonas Topológicamente Definidas
Para organizar adecuadamente una red, es importante crear zonas topológicamente definidas, cada una con un propósito específico y con reglas de firewall que permitan o restrinjan el tráfico entre ellas. A continuación se detallan las zonas más comunes:
-
Zona Roja (Internet): Esta es la zona más expuesta, ya que representa la conexión directa con Internet. Todo el tráfico que entra o sale de esta zona debe ser cuidadosamente filtrado por el firewall. Cualquier error en las configuraciones de esta zona puede exponer la red interna a ataques externos. Es crucial aplicar políticas de seguridad estrictas para proteger los servicios internos.
-
DMZ (Zona Desmilitarizada): La DMZ es una zona aislada que se utiliza para alojar servidores y servicios que necesitan ser accesibles desde el exterior, como servidores web o de correo. Aunque los dispositivos en la DMZ pueden ser accesibles desde la Zona Roja (Internet), están protegidos del acceso directo a las redes internas. El tráfico entre la DMZ y la red interna debe ser muy limitado y controlado para evitar que un compromiso en la DMZ permita el acceso a las áreas más sensibles de la red.
-
LAN de Usuarios: Este segmento alberga los dispositivos de los usuarios comunes, como estaciones de trabajo, computadoras portátiles y dispositivos móviles. El tráfico de esta zona debe estar restringido a la DMZ para acceder a servicios públicos y solo puede acceder a los servicios necesarios dentro de la red interna, como servidores de archivos o sistemas de autenticación.
-
LAN de Administradores: En esta zona se encuentran los equipos y dispositivos utilizados por el personal administrativo o de TI para gestionar y administrar la infraestructura. Dado que los administradores tienen privilegios más elevados, esta red debe estar más protegida que la LAN de Usuarios, limitando el acceso tanto desde la LAN de Usuarios como desde la Zona Roja. Aquí se pueden alojar herramientas de administración de red, consolas de seguridad y otros servicios críticos.
-
LAN de Servidores Internos: Esta zona contiene los servidores que ofrecen servicios solo dentro de la red interna, como bases de datos, servidores de aplicaciones, o controladores de dominio. Esta red está completamente aislada de la Zona Roja y, en muchos casos, incluso de la DMZ. Solo ciertos equipos y usuarios dentro de la red interna (como los administradores) pueden acceder a estos servidores.
Beneficios de la Segmentación
La segmentación de redes permite:
-
Aislar el tráfico entre áreas críticas y áreas menos seguras.
-
Limitar los daños y contener los incidentes en caso de que alguna zona sea comprometida (por ejemplo, si un servidor en la DMZ es atacado, los atacantes no pueden llegar directamente a la LAN interna).
-
Aplicar políticas de seguridad específicas para cada zona, de acuerdo con su nivel de riesgo y requerimientos operativos.
-
Facilitar la gestión de reglas del firewall mediante el control del tráfico permitido entre las diferentes zonas, mejorando el rendimiento y la seguridad.
3.e) Los parámetros de iptables
Para configurar las reglas de filtrado es necesario indicar los parámetros de configuración. Los más importantes son:
-
-s (Source): Este parámetro define la dirección IP de origen del tráfico que se desea controlar. Puedes usarlo para especificar de dónde proviene el tráfico, ya sea una IP específica o un rango de direcciones IP.
-
Ejemplo:
-s 192.168.1.10
esto indica que la regla afectará únicamente al tráfico proveniente de la IP 192.168.1.10.
-
También puedes usar CIDR para definir rangos de IP, por ejemplo:
-s 192.168.1.0/24
esto afectará a todo el tráfico proveniente del rango de direcciones IP 192.168.1.0 a 192.168.1.255.
-
-
-d (Destination): Este parámetro define la dirección IP de destino a la que se dirige el tráfico que será filtrado o permitido por las reglas de iptables.
-
Ejemplo:
-d 10.0.0.5
Indica que la regla aplica para tráfico que tenga como destino la IP 10.0.0.5.
-
También se puede usar un rango de direcciones IP con CIDR, por ejemplo:
-d 10.0.0.0/8
esto afecta al tráfico dirigido a cualquier IP dentro de ese rango.
-
-
-p (Protocol): El parámetro -p define el protocolo del tráfico que será afectado por la regla. Los protocolos más comunes son tcp, udp y icmp.
-
Ejemplo:
-p tcp
Aplica a tráfico basado en el protocolo TCP.
-
Ejemplo:
-p udp
Aplica a tráfico basado en el protocolo UDP.
-
-
--dport (Destination Port): Este parámetro especifica el puerto de destino al que se dirige el tráfico. Es particularmente útil cuando estás trabajando con protocolos como TCP o UDP y deseas filtrar por puerto.
-
Ejemplo:
--dport 80
se aplica a tráfico dirigido al puerto 80, el cual es utilizado por HTTP.
-
También se pueden especificar rangos de puertos, por ejemplo:
--dport 1000:2000
Afecta a todo el tráfico dirigido a los puertos que están entre el 1000 y el 2000.
-
-
-j (Jump): Este parámetro indica qué acción debe tomar el firewall cuando el tráfico coincida con la regla. Existen varias opciones, pero las más comunes son:
-
ACCEPT: Permite el tráfico.
-
DROP: Descarta el tráfico sin notificar al origen.
-
REJECT: Rechaza el tráfico, enviando una notificación al origen.
-
LOG: Registra el tráfico en el registro de sistema.
-
Ejemplo:
-j ACCEPT
la regla acepta el tráfico que coincide con los criterios de la regla.
-
-
-i (Input Interface): El parámetro -i especifica la interfaz de red de entrada por donde llega el tráfico al sistema. Esto permite definir reglas que solo se apliquen a una interfaz en particular, como eth0, wlan0, o interfaces virtuales.
-
Ejemplo:
-i eth0
se aplica a todo el tráfico que entra a través de la interfaz de red eth0.
-
-
-o (Output Interface): El parámetro -o especifica la interfaz de salida por donde sale el tráfico desde el sistema.
-
Ejemplo:
-o eth1
la regla solo se aplica al tráfico que está saliendo a través de la interfaz eth1.
-
3.f) Las cadenas
las reglas de filtrado de paquetes se dividen en diferentes "cadenas" que definen cómo los paquetes son manejados dependiendo de su dirección y propósito. Las tres cadenas principales son INPUT, OUTPUT, y FORWARD, y cada una se encarga de gestionar diferentes tipos de tráfico.
Cadena INPUT (Entrada)
Se refiere a los paquetes entrantes que tienen como destino el propio sistema. Esto incluye cualquier tipo de tráfico que esté destinado a ser procesado por el sistema local, como solicitudes a servicios que están corriendo en el equipo, por ejemplo, una conexión SSH o tráfico web si el sistema está ejecutando un servidor web. Ejemplos de uso:
-
Permitir conexiones entrantes al puerto 80 (HTTP):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-
Bloquear todas las conexiones entrantes desde una IP específica:
iptables -A INPUT -s 192.168.1.100 -j DROP
Cadena OUTPUT (Salida)
Se encarga de los paquetes que son generados y enviados desde el sistema hacia otros equipos o redes. Estos paquetes son enviados desde el sistema local a otro destino, por ejemplo, cuando se accede a una página web desde el equipo o se hace una conexión SSH hacia un servidor remoto. Ejemplos de uso:
-
Permitir que el sistema envíe paquetes a través del puerto 443 (HTTPS):
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
-
Bloquear el acceso a una IP específica desde el sistema local:
iptables -A OUTPUT -d 203.0.113.1 -j DROP
Cadena FORWARD (Reenvío)
Se utiliza para manejar los paquetes que atraviesan el sistema, es decir, que no están destinados al sistema local pero pasan a través de él para ser reenviados a otra red o equipo. Este tipo de reglas es relevante cuando el sistema actúa como un enrutador o puente de red, reenvía tráfico de una interfaz de red a otra, o está configurado para compartir una conexión a Internet. Ejemplos de uso:
-
Permitir el reenvío de tráfico entre dos interfaces de red:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
-
Bloquear el reenvío de tráfico desde una red interna específica:
iptables -A FORWARD -s 192.168.1.0/24 -j DROP
3.g) Las reglas
Las reglas que puedes definir dentro de las cadenas (INPUT
, OUTPUT
, FORWARD
) determinan cómo se deben manejar los paquetes de red. Las acciones que se toman sobre los paquetes son llamadas "objetivos" o targets, y entre las más comunes están DROP, ACCEPT, y algunas más que describo a continuación:
-
ACCEPT: Este objetivo permite que el paquete continúe su recorrido. Si un paquete coincide con una regla que tiene ACCEPT, el sistema lo deja pasar sin ningún tipo de bloqueo.
-
Función: Permitir el tráfico.
-
Uso común: Autorizar paquetes que deben ser procesados por el sistema.
-
Ejemplo: Permitir conexiones entrantes en el puerto 22:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-
-
DROP: Este objetivo bloquea el paquete y lo descarta silenciosamente, es decir, sin notificar al emisor de que el paquete ha sido eliminado. El paquete no se reenviará ni será procesado por el sistema.
-
Función: Bloquear el tráfico.
-
Uso común: Bloquear paquetes no deseados o sospechosos.
-
Ejemplo: Bloquear todas las conexiones entrantes desde la IP
203.0.113.5
iptables -A INPUT -s 203.0.113.5 -j DROP
-
-
REJECT: Este objetivo también bloquea el paquete, pero a diferencia de DROP, envía una notificación al origen indicando que el paquete ha sido rechazado. Es útil cuando se quiere notificar explícitamente que una conexión no está permitida.
-
Función: Bloquear el tráfico y enviar una notificación de rechazo.
-
Uso común: Bloquear conexiones no permitidas pero con retroalimentación.
-
Ejemplo: Bloquear conexiones HTTP y enviar una notificación al emisor
iptables -A INPUT -p tcp --dport 80 -j REJECT
-
-
LOG: Este objetivo no bloquea ni permite el paquete, pero registra la información del paquete en los logs del sistema para que pueda ser analizada. Se suele usar junto con otros objetivos como DROP o ACCEPT para rastrear tráfico.
-
Función: Registrar detalles de los paquetes en los logs del sistema.
-
Uso común: Auditar o depurar tráfico de red sin interferir en su procesamiento.
-
Ejemplo: Registrar los intentos de conexión SSH en los logs del sistema
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "
-
-
SNAT (Source Network Address Translation): Este objetivo cambia la dirección IP de origen de los paquetes. Se utiliza comúnmente en escenarios donde el sistema está actuando como un enrutador y necesita cambiar la IP de origen de los paquetes para que parezcan venir desde el propio sistema.
-
Función: Modificar la dirección IP de origen del paquete.
-
Uso común: Reenvío de paquetes desde una red interna hacia Internet.
-
Ejemplo: Cambiar la IP de origen de los paquetes salientes por
203.0.113.10
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.10
-
-
DNAT (Destination Network Address Translation): Este objetivo cambia la dirección IP de destino de los paquetes, lo que se utiliza para redirigir el tráfico hacia otro servidor o dispositivo. Es útil para configurar servidores proxy o redirigir tráfico a un servidor interno.
-
Función: Modificar la dirección IP de destino del paquete.
-
Uso común: Redirigir el tráfico entrante a otro servidor o dispositivo.
-
Ejemplo: Redirigir el tráfico HTTP entrante al puerto 8080 del servidor interno 192.168.1.100
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
-
-
MASQUERADE: Es similar a SNAT, pero se utiliza principalmente cuando se utiliza un dispositivo como gateway entre dos redes o en conexiones de red dinámicas (como las asignadas por DHCP). MASQUERADE es común en escenarios donde se comparte una conexión a Internet con otros dispositivos en la red interna.
-
Función: Ocultar la IP de origen detrás de la IP pública del servidor.
-
Uso común: Compartir una conexión a Internet con dispositivos internos.
-
Ejemplo: Permitir que dispositivos internos accedan a Internet usando la IP pública del servidor
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-
-
MARK: Este objetivo marca los paquetes para un procesamiento posterior, permitiendo una manipulación más avanzada del tráfico según su clasificación o política.
-
Función: Marcar paquetes para un tratamiento especial.
-
Uso común: Clasificación avanzada de tráfico.
-
Ejemplo: Marcar el tráfico HTTP para un tratamiento especial
iptables -A FORWARD -p tcp --dport 80 -j MARK --set-mark 1
-
3.h) Resumen de las reglas más comunes:
Objetivo |
Descripción |
---|---|
ACCEPT |
Permite el tráfico. |
DROP |
Bloquea el tráfico sin notificación. |
REJECT |
Bloquea el tráfico con notificación. |
LOG |
Registra el tráfico sin bloquearlo. |
SNAT |
Cambia la IP de origen. |
DNAT |
Cambia la IP de destino. |
MASQUERADE |
Como SNAT pero para IPs dinámicas. |
MARK |
Marca el paquete para procesamiento avanzado. |
4. Instalación y Configuración Inicial
Asegurarse que se está trabajando como superusuario, para hacerlo se puede brindar el comando sudo
antes de cualquiera de las siguientes instrucciones o escribiendo su –
se brinda la clave de superusuario y al final del trabajo como superusuario escribir el comando exit
.
4.a) Instalación de iptables
iptables suele estar preinstalado en la mayoría de distribuciones de Linux, es extremadamente raro que no se encuentre de ésta forma. Sin embargo, en caso de que no esté disponible, puedes instalarlo utilizando el gestor de paquetes correspondiente.
Distribuciones Basadas en Debian/Ubuntu (Usando apt-get
):
-
Actualice la lista de paquetes y luego instale:
apt-get updateapt-get install iptables
Distribuciones Basadas en Red Hat/Fedora (Usando yum
o dnf
):
-
Instale iptables con yum:
yum install iptables
-
O usando dnf (para distribuciones más nuevas como Fedora):
dnf install iptables
Distribuciones Basadas en Arch Linux (Usando pacman
):
-
Instale el paquete iptables:
pacman -S iptables
Distribuciones Basadas en Mageia y Mandriva (Usando urpmi
):
-
Instale iptables utilizando
urpmi
:urpmi iptables
4.b) Gestión del servicio en Linux
Al igual que con todos los comandos de administración, en Linux es necesario estar actuando con el rol de superusuario, tal como se explicó en el apartado anterior (Instalación de iptables).
-
Habilitar el servicio: Esto significa indicar a Linux que cada vez que el computador reinicie, el servicio quedará en funcionamiento automáticamente.
systemctl enable iptables
-
Deshabilitar el servicio: Esto significa el indicar que cuando el sistema reinicie, el servicio no entrará en funcionamiento a menos que se arranque manualmente.
systemctl disable iptables
-
Verificar el estado del servicio: Preguntar al sistema operativo si el servicio se encuentra en funcionamiento (running) o si está apagado.
systemctl status iptables
-
Iniciar manualmente el servicio: Poner el servicio en funcionamiento.
systemctl start iptables
-
Detener manualmente el servicio: Poner el servicio en funcionamiento.
systemctl stop iptables
-
Reiniciar manualmente el servicio: Poner el servicio en funcionamiento.
systemctl restart iptables
-
Guardar reglas: Tras configurar las cadenas y reglas de filtrado con el parámetro save puede indicar al servicio que se almacenen las reglas activas para ser utilizadas cuando el servicio reinicie con el comando:
-
systemctl save iptables
-
4.c) Ayudas para la configuración
A lo largo del tiempo, han surgido varias soluciones para facilitar la gestión de iptables, que es una herramienta poderosa pero algo compleja para la configuración manual de reglas de filtrado de tráfico.
Muchas veces, las herramientas como firewalld, UFW, EasyFirewall y otras soluciones de gestión de cortafuegos en Linux se confunden con ser "firewalls" por sí mismas. Sin embargo, en realidad, estas herramientas no son cortafuegos en el sentido estricto, sino interfaces de configuración que simplifican el trabajo con iptables, que es el verdadero cortafuegos a nivel del kernel de Linux. Estas herramientas, son interfaces o capas de abstracción que facilitan la creación y administración de las reglas de iptables. Estas herramientas automatizan y simplifican tareas que podrían ser tediosas o complicadas de realizar manualmente con comandos directos de iptables.
Firewalld
Es una solución moderna de gestión de cortafuegos diseñada para facilitar la administración dinámica de reglas de firewall sin necesidad de reiniciar el servicio. Ofrece una interfaz más sencilla que iptables y es la solución predeterminada en varias distribuciones modernas de Linux, como Fedora, RHEL, CentOS, Rocky y AlmaLinux.
Características Principales de Firewalld:
-
Zonas: Firewalld organiza las reglas del cortafuegos en zonas predefinidas y personalizables, lo que permite aplicar diferentes políticas de seguridad según el tipo de red a la que el sistema esté conectado (como home, public, work, etc.).
-
Cambios Dinámicos: Permite aplicar cambios a las reglas sin interrumpir las conexiones existentes. Los cambios pueden aplicarse temporalmente o de forma permanente.
-
Interfaces de Red: Puedes asociar interfaces de red a zonas específicas, lo que facilita la creación de políticas basadas en las conexiones que utiliza cada dispositivo.
-
Interfaz Gráfica y de Línea de Comandos: Firewalld proporciona tanto una interfaz gráfica (
firewall-config
) como una línea de comandos (firewall-cmd
), lo que lo hace accesible tanto para usuarios avanzados como para principiantes.
Ejemplos de Uso de Firewalld:
-
Para agregar una regla que permita el tráfico HTTP en la zona pública:
firewall-cmd --zone=public --add-service=http --permanentfirewall-cmd –reload
agrega una regla permanente y recarga la configuración del cortafuegos
-
Para asociar una interfaz de red a una zona:
firewall-cmd --zone=work --change-interface=eth0
Ventajas de Firewalld:
-
Gestión dinámica del cortafuegos.
-
Fácil integración con servicios predefinidos (HTTP, SSH, etc.).
-
Ideal para entornos de escritorio y servidores donde la conectividad cambia frecuentemente.
EasyFirewall
Es una solución orientada a usuarios que buscan una herramienta de cortafuegos fácil de usar, generalmente con una interfaz gráfica. Aunque EasyFirewall no es tan ampliamente conocido como firewalld, cumple un propósito similar: simplificar la creación y administración de reglas de cortafuegos.
Características c de EasyFirewall:
-
Interfaz Intuitiva: La principal característica de EasyFirewall es su facilidad de uso. Está diseñado con una interfaz gráfica amigable que guía al usuario a través de la creación de reglas sin necesidad de conocer comandos complejos.
-
Configuración Automática: A menudo, viene preconfigurado con reglas básicas y opciones de seguridad estándar, lo que lo hace ideal para usuarios novatos que no están familiarizados con los detalles técnicos del cortafuegos.
-
Fácil Configuración de Servicios: Similar a firewalld, permite agregar excepciones para servicios comunes (HTTP, SSH, FTP) con solo unos clics.
Ventajas de EasyFirewall:
-
Ideal para usuarios que no tienen experiencia con firewalls y buscan una solución plug-and-play.
-
Es una buena opción para configuraciones básicas en entornos domésticos o pequeños servidores.
UFW (Uncomplicated Firewall)
es una solución de cortafuegos simple desarrollada para simplificar el uso de iptables en distribuciones basadas en Ubuntu y Debian. Su objetivo es ser fácil de entender para usuarios nuevos, proporcionando una sintaxis sencilla y comandos fáciles de recordar.
Características Principales de UFW:
-
Comandos Simples: Utiliza comandos básicos como
ufw allow
oufw deny
para permitir o bloquear tráfico. -
Preconfiguraciones: Proporciona reglas preconfiguradas para servicios comunes.
-
Permite y Bloquea Tráfico con Simplicidad: Por ejemplo, permitir conexiones SSH:
ufw allow ssh
-
Interfaz Gráfica Opcional: Hay una interfaz gráfica llamada GUFW para aquellos que prefieren un entorno visual.
Ventajas de UFW:
-
Muy fácil de usar, especialmente para principiantes.
-
Buena opción para servidores simples o configuraciones domésticas.
Shorewall
Es otra solución que funciona como una interfaz para iptables, diseñada para usuarios más avanzados. Es más potente que UFW, pero requiere una mayor comprensión de la red.
Características de Shorewall:
-
Escalabilidad: Ideal para entornos de red más grandes donde se necesita una configuración detallada de cortafuegos.
-
Configuración en Archivos: Las reglas se configuran a través de archivos de configuración, lo que permite una administración más controlada y reproducible.
Ventajas de Shorewall:
-
Potente y flexible, ideal para administradores que necesitan gestionar cortafuegos complejos.
4.d) Distribuciones Especializadas para Firewalls
A lo largo del tiempo, han surgido varias distribuciones de sistemas operativos diseñadas específicamente para actuar como firewalls dedicados. Estas distribuciones suelen estar optimizadas para brindar seguridad de red, filtrado de tráfico y funciones avanzadas de firewall sin requerir que el administrador configure reglas manualmente en iptables. Entre las más populares se encuentran Endian Firewall, pfSense y OPNsense. Estas soluciones proporcionan interfaces gráficas, sistemas de gestión centralizados y funcionalidades adicionales, convirtiéndose en opciones atractivas para pequeñas y grandes redes.
Endian Firewall
Es una distribución de código abierto basada en Linux que se utiliza como un firewall UTM (Unified Threat Management). A diferencia de las soluciones tradicionales que solo ofrecen filtrado de paquetes, Endian Firewall integra varias herramientas de seguridad adicionales, como:
-
Firewall con inspección profunda de paquetes
-
VPN para conexiones seguras (tanto IPsec como OpenVPN)
-
Antivirus y Antispam
-
Sistema de detección de intrusos (IDS)
-
Balanceo de carga y Control de ancho de banda
Principales características:
-
Gestión de la red: Soporte completo para el control de tráfico, NAT, DMZ y proxies.
-
Fácil de usar: Tiene una interfaz web intuitiva para configurar reglas de firewall y políticas de seguridad.
-
Segmentación de la red: Permite crear zonas de red separadas (verde, rojo, azul y naranja) para diferentes niveles de seguridad y acceso.
-
Seguridad avanzada: Cuenta con filtrado de contenido web, prevención de malware y funciones para bloquear contenido peligroso.
Endian es ideal para empresas medianas que buscan una solución completa de gestión de red con funciones integradas de firewall y seguridad.
pfSense
Es una de las soluciones de firewall más conocidas en el mundo de los sistemas de código abierto. Está basado en FreeBSD y ofrece una gran cantidad de funcionalidades de seguridad, siendo utilizado tanto en redes domésticas como en grandes corporaciones.
Principales características:
-
Firewall y Router: pfSense actúa tanto como firewall como router, permitiendo una administración avanzada del tráfico de red.
-
VPN: Soporta varias configuraciones de VPN, incluyendo IPsec, OpenVPN, y WireGuard.
-
Detección y prevención de intrusos: Incluye sistemas como Snort y Suricata.
-
Balanceo de carga y Failover: Ofrece la posibilidad de balancear el tráfico entre múltiples enlaces de internet y configurar failover en caso de caídas.
-
Altamente configurable: Aunque tiene una interfaz gráfica de usuario (GUI), es extremadamente flexible y permite configuraciones avanzadas a través de línea de comandos.
-
Amplia comunidad: Debido a su popularidad, cuenta con una comunidad activa que desarrolla y mantiene paquetes adicionales, mejorando su funcionalidad (p.ej., filtrado de contenido web, gestión de ancho de banda, etc.).
pfSense es una solución robusta para redes grandes y complejas que requieren características avanzadas de seguridad y control.
OPNsense
Es una distribución derivada de pfSense que se ha orientado más hacia la facilidad de uso y la seguridad mejorada. Al igual que pfSense, está basada en FreeBSD y se centra en ofrecer una interfaz gráfica moderna y fácil de usar, combinada con potentes herramientas de firewall.
Principales características:
-
Interfaz gráfica moderna: Su GUI es limpia y muy fácil de navegar, diseñada para usuarios que buscan simplicidad.
-
Firewall avanzado: Incluye funciones de filtrado de paquetes, firewall de aplicaciones y control de acceso.
-
VPN: Soporte completo para VPN, similar a pfSense.
-
Actualizaciones frecuentes: OPNsense se actualiza regularmente, lo que garantiza mejoras constantes de seguridad y funcionalidad.
-
Plugins modulares: OPNsense ofrece un sistema de plugins que permite añadir características como balanceo de carga, detección de intrusos, filtrado web, entre otras.
OPNsense es ideal para administradores que buscan la potencia de pfSense, pero con una interfaz más amigable y un enfoque modular.
IPFire
Es otra distribución de código abierto basada en Linux que está diseñada para actuar como firewall y router. Su objetivo principal es ofrecer un firewall fácil de usar con potentes funciones de seguridad, incluso en hardware limitado.
Principales características:
-
Gestión de redes: Soporta reglas avanzadas de firewall y permite configurar NAT, DMZ y múltiples zonas de red (similar a Endian).
-
Proxy y Filtrado de contenido: Incluye un proxy con capacidades de filtrado de contenido para bloquear sitios web no deseados.
-
Intrusion Detection/Prevention System (IDS/IPS): Protege contra amenazas externas mediante Snort o Suricata.
-
Actualizaciones de seguridad rápidas: IPFire se enfoca en la seguridad, proporcionando parches y actualizaciones de forma rápida.
-
Fácil de usar: Su GUI es fácil de manejar, aunque también permite configuraciones avanzadas para usuarios con más experiencia.
Es una excelente opción para redes pequeñas o medianas, especialmente en entornos donde el hardware es limitado pero se requiere una solución de seguridad confiable.
ClearOS
Es una distribución basada en Linux (específicamente en CentOS) orientada a servir como firewall, gateway y servidor de red. ClearOS está diseñado para facilitar la administración de redes en pequeñas empresas, combinando múltiples servicios de red en una única solución.
Principales características:
-
Firewall y Gateway: funciona protegiendo y gestionando el tráfico de red.
-
Gestión centralizada: permite administrar múltiples servicios desde una interfaz gráfica amigable, como servicios de correo, VPN, proxy web, etc.
-
Módulos adicionales: A través de su marketplace, se pueden instalar módulos adicionales, como balanceo de carga, servidor de archivos, filtrado de contenido y más.
-
Fácil integración con entornos empresariales: se puede integrar fácilmente en entornos empresariales gracias a su soporte para Active Directory y LDAP.
Es ideal para pequeñas empresas que necesitan una solución todo-en-uno para gestionar la seguridad y los servicios de red.
4.e) Tabla Comparativa de Distribuciones Especializadas en Firewalls
Característica |
Endian Firewall |
pfSense |
OPNsense |
IPFire |
ClearOS |
---|---|---|---|---|---|
Base |
Linux (Red Hat) |
FreeBSD |
FreeBSD |
Linux (LFS) |
Linux (CentOS) |
Tipo de Firewall |
UTM (Unified Threat Management) |
Firewall/Router avanzado |
Firewall/Router avanzado |
Firewall básico con IPS |
Gateway, Firewall, Servidor |
GUI |
Sí, interfaz web |
Sí, interfaz web |
Sí, interfaz web |
Sí, interfaz web |
Sí, interfaz web |
Sistema de Gestión de Red |
Segmentación de red (zonas verde, rojo, azul, naranja) |
Avanzado, Soporta VLAN, NAT, DMZ |
Similar a pfSense |
Soporte NAT, VLAN y DMZ |
Soporte completo de red |
VPN |
IPsec, OpenVPN |
IPsec, OpenVPN, WireGuard |
IPsec, OpenVPN, WireGuard |
IPsec, OpenVPN |
IPsec, OpenVPN |
Intrusion Detection |
Sí, con Snort |
Sí, con Snort o Suricata |
Sí, con Snort o Suricata |
Sí, con Snort |
No (módulos adicionales disponibles) |
Balanceo de Carga |
Sí |
Sí |
Sí |
Sí |
Sí, con módulos adicionales |
Control de Ancho de Banda |
Sí |
Sí |
Sí |
No |
Sí, con módulos adicionales |
Filtrado de Contenido |
Sí |
A través de plugins adicionales |
A través de plugins adicionales |
Sí, proxy integrado con filtrado web |
A través de marketplace |
Facilidad de Uso |
Alta, orientado a usuarios empresariales |
Media, requiere conocimientos avanzados |
Alta, interfaz más moderna |
Media, más simple que pfSense |
Alta, orientado a pequeñas empresas |
Actualizaciones |
Moderadas |
Frecuentes |
Frecuentes |
Moderadas |
Moderadas |
Plugins/Extensiones |
No |
Sí, a través de paquetes |
Sí, sistema de plugins |
No |
Sí, a través del marketplace |
Comunidades y Soporte |
Amplia comunidad y soporte comercial |
Gran comunidad y soporte comercial |
Creciente comunidad |
Activa comunidad y soporte comercial |
Soporte comercial y comunidad |
Uso Ideal |
PYMEs y medianas empresas |
Redes grandes, empresas e ISP |
Redes grandes y medianas |
Pequeñas redes y hogares |
PYMEs y pequeñas organizaciones |
4.f) Resumen
-
Endian Firewall es ideal para PYMEs que buscan una solución UTM con herramientas de seguridad integradas.
-
pfSense es excelente para empresas y grandes redes, con soporte avanzado para funciones de red y seguridad.
-
OPNsense ofrece una alternativa moderna a pfSense, con un enfoque en facilidad de uso y seguridad.
-
IPFire es una buena opción para quienes buscan un firewall simple y ligero, ideal para redes pequeñas y entornos domésticos.
-
ClearOS es una solución versátil para pequeñas empresas que necesitan no solo un firewall, sino también servicios de red adicionales como servidor de archivos o correo.
5. Guía de Navegación
La interfaz de iptables es completamente basada en línea de comandos, lo que significa que interactúas con ella mediante comandos específicos. A continuación se presenta una guía de navegación de los comandos más comunes:
5.a) Comandos Principales:
-
iptables -L
: Lista las reglas activas en la tabla de filtro por defecto. -
iptables -A
: Añade una nueva regla. -
iptables -D
: Elimina una regla. -
iptables -F
: Elimina todas las reglas de una tabla. -
iptables -P
: Establece políticas predeterminadas. -
iptables-save
: Guarda las reglas activas en distribuciones basadas en Redhat. -
iptables-save > /etc/iptables/rules.v4
: Guarda las reglas activas en distribuciones basadas en Debian
Las opciones y parámetros como -A
, -L
y -D
permiten manipular reglas y definir qué hacer con el tráfico de red.
6. Funciones y Operaciones Principales
-
Listar Reglas: Para ver las reglas activas en la tabla filter, utiliza el comando:
iptables -L -n
-
Listar las reglas NAT: Para listar las reglas de la tabla nat:
iptables -t nat -L
-
Agregar Reglas: Para permitir tráfico en el puerto 80 (HTTP), usa el siguiente comando:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
-
Bloquear hosts: Para bloquear todo el tráfico desde una IP específica:
iptables -A INPUT -s 192.168.1.100 -j DROP
-
Bloquear red: Para bloquear todo el tráfico desde un rango de Ips:
iptables -A INPUT -s 192.168.1.0/24 -j DROP
-
Permitir Conexiones SSH Limitadas: Para limitar el número de conexiones SSH para evitar ataques de fuerza bruta:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent –setiptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent –update --seconds 60 --hitcount 4 -j DROP
-
Permitir tráfico en el puerto 22 (SSH):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-
Bloquear tráfico en el puerto 25 (SMTP):
iptables -A INPUT -p tcp --dport 25 -j DROP
-
Eliminar Reglas:
-
Primero, lista las reglas con su número de línea:
iptables -L –line-numbers
-
Luego, elimina la regla correspondiente:
iptables -D INPUT 3
-
-
Guardar Reglas: Guarda tus reglas para que persistan después del reinicio:
-
distribuciones basadas en Debian como Ubuntu o Mint:
iptables-save > /etc/iptables/rules.v4
-
distribuciones basadas en Red Hat como CentOS, Rocky, AlmaLinux, Mageia:
service iptables save
-
7. Gestión de Usuarios y Seguridad
La gestión y manipulación de las reglas de filtrado de paquetes es una tarea sensible que puede afectar la seguridad y el funcionamiento de todo el sistema e inclusive la red protegida. Por esta razón, únicamente el usuario root o los usuarios con privilegios administrativos tienen permiso para realizar cambios en las reglas de firewall.
7.a) Acceso de Administrador (root)
Debido a la naturaleza crítica de iptables, sólo el usuario root puede ejecutar comandos que manipulan las reglas de firewall. Los usuarios comunes no tienen acceso a estas configuraciones para evitar cambios no autorizados que podrían comprometer la seguridad del sistema.
Para realizar operaciones con iptables, debes estar conectado como root o utilizar el comando sudo
para otorgarte temporalmente los permisos necesarios.
Acceder como root usando sudo
:
Si tienes el software sudo
(super-user do: hacer como superusuario), puedes usarlo para ejecutar comandos de iptables como administrador. Este método es preferido en distribuciones basadas en debian, ya que proporciona control sobre qué usuarios pueden acceder a privilegios administrativos, y se auditan los comandos ejecutados.
Cambiar a root usando su
:
Alternativamente, en cualquier distribución, inclusive las que usan sudo
, puedes iniciar una sesión como el usuario root usando el comando su -
. Esto te otorgará todos los privilegios de root para la sesión actual, permitiendo manipular iptables sin tener que usar sudo
en cada comando.
Este método es útil si necesitas ejecutar múltiples comandos de iptables en una sola sesión sin tener que preceder cada uno con sudo
.
7.b) Importancia de la Seguridad
Dado que iptables controla el acceso a la red y protege el sistema de amenazas externas, el acceso a esta herramienta debe estar restringido al administrador root o usuarios autorizados mediante sudo. Una configuración incorrecta o la manipulación no autorizada de las reglas puede dejar el sistema vulnerable a ataques o interrumpir el tráfico legítimo.
7.c) Mejores Prácticas
-
Usar sudo: Siempre que sea posible, utilizar
sudo
para ejecutar comandos de iptables es una buena práctica, ya que limita la cantidad de tiempo que el sistema pasa bajo una sesión con permisos de superusuario. -
Restringir privilegios de sudo: Asegúrate de que sólo los usuarios necesarios tengan acceso a
sudo
y privilegios de root.sudo
se puede configurar para autorizar la ejecución de comandos específicos a cada usuario en forma independiente. -
Mantener registros: Al utilizar
sudo
, los comandos ejecutados quedan registrados en la bitácora, lo que permite auditar qué acciones se han realizado con iptables. Esto es importante para la seguridad y el control de cambios en la configuración del firewall. -
Advertencia sobre sudo: tener un software obsoletos, una mala configuración de sudo o tener usuarios descuidados o permisivos es una brecha de seguridad que puede permitir a intrusos obtener el control total de la máquina, de tal forma que se recomienda mantenerlo actualizado y bien configurado para cada uno de los usuarios.
8. Mantenimiento y Actualizaciones
Es recomendable revisar y actualizar las reglas de iptables
periódicamente para asegurar que se mantengan seguras y optimizadas.
8.a) Actualización de iptables
-
Para actualizar
iptables
en sistemas basados en Debian:apt-get update && apt-get upgrade iptables
-
Para actualizar
iptables
en sistemas basados en urpm:urpmi iptables
Licencia
Manual de iptables está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional.
Ricardo Naranjo Faccini

Nació en Barranquilla, Atl, Colombia el 14 de enero de 1971
- Magíster en Ingeniería de Sistemas y Computación de la Universidad de Los Andes 1998
- Ingeniero Civil de la Universidad de Los Andes 1995
- Diplomado en docencia en Ingeniería de la Pontificia Universidad Javeriana 2008
- Gerente de la firma Skina IT Solutions, su gestión ha llevado a la empresa al nivel de exportación de software. Experto en calidad en el desarrollo de software con énfasis en el uso de herramientas libres orientadas hacia WWW.
- CTO de AuthorsGlobe, empresa participante en el MIT 100K, elegida como parte del "TOP 10" entre 300 proyectos presentados en este concurso del Massachussets Institute of Technology MIT.
- Durante el periodo 2004-2005 se desempeñó como Gerente de desarrollo de negocios NOVELL en Nexsys de Colombia.
- Ejerce docencia como catedrático en la Universidad Javeriana, al igual que lo ha realizado en la Universidad de Los Andes, Universidad de Manizales y Universidad autónoma de Bucaramanga.
- Comprometido con la divulgación del software libre y su aplicación en Colombia, ha dictado más de 60 conferencias en todo el país, co-fundador de LinuxCol, la primera comunidad de usuarios de Linux en Colombia.
- Colaborador del grupo ACIS-Linux.