1. ¿Qué es un Firewall?
Un firewall es un programa que controla qué tráfico de red entra y sale de tu ordenador o red.
Piensa en un firewall como un portero en la puerta de una discoteca:
- Decide quién puede entrar.
- Decide quién puede salir.
- Decide quién no pasa ni de broma.
En Linux, los firewalls funcionan leyendo paquetes (información de red) y aplicando reglas para permitirlos o bloquearlos.
2. ¿Qué firewalls existen en Linux?
Hoy en día, el firewall moderno de Linux es:
✔️ nftables — el firewall nativo actual Desde 2014 reemplazó a iptables como estándar.
✔️ ufw (Uncomplicated Firewall)
Es una interfaz sencilla para gestionar reglas sin complicarte con nftables o iptables.
→ Muy útil para PCs.
3. Conceptos básicos que DEBES entender
Antes de tocar nada, tienes que conocer estos pilares:
Tablas (tables)
Son "cajas" donde se guardan las reglas.
Tablas principales:
| Tabla | Para qué sirve |
|---|---|
| filter | Filtrar tráfico (permitir/bloquear) |
| nat | Traducción de direcciones (router) |
| mangle | Modificaciones avanzadas de paquetes |
| raw | Excepciones |
Cadenas (chains)
Son como "carriles" por donde pasan los paquetes. En filtro:
| Cadena | Significado |
|---|---|
| input | Lo que ENTRA a tu PC |
| output | Lo que SALE de tu PC |
| forward | Lo que PASA A TRAVÉS del PC (rol de router) |
Reglas (rules)
Son declaraciones como:
“Si un paquete viene del puerto 22, lo bloqueo.”
Una regla tiene:
- condición → qué tipo de tráfico mira
- acción → accept, drop, reject
4. Empezando con nftables
Vamos paso a paso.
✔️ 4.1 Ver la configuración actual
sudo nft list ruleset
✔️ 4.2 Activar el servicio nftables
sudo systemctl enable --now nftables
✔️ 4.3 Crear un firewall básico para un PC de escritorio Queremos que:
- se permita tráfico saliente
- se bloquee tráfico entrante
- excepto conexiones que tú iniciaste
- y permitir SSH opcionalmente
Archivo /etc/nftables.conf
sudo nano /etc/nftables.conf
Añade este contenido:
table inet filter {
chain input {
type filter hook input priority 0;
# Permitir conexiones ya establecidas
ct state established,related accept
# Permitir loopback
iif lo accept
# Permitir ping
ip protocol icmp accept
# Permitir SSH (opcional)
tcp dport 22 accept
# El resto, bloquear
reject with icmp type admin-prohibited
}
chain output {
type filter hook output priority 0;
accept
}
}
Activar:
sudo nft -f /etc/nftables.conf
5. UFW: el firewall para principiantes
UFW es perfecto para PC de escritorio. ✔️ Activar ufw
sudo ufw enable
✔️ Permitir servicios comunes:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow 443/tcp
✔️ Bloquear algo:
sudo ufw deny 23/tcp
✔️ Ver estado:
sudo ufw status verbose
6. Diferencias entre nftables y UFW
| nftables | ufw |
|---|---|
| Completo y potente | Interfaz sencilla |
| Reemplazo moderno de iptables | Ideal para usuarios menos expertos |
| Permite firewalls complejos | Reglas sencillas |
| Se usa en servidores y routers | Perfecto para PCs |
7. Configuración de un Firewall para una Red Completa (Router Linux)
Supongamos este escenario:
Internet <---> eth0 [Linux Router] eth1 <------> LAN 192.168.1.0/24
Objetivos:
- Hacer NAT (para compartir Internet).
- Bloquear tráfico extraño de Internet.
- Permitir tráfico interno.
- Registrar paquetes sospechosos.
✔️ Archivo completo de /etc/nftables.conf
table inet filter {
chain input {
type filter hook input priority 0;
ct state established,related accept
iif lo accept
# Permitir SSH desde la LAN
iifname "eth1" tcp dport 22 accept
# Bloquear tráfico entrante desde Internet
iifname "eth0" reject with icmp type admin-prohibited
}
chain forward {
type filter hook forward priority 0;
# Permitir tráfico de la LAN hacia Internet
iifname "eth1" oifname "eth0" accept
# Permitir respuestas desde Internet a la LAN
ct state established,related accept
# Bloquear cualquier otra cosa
reject
}
chain output {
type filter hook output priority 0;
accept
}
}
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
# NAT (enmascaramiento)
oifname "eth0" masquerade
}
}
Activar:
sudo nft -f /etc/nftables.conf
Habilitar reenvío de paquetes:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-forward.conf
sudo sysctl -p /etc/sysctl.d/99-forward.conf
8. ¿Quieres usar UFW como Router?
También se puede:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default allow routed
Y activar NAT en /etc/ufw/before.rules, pero nftables es mucho más limpio.
9. Resumen final para no olvidar nada
✔️ Conceptos clave
- Tablas: filter, nat
- Cadenas: input, output, forward
- Reglas: accept, drop, reject
- Estados: established, related ✔️ Herramientas
- nftables → moderno y profesional
- ufw → sencillo y rápido ✔️ Niveles
- PC Escritorio → ufw o nftables básico
- Servidor → nftables
- Router / Red → nftables + NAT + forward