Guía completa sobre el firewall en Ubuntu: UFW e IPTables

El firewall es una de las herramientas esenciales para proteger servidores y dispositivos conectados a la red. En el caso de Ubuntu, existen diversas opciones para gestionar el filtrado de paquetes, siendo UFW (Uncomplicated Firewall) y IPTables las más utilizadas.

En este artículo, explicaremos cómo funcionan, cómo configurarlos y qué prácticas seguir para fortalecer la seguridad de un sistema basado en Ubuntu.


1. Netfilter e IPTables: El núcleo del firewall en Linux

El kernel de Linux incluye el subsistema Netfilter, encargado de gestionar el tráfico de red. Este sistema permite aceptar, modificar o rechazar paquetes en función de reglas establecidas por el usuario.

Para administrar estas reglas, se usa IPTables, que permite definir políticas de seguridad sobre los paquetes que entran, salen o transitan por un servidor. Aunque es potente, su configuración puede ser compleja, por lo que Ubuntu incluye UFW, una interfaz más sencilla para gestionar estas reglas sin necesidad de usar IPTables directamente.


2. UFW: Uncomplicated Firewall, la opción predeterminada en Ubuntu

UFW es una interfaz para IPTables diseñada para simplificar la gestión del firewall. Su objetivo es proporcionar una forma intuitiva de configurar reglas de filtrado de tráfico, ya sea para IPv4 o IPv6.

Activar y desactivar UFW

Por defecto, UFW está desactivado en Ubuntu. Para habilitarlo, se usa:

sudo ufw enable

Para desactivarlo:

sudo ufw disable

Abrir y cerrar puertos con UFW

Para permitir conexiones en un puerto específico, por ejemplo, el puerto 22 (SSH):

sudo ufw allow 22

Para cerrarlo:

sudo ufw deny 22

También es posible especificar el protocolo:

sudo ufw allow 22/tcp
sudo ufw allow 22/udp

Añadir y eliminar reglas

Para agregar una regla en una posición específica dentro de la lista de reglas:

sudo ufw insert 1 allow 80

Para eliminar una regla:

sudo ufw delete allow 80

Permitir acceso desde direcciones IP específicas

Si solo se desea permitir acceso SSH desde una IP concreta, como 192.168.0.2:

sudo ufw allow proto tcp from 192.168.0.2 to any port 22

Para permitir tráfico desde toda una subred:

sudo ufw allow from 192.168.0.0/24 to any port 22

Modo de prueba con –dry-run

Si quieres ver cómo quedarían las reglas antes de aplicarlas, puedes usar:

sudo ufw --dry-run allow http

Esto mostrará las reglas generadas sin aplicarlas.

Consultar el estado del firewall

Para ver el estado actual de UFW:

sudo ufw status

Para una vista más detallada:

sudo ufw status verbose

3. Uso de perfiles de aplicaciones en UFW

Algunas aplicaciones instalan perfiles en /etc/ufw/applications.d/, donde se especifican los puertos y protocolos que utilizan.

Para listar las aplicaciones con perfil de UFW:

sudo ufw app list

Para permitir tráfico a una aplicación específica:

sudo ufw allow "Apache Full"

También se puede restringir el acceso por IP:

sudo ufw allow from 192.168.0.0/24 to any app Samba

Para ver detalles de una aplicación específica:

sudo ufw app info "Apache Full"

4. IP Masquerading: Compartir conexión a Internet

El IP Masquerading permite que dispositivos en una red local accedan a Internet utilizando una única IP pública.

Para habilitarlo en Ubuntu con UFW:

  1. Habilitar el reenvío de paquetes en /etc/default/ufw:
DEFAULT_FORWARD_POLICY="ACCEPT"
  1. Editar /etc/ufw/sysctl.conf y descomentar:
net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1
  1. Configurar reglas en /etc/ufw/before.rules:
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Reenvío de tráfico a través de eth0
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

# No eliminar la línea COMMIT o las reglas no se procesarán
COMMIT
  1. Reiniciar UFW:
sudo ufw disable && sudo ufw enable

5. Configuración avanzada con IPTables

Si prefieres usar IPTables en lugar de UFW, puedes habilitar IP Masquerading con:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE

Para permitir el tráfico reenviado:

sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT

Para que estas reglas persistan tras un reinicio, agrégalas a /etc/rc.local.


6. Configuración de logs en el firewall

Los logs permiten detectar intentos de acceso no autorizado y solucionar problemas de conectividad.

Para activar el registro en UFW:

sudo ufw logging on

Para desactivarlo:

sudo ufw logging off

En IPTables, puedes registrar conexiones en el puerto 80 con:

sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "HTTP_CONN: "

Los registros se almacenan en /var/log/syslog o /var/log/kern.log.


7. Herramientas adicionales para gestionar el firewall

Si IPTables y UFW no son suficientes para tus necesidades, existen otras herramientas:

  • Shorewall: Ideal para redes avanzadas con reglas personalizadas.
  • Firewalld: Alternativa moderna a IPTables usada en distribuciones como Fedora.
  • Fail2Ban: Protege el servidor bloqueando IPs sospechosas de ataques de fuerza bruta.

8. Recomendaciones finales

  • Minimiza los servicios expuestos: Solo permite los puertos estrictamente necesarios.
  • Usa listas blancas y negras: Restringe accesos a direcciones IP específicas.
  • Habilita logs para auditar la actividad de la red.
  • Prueba reglas antes de aplicarlas con --dry-run en UFW o agregando reglas temporales en IPTables.

Con estas configuraciones y prácticas recomendadas, puedes proteger eficazmente tu servidor Ubuntu contra accesos no autorizados y mantener un control seguro sobre el tráfico de red.

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio
×