Skip to content

Firewalls

This content is not available in your language yet.


En cualquier sistema expuesto a red, el firewall es la primera línea de defensa. Su función es controlar qué tráfico puede entrar o salir del sistema, aplicando políticas de seguridad basadas en reglas. Sin un firewall correctamente configurado, incluso un servidor perfectamente parcheado sigue siendo vulnerable.

En Linux moderno existen múltiples herramientas, pero destacan dos enfoques:

  • UFW (Uncomplicated Firewall) → interfaz simplificada (ideal para administración rápida).
  • NFTables → herramienta avanzada y moderna que sustituye a iptables.

Como Sysadmin, debes ser capaz de trabajar con ambos: UFW para operaciones rápidas y NFTables para configuraciones complejas y altamente optimizadas.


Al finalizar este capítulo serás capaz de:

  • Comprender cómo funciona un firewall a nivel de filtrado de paquetes.
  • Configurar reglas básicas con UFW.
  • Implementar políticas avanzadas con NFTables.
  • Gestionar tráfico entrante, saliente y reenviado.
  • Diagnosticar problemas de conectividad relacionados con firewall.
  • Diseñar políticas seguras en entornos de producción.

Un firewall es un sistema que inspecciona paquetes de red y decide si deben ser:

  • Aceptados (ACCEPT)
  • Rechazados (REJECT)
  • Descartados (DROP)

Se basa en reglas que analizan:

  • IP origen/destino
  • puerto
  • protocolo (TCP, UDP, ICMP)

  • No mantiene estado.
  • Analiza paquetes individualmente.
  • Mantiene seguimiento de conexiones.
  • Permite tráfico relacionado automáticamente.

Ejemplo:

  • Permites conexión saliente HTTP → respuestas permitidas automáticamente.

En motores como nftables:

  • INPUT → tráfico entrante
  • OUTPUT → tráfico saliente
  • FORWARD → tráfico encaminado

Definen comportamiento cuando no hay reglas:

  • deny all → todo bloqueado (recomendado)
  • allow all → inseguro

Configurar un servidor seguro:

  • Solo permitir SSH y HTTP
  • Bloquear resto de tráfico entrante
  • Permitir salidas


Ventana de terminal
sudo apt install ufw
sudo ufw enable

Ventana de terminal
sudo ufw default deny incoming
sudo ufw default allow outgoing

Ventana de terminal
sudo ufw allow 22/tcp

Permitir SSH antes de activar el firewall evita perder acceso al servidor.


Ventana de terminal
sudo ufw allow 80/tcp

Ventana de terminal
sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)
22/tcp ALLOW
80/tcp ALLOW

Ventana de terminal
sudo ufw delete allow 80/tcp

Ventana de terminal
sudo ufw limit 22/tcp

Mitiga ataques brute-force.



Ventana de terminal
sudo nft list ruleset

Editar:

Ventana de terminal
sudo nano /etc/nftables.conf

Contenido:

table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
ct state established,related accept
iif lo accept
tcp dport 22 accept
tcp dport 80 accept
}
chain forward {
type filter hook forward priority 0;
policy drop;
}
chain output {
type filter hook output priority 0;
policy accept;
}
}

  • policy drop → bloqueo por defecto
  • ct state established → tráfico legítimo permitido
  • lo → loopback permitido
  • reglas específicas → puertos abiertos

Ventana de terminal
sudo systemctl enable nftables
sudo systemctl start nftables

Ventana de terminal
sudo nft list ruleset

Ventana de terminal
sudo nft add rule inet filter input tcp dport 443 accept

-Causa:*

  • Firewall bloqueó puerto 22.

-Solución:*

  • Acceso por consola (KVM / rescue).
  • Corregir reglas.

Verificar:

Ventana de terminal
ss -tulnp

Y firewall:

Ventana de terminal
ufw status

Revisar:

Ventana de terminal
ufw status numbered

Asegurar:

Ventana de terminal
systemctl enable nftables

Usar múltiples firewalls simultáneamente puede generar conflictos imprevisibles.


Siempre:

deny incoming

Solo abrir puertos necesarios.


En nftables:

log prefix "DROP: "

  • limitar conexiones
  • usar fail2ban

Separar:

  • frontend
  • backend
  • bases de datos

Ejemplo Ansible:

- name: Configurar firewall
ufw:
rule: allow
port: 22

Ventana de terminal
nmap localhost

❌ Incorrecto:

Ventana de terminal
ufw allow 0.0.0.0/0

Has aprendido a implementar firewalls en Linux utilizando tanto UFW como NFTables, entendiendo desde la teoría del filtrado hasta la aplicación práctica en entornos reales. Este conocimiento es clave para proteger infraestructuras frente a accesos no autorizados.

El siguiente paso es profundizar en la visibilidad del sistema:

➡️ 7.2 Auditoría y Logs, donde aprenderás a monitorizar eventos, detectar intrusiones y analizar actividad del sistema en profundidad.