Firewall básico con UFW y firewalld

Introducción

Linux gestiona el tráfico de red a nivel de kernel mediante netfilter. Por encima de él existen herramientas de alto nivel que facilitan la definición de reglas: UFW (Uncomplicated Firewall) es el estándar en Ubuntu y Debian, mientras que firewalld es el estándar en RedHat, Fedora y Rocky Linux. Ambas simplifican la gestión de iptables o nftables en segundo plano.

UFW — Uncomplicated Firewall (Ubuntu/Debian)

Activar y desactivar UFW:


# ufw enable                    # activar el firewall
# ufw disable                   # desactivar el firewall
# ufw status                    # ver estado y reglas activas
# ufw status verbose            # estado detallado
# ufw status numbered           # reglas numeradas (útil para borrar)
          

Política por defecto:


# ufw default deny incoming     # bloquear todo el tráfico entrante por defecto
# ufw default allow outgoing    # permitir todo el tráfico saliente por defecto
          

Permitir servicios y puertos:


# ufw allow ssh                 # permitir SSH (puerto 22)
# ufw allow 80/tcp              # permitir HTTP
# ufw allow 443/tcp             # permitir HTTPS
# ufw allow 8080                # permitir un puerto concreto (TCP y UDP)
# ufw allow from 192.168.1.0/24 # permitir toda una subred
# ufw allow from 192.168.1.5 to any port 22   # SSH solo desde una IP
          

Denegar tráfico:


# ufw deny 23                   # bloquear Telnet
# ufw deny from 10.0.0.5        # bloquear una IP concreta
          

Eliminar reglas:


# ufw delete allow 80/tcp       # eliminar regla por descripción
# ufw delete 3                  # eliminar regla número 3 (ver con status numbered)
          

Restablecer todas las reglas:


# ufw reset                     # eliminar todas las reglas y desactivar UFW
          

Perfil de aplicación:

UFW incluye perfiles predefinidos para aplicaciones comunes:


$ ufw app list                  # listar perfiles disponibles
# ufw allow "Nginx Full"        # permitir HTTP y HTTPS de Nginx
# ufw allow "OpenSSH"           # permitir SSH
          

firewalld — RedHat / Fedora / Rocky Linux

firewalld organiza las reglas en zonas. Cada interfaz se asigna a una zona, y cada zona tiene su propia política de tráfico. La zona por defecto en RHEL es public.

Activar y estado:


# systemctl enable --now firewalld
$ firewall-cmd --state                  # ver si está activo
$ firewall-cmd --get-active-zones       # zonas activas y sus interfaces
$ firewall-cmd --list-all               # reglas de la zona por defecto
$ firewall-cmd --list-all --zone=public # reglas de la zona public
          

Permitir servicios y puertos:


# firewall-cmd --add-service=ssh --permanent
# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent
# firewall-cmd --add-port=8080/tcp --permanent
# firewall-cmd --reload               # aplicar cambios permanentes
          

Sin --permanent la regla es temporal y desaparece al reiniciar. Con --permanent se guarda pero no se aplica hasta hacer --reload.

Eliminar reglas:


# firewall-cmd --remove-service=http --permanent
# firewall-cmd --remove-port=8080/tcp --permanent
# firewall-cmd --reload
          

Ver servicios disponibles:


$ firewall-cmd --get-services           # lista de servicios predefinidos
          

UFW vs firewalld


Herramienta   Distribución          Backend       Modelo
UFW           Ubuntu / Debian       iptables/nft  Reglas simples, sin zonas
firewalld     RHEL / Fedora / Rocky nftables      Zonas, servicios predefinidos, rico en opciones
          

En ambos casos, la regla de oro es: permitir SSH antes de activar el firewall para no perder el acceso remoto al servidor.

UFW y firewalld son capas de abstracción sobre netfilter. Para casos avanzados (NAT, filtrado por estado, reglas complejas) se usa directamente iptables o nftables.

Enrutamiento básico y VLAN / bonding

Índice de la sección

Índice del curso