Tutoriales

Comando ufw en Linux: gestión de reglas de firewall a través de ejemplos

ufw (Simple Firewall) se encuentra encima de iptables (o nftables en sistemas más nuevos) y reemplaza reglas complejas de filtrado de paquetes con comandos legibles. Es una herramienta de firewall estándar en Ubuntu y Debian. El núcleo aún aplica las reglas reales, ufw es la interfaz que las genera para usted.

Casi todas las llamadas a ufw requieren sudo porque cambia las reglas del firewall.

Cómo utilizar la directiva ufw en Linux»

Verifique el estado actual antes de realizar cualquier cambio:

bash
sudo ufw status # inactive or active + rule list
sudo ufw status numbered # same list with rule numbers for easy deletion
sudo ufw status verbose # adds default policies and logging level

Habilite ufw de forma segura a través de SSH. Cuando enciendas el firewall por primera vez, primero habilita SSH; habilitarlo a través de una conexión SSH sin una regla SSH te bloqueará inmediatamente:

bash
sudo ufw allow ssh # FIRST: allow SSH
sudo ufw enable # THEN: start enforcing + register for boot startup

Cuando esté habilitado, ufw ejecutará las reglas inmediatamente y se iniciará automáticamente en cada reinicio. La desactivación detiene la ejecución pero conserva sus reglas. Cuando lo vuelves a habilitar, vuelven las mismas reglas. Restablecer es diferente: elimina todas las reglas, incluidas las reglas SSH.

Establezca una política predeterminada para el tráfico que no coincida con ninguna regla. El endurecimiento estándar es:

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing

Después de ejecutar estos dos comandos, el valor predeterminado es bloquear todo el tráfico entrante. Sólo necesita abrir explícitamente los puertos que el servidor necesita hacer públicos. Si el host actúa como enrutador o ejecuta contenedores, debe agregar:

bash
sudo ufw default deny routed
Allow Connections by Port, Service, and Address
Allow by service name — ufw reads /etc/services. Each command opens the matching port for both TCP and UDP where applicable:
bash
sudo ufw allow ssh # port 22
sudo ufw allow http # port 80
sudo ufw allow https # port 443

Permitir números de puerto sin sufijo de protocolo, tanto TCP como UDP habilitados:

bash
sudo ufw allow 8080 # TCP + UDP
sudo ufw allow 8080/tcp # TCP only
sudo ufw allow 53/udp # UDP only

Los rangos de puertos requieren un acuerdo explícito. Dos puntos separan los puntos inicial y final, y ambos puntos finales están incluidos:

bash
sudo ufw allow 6000:6007/tcp

Permitir desde direcciones o subredes específicas:

bash
sudo ufw allow from 203.0.113.25 # any port
sudo ufw allow from 203.0.113.25 to any port 22 # specific port only
sudo ufw allow from 192.168.1.0/24 to any port 3306 # subnet to DB port

El modo de subred cierra el puerto de la base de datos a Internet y solo se puede acceder a él desde la red interna.

Permitido en interfaces específicas:

bash
sudo ufw allow in on eth1 to any port 3306 # inbound on eth1 only

Denegar, rechazar y limitar tarifas de conexión
Deny toma los mismos parámetros que enable y descarta silenciosamente los paquetes coincidentes sin responder. Las reglas de denegación explícita son más útiles para bloquear direcciones específicas cuando la política entrante predeterminada es Denegada, mientras se mantiene el puerto abierto para todos los demás:

bash
sudo ufw deny from 198.51.100.77

rechazar devuelve un mensaje ICMP «Conexión rechazada» al remitente:

bash
sudo ufw reject 23

Denegar versus Rechazar: Denegar = Eliminación silenciosa; Denegar = Respuesta ICMP. Deny es un poco más amigable para los clientes que se portan bien, pero hace que el servidor sea más visible para los escáneres de puertos.

Limitación de velocidad SSH para ataques de fuerza bruta:

bash
sudo ufw limit ssh

Esto bloquea las IP de origen que realizan seis o más intentos de conexión en 30 segundos, lo cual es una defensa rápida que no requiere la instalación de una herramienta de prevención de intrusiones completa.

Eliminar reglas, perfiles de aplicaciones y ejecuciones piloto
Eliminar reglas por texto de regla o por número:

bash
sudo ufw delete allow 8080/tcp # by repeating the rule with delete
sudo ufw status numbered # find the rule number first
sudo ufw delete 3 # then delete by number

Después de la eliminación, se cambiarán los números de todas las reglas restantes. Asegúrese de realizar la numeración de estados nuevamente antes de eliminar la siguiente regla.

Los perfiles de aplicación permiten a los servicios registrar sus propias definiciones de puertos:

bash
sudo ufw app list # list available profiles
sudo ufw allow 'Nginx Full' # open all ports the profile covers
sudo ufw app info 'Nginx Full' # see which ports the profile includes

Cite un nombre de perfil que contenga espacios.

Vista previa de los cambios sin aplicarlos:

bash
sudo ufw --dry-run allow 8080/tcp

–dry-run muestra las líneas exactas de iptables que ufw escribirá sin establecer ninguna regla. Útil al escribir reglas sobre SSH y primero desea verificar el efecto.

Registro, restablecimientos e IPv6
Habilite y ajuste el registro:

intento

sudo ufw iniciar sesión
sudo ufw logging media# Nivel: apagado, bajo, medio, alto, completo
En Ubuntu, las entradas aparecen en /var/log/ufw.log, al que también se puede acceder a través de Journalctl.

Al restablecer se borran todas las reglas y se desactiva el firewall:

bash
sudo ufw reset
⚠️ Warning: reset removes every rule including SSH. On a remote server, re-add sudo ufw allow ssh and re-enable the firewall immediately after resetting, or you will lose access when you reconnect.

IPv6: marque /etc/default/ufw para IPV6=yes. Una vez configuradas, las reglas generales como sudo ufw permitido 22/tcp se aplican tanto a IPv4 como a IPv6. Las reglas con direcciones explícitas conservan reglas específicas de su familia de direcciones. Las reglas de IPv6 aparecen como (v6) en la salida de estado.

Note: if you run Docker, it writes its own iptables rules that can bypass ufw. Firewall rules alone may not be enough to block Docker-published ports.

Comience con el valor predeterminado de negar las entradas y permitir las salidas, abra solo los puertos que necesite, use números de estado para una administración limpia de las reglas y use siempre una verificación de prueba antes de aplicar reglas a través de SSH. Si tiene algún problema, deje un comentario a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba