Cómo usar UFW (Uncomplicated Firewall)

Este tutorial explica como usar UFW (Uncomplicated Firewall) fácilmente.
El Firewall sin complicaciones o Uncomplicated Firewall (UFW, por sus siglas en inglés) es una interfaz para iptables. Iptables es el software que usamos comúnmente para administrar netfilter, que es una función de filtrado incluida en el Kernel de Linux.
UFW simplifica la difícil tarea de lidiar con iptables.

Nota: En este tutorial la interfaz de red enp2s0 y la dirección IP 192.168.0.2/7 fueron usadas como ejemplos. Debe reemplazarlas por las correctas.

Instalando y configurando UFW:

Para instalar UFW en Debian ejecute:

apt update
apt upgrade
apt install ufw
como usar ufw

Para habilitar UFW ejecute:

ufw enable
como usar uncomplicated firewall

Pero si queremos deshabilitar UFW ejecutaríamos:

ufw disable
tutorial ufw

Si desea realizar una comprobación rápida sobre el estado de su firewall, escriba:

ufw status
configurar fireall ufw

Donde:

Status: Informa si el firewall está activo.
To: Muestra el puerto o servicio.
Action: Muestra las políticas
From: Muestra las posibles fuentes de tráfico.

También podemos verificar el estado del firewall en detalle con verbose:

ufw status verbose

Este segundo comando para ver el estado del firewall también mostrará las políticas predeterminadas y la dirección del tráfico.

Además de las pantallas informativas con “ufw status” o “ufw status verbose” podemos imprimir todas las reglas numeradas, si es de ayuda, para administrarlas como veremos más adelante. Para obtener una lista numerada de sus reglas de firewall, ejecute:

ufw status numbered

En cualquier etapa podemos restablecer la configuración de UFW a la configuración predeterminada ejecutando:

ufw reset

Cuando reseteamos las reglas UFW nos pide confirmación. Para confirmar presionamos “Y”

Breve introducción a las políticas de firewalls:

Con cada servidor de seguridad podemos determinar una política predeterminada, las redes confidenciales pueden aplicar una política restrictiva que significa denegar o bloquear todo el tráfico, excepto el permitido específicamente. A diferencia de una política restrictiva, un firewall permisivo aceptará todo el tráfico, excepto el bloqueado específicamente.
Por ejemplo, si tenemos un servidor web y no queremos que ese servidor sirva más que un simple sitio web, podemos aplicar una política restrictiva que bloquee todos los puertos excepto los puertos 80 (http) y 443 (https), eso sería una política restrictiva porque, de forma predeterminada, todos los puertos están bloqueados a menos que desbloquee uno específico. Un ejemplo de servidor permisivo sería un servidor desprotegido en el que solo bloqueamos el puerto de inicio de sesión, por ejemplo, un servidor Plesk en el que solo bloqueamos los puertos 443 y 22. Además, podemos usar ufw para forwarding.

Cómo usar UFW (Uncomplicated Firewall) con políticas restrictivas y permisivas:

Para restringir todo el tráfico entrante por defecto usando ufw, escriba:

ufw default deny incoming

Para hacer lo contrario permitiendo que todo el tráfico entrante, ejecute:

ufw default allow incoming

Si se quiere bloquear todo el tráfico saliente de nuestra red, la sintaxis es similar, para hacerlo ejecutamos:

ufw default deny outgoing

Para permitir todo el tráfico saliente, reemplazamos “deny” por “allow“, para permitir el tráfico saliente incondicionalmente, escriba:

ufw default allow outgoing

Con UFW además podemos permitir o denegar el tráfico para interfaces de red específicas, manteniendo diferentes reglas para cada interfaz. Por ejemplo, para bloquear todo el tráfico entrante de mi tarjeta Ethernet:

ufw deny in on enp2s0

Donde:

ufw= Invoca al programa

deny= Define la política

in= Trafico entrante

enp2s0= Mi interfaz ethernet

Ahora, aplicaré una política restrictiva predeterminada para el tráfico entrante y luego permitiré solo los puertos 80 y 22:

ufw default deny incoming
ufw allow 22
ufw allow http

Donde:

El primer comando bloquea todo el tráfico entrante, mientras que el segundo permite las conexiones entrantes al puerto 22 y el tercer comando permite las conexiones entrantes al puerto 80. Tenga en cuenta que ufw nos permite llamar al servicio por su puerto o nombre de servicio predeterminado. Podemos aceptar o denegar conexiones a los puertos 22 o ssh, puerto 80 o http.

El comando ufw status verbose muestra el siguiente resultado:

Todo el tráfico entrante es denegado mientras los dos servicios (22 y 80) permitimos que estén disponibles.

Si se desea remover una regla específica, tenemos que hacer esto con el parámetro “delete”. Para eliminar nuestra última regla permitiendo el tráfico entrante al puerto http, ejecutamos:

ufw delete allow http

Comprobamos si el servicio http continúa disponible o fue bloqueado escribiendo:

ufw status verbose:

El puerto 80 ya no aparece como una excepción, siendo el puerto 22 la única.

Es posible eliminar una regla invocando la ID numérica proporcionada por el comando “ufw status numbered” mencionado anteriormente, en este caso, eliminaré la política DENY sobre el tráfico entrante a la tarjeta ethernet enp2s0:

ufw delete 1

Este proceso pedirá una confirmación para continuar. Presione “Y”

Además de DENY podemos usar el parámetro REJECT que informará al otro lado que se rechazó la conexión, para rechazar las conexiones a ssh podemos ejecutar:

ufw reject 22

Luego, si alguien intenta acceder a nuestro puerto 22, se le notificará que se rechazó la conexión como se muestra en la siguiente imagen.

En cualquier etapa, podemos verificar las reglas agregadas sobre la configuración predeterminada ejecutando:

ufw show added

Podemos rechazar todas las conexiones mientras permitimos direcciones IP específicas. En el siguiente ejemplo, rechazaré todas las conexiones al puerto 22, excepto la IP 192.168.0.2, que será la única que podrá conectarse:

ufw deny 22
ufw allow from 192.168.0.2

Ahora, si verificamos el estado de ufw, verá que todo el tráfico entrante al puerto 22 está denegado (regla 1) mientras esté permitido para la IP especificada (regla 2)

ufw status numbered

Podemos limitar los intentos de inicio de sesión para evitar ataques de fuerza bruta estableciendo un límite de ejecución:

ufw limit ssh

Comparación de iptables vs UFW:

Para finalizar este tutorial y aprender a apreciar la generosidad de ufw, recordemos la forma en que podemos negar todo el tráfico, excepto una única IP usando iptables:

iptables -A INPUT -s 192.168.0.2 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.2 -j ACCEPT
iptables -P INPUT DROP</em></strong><br></p>
iptables -P OUTPUT DROP

Lo mismo se puede hacer con solo 3 líneas más cortas y simples usando ufw:

ufw default deny incoming
ufw default deny outgoing
ufw allow from 192.168.0.2

Espero que hayas encontrado útil este tutorial sobre Cómo usar UFW (Uncomplicated Firewall). De haber sido así recomiendo seguir la lectura con 30 ejemplos de uso de Nmap.

Traducido al español del texto original Working with Debian Firewalls (UFW)