Introducción

UFW, o firewall sin complicaciones, es una interfaz para iptables que está orientado a simplificar el proceso de configuración de un firewall. Mientras iptables es una herramienta sólida y flexible, puede ser difícil para los principiantes aprender a usarla para configurar correctamente un firewall. Si está buscando comenzar a proteger su red y no está seguro de qué herramienta usar, UFW puede ser la opción correcta para usted.

Este tutorial le mostrará cómo configurar un firewall con UFW en Debian 9.

Prerrequisitos

Para seguir este tutorial, necesitará un servidor Debian 9 con un usuario sudo no root, que puede configurar siguiendo los Pasos 1–3 en el tutorial Configuración inicial del servidor con Debian 9.

Paso 1 – Instalación de UFW

Debian no instala UFW por defecto. Si siguió todo el tutorial de configuración inicial del servidor, ya habrá instalado y habilitado UFW. Si no, instálelo ahora usando apt:

Configuraremos UFW y lo habilitaremos en los siguientes pasos.

Paso 2: uso de IPv6 con UFW (opcional)

Este tutorial está escrito con IPv4 en mente, pero funcionará para IPv6 siempre que lo habilite. Si su servidor Debian tiene habilitado IPv6, asegúrese de que UFW esté configurado para admitir IPv6 para que pueda administrar las reglas de firewall para IPv6 además de IPv4. Para hacer esto, abra la configuración UFW con nano o tu editor favorito.

  • sudo nano /etc/default/ufw

Luego asegúrese de que el valor de IPV6 es yes. Debe tener un aspecto como este:

Extracto / etc / default / ufw

IPV6=yes

Guarde y cierre el archivo. Ahora, cuando UFW está habilitado, se configurará para escribir reglas de firewall IPv4 e IPv6. Sin embargo, antes de habilitar UFW, querremos asegurarnos de que su firewall esté configurado para permitirle conectarse a través de SSH. Comencemos por establecer las políticas predeterminadas.

Paso 3: configuración de políticas predeterminadas

Si recién está comenzando con su firewall, las primeras reglas para definir son sus políticas predeterminadas. Estas reglas controlan cómo manejar el tráfico que no coincide explícitamente con ninguna otra regla. De manera predeterminada, UFW está configurado para denegar todas las conexiones entrantes y permitir todas las conexiones salientes. Esto significa que cualquier persona que intente llegar a su servidor no podrá conectarse, mientras que cualquier aplicación dentro del servidor podrá llegar al mundo exterior.

Regresemos sus reglas UFW a los valores predeterminados para que podamos estar seguros de que podrá seguir este tutorial. Para establecer los valores predeterminados utilizados por UFW, use estos comandos:

  • sudo ufw default deny incoming
  • sudo ufw default allow outgoing

Estos comandos establecen los valores predeterminados para denegar conexiones entrantes y permitir conexiones salientes. Estos valores predeterminados del firewall solo pueden ser suficientes para una computadora personal, pero los servidores generalmente necesitan responder a las solicitudes entrantes de usuarios externos. Lo veremos a continuación.

Paso 4: permitir conexiones SSH

Si habilitamos nuestro firewall UFW ahora, negaría todas las conexiones entrantes. Esto significa que necesitaremos crear reglas que permitan explícitamente conexiones entrantes legítimas, por ejemplo, conexiones SSH o HTTP, si queremos que nuestro servidor responda a ese tipo de solicitudes. Si está utilizando un servidor en la nube, es probable que desee permitir conexiones SSH entrantes para poder conectarse y administrar su servidor.

Para configurar su servidor para permitir conexiones SSH entrantes, puede usar este comando:

Esto creará reglas de firewall que permitirán todas las conexiones en el puerto 22, que es el puerto en el que escucha el demonio SSH de forma predeterminada. UFW sabe qué puerto allow ssh significa porque está listado como un servicio en el /etc/services archivo.

Sin embargo, en realidad podemos escribir la regla equivalente especificando el puerto en lugar del nombre del servicio. Por ejemplo, este comando funciona igual que el anterior:

Si configuró su demonio SSH para usar un puerto diferente, tendrá que especificar el puerto apropiado. Por ejemplo, si su servidor SSH está escuchando en el puerto 2222, puede usar este comando para permitir conexiones en ese puerto:

Ahora que su firewall está configurado para permitir conexiones SSH entrantes, podemos habilitarlo.

Paso 5 – Habilitar UFW

Para habilitar UFW, use este comando:

Recibirá una advertencia que dice que el comando puede interrumpir las conexiones SSH existentes. Ya configuramos una regla de firewall que permite conexiones SSH, por lo que debería estar bien continuar. Responda a la solicitud con y y golpear ENTER.

El firewall ahora está activo. Ejecutar el sudo ufw status verbose comando para ver las reglas que se establecen. El resto de este tutorial cubre cómo usar UFW con más detalle, como permitir o denegar diferentes tipos de conexiones.

Paso 6 – Permitir otras conexiones

En este punto, debe permitir todas las demás conexiones a las que su servidor necesita responder. Las conexiones que debe permitir dependen de sus necesidades específicas. Afortunadamente, ya sabes cómo escribir reglas que permiten conexiones basadas en un nombre de servicio o puerto; ya hicimos esto para SSH en el puerto 22. También puedes hacer esto para:

  • HTTP en el puerto 80, que es lo que usan los servidores web sin cifrar, usando sudo ufw allow http o sudo ufw allow 80
  • HTTPS en el puerto 443, que es lo que usan los servidores web encriptados, usando sudo ufw allow https o sudo ufw allow 443

Hay varias otras formas de permitir otras conexiones, además de especificar un puerto o servicio conocido.

Rangos de puertos específicos

Puede especificar rangos de puertos con UFW. Algunas aplicaciones usan múltiples puertos, en lugar de un solo puerto.

Por ejemplo, para permitir conexiones X11, que usan puertos 60006007, use estos comandos:

  • sudo ufw allow 6000:6007/tcp
  • sudo ufw allow 6000:6007/udp

Al especificar rangos de puertos con UFW, debe especificar el protocolo (tcp o udp) a las que deben aplicarse las normas. No hemos mencionado esto antes porque no especificar el protocolo automáticamente permite ambos protocolos, lo cual está bien en la mayoría de los casos.

Direcciones IP específicas

Cuando trabaje con UFW, también puede especificar direcciones IP. Por ejemplo, si desea permitir conexiones desde una dirección IP específica, como una dirección IP de trabajo o hogar de 203.0.113.4, necesitas especificar from, luego la dirección IP:

  • sudo ufw allow from 203.0.113.4

También puede especificar un puerto específico al que la dirección IP puede conectarse agregando to any port seguido por el número de puerto. Por ejemplo, si quieres permitir 203.0.113.4 para conectar al puerto 22 (SSH), use este comando:

  • sudo ufw allow from 203.0.113.4 to any port 22

Subredes

Si desea permitir una subred de direcciones IP, puede hacerlo utilizando la notación CIDR para especificar una máscara de red. Por ejemplo, si desea permitir todas las direcciones IP que van desde 203.0.113.1 a 203.0.113.254 podrías usar este comando:

  • sudo ufw allow from 203.0.113.0/24

Del mismo modo, también puede especificar el puerto de destino que la subred 203.0.113.0/24 está permitido conectarse a. Nuevamente, usaremos puerto 22 (SSH) como ejemplo:

  • sudo ufw allow from 203.0.113.0/24 to any port 22

Conexiones a una interfaz de red específica

Si desea crear una regla de firewall que solo se aplique a una interfaz de red específica, puede hacerlo especificando «permitir en» seguido del nombre de la interfaz de red.

Es posible que desee buscar sus interfaces de red antes de continuar. Para hacerlo, use este comando:

Output Excerpt

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <broadcast,multicast> mtu 1500 qdisc noop state DOWN group default
. . .
</broadcast,multicast></broadcast,multicast,up,lower_up>

La salida resaltada indica los nombres de la interfaz de red. Suelen llamarse algo así como eth0 o enp3s2.

Entonces, si su servidor tiene una interfaz de red pública llamada eth0, podría permitir el tráfico HTTP (puerto 80) con este comando:

  • sudo ufw allow in on eth0 to any port 80

Hacerlo permitiría que su servidor reciba solicitudes HTTP de Internet público.

O, si desea su servidor de base de datos MySQL (puerto 3306) para escuchar las conexiones en la interfaz de red privada eth1, por ejemplo, podría usar este comando:

  • sudo ufw allow in on eth1 to any port 3306

Esto permitiría que otros servidores en su red privada se conecten a su base de datos MySQL.

Paso 7 – Negar conexiones

Si no ha cambiado la política predeterminada para las conexiones entrantes, UFW está configurado para denegar todas las conexiones entrantes. En general, esto simplifica el proceso de creación de una política de firewall segura al exigirle que cree reglas que permitan explícitamente puertos específicos y direcciones IP.

Sin embargo, a veces querrá negar conexiones específicas basadas en la dirección IP o subred de origen, tal vez porque sabe que su servidor está siendo atacado desde allí. Además, si desea cambiar su política entrante predeterminada a permitir (que no se recomienda), necesitaría crear negar reglas para cualquier servicio o dirección IP para los que no desea permitir conexiones.

Escribir negar reglas, puede usar los comandos descritos anteriormente, reemplazando permitir con negar.

Por ejemplo, para denegar conexiones HTTP, puede usar este comando:

O si quieres negar todas las conexiones de 203.0.113.4 podrías usar este comando:

  • sudo ufw deny from 203.0.113.4

Ahora echemos un vistazo a cómo eliminar reglas.

Paso 8 – Eliminar reglas

Saber cómo eliminar las reglas del firewall es tan importante como saber cómo crearlas. Hay dos formas diferentes de especificar qué reglas eliminar: por número de regla o por la regla real (similar a cómo se especificaron las reglas cuando se crearon). Comenzaremos con el eliminar por número de regla método porque es más fácil.

Por número de regla

Si usa el número de regla para eliminar las reglas del firewall, lo primero que debe hacer es obtener una lista de las reglas del firewall. El comando de estado UFW tiene una opción para mostrar números al lado de cada regla, como se demuestra aquí:

Numbered Output:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

Si decidimos que queremos eliminar la regla 2, la que permite las conexiones del puerto 80 (HTTP), podemos especificarla en un comando de eliminación UFW como este:

Esto mostraría un mensaje de confirmación y luego eliminaría la regla 2, que permite conexiones HTTP. Tenga en cuenta que si tiene habilitado IPv6, también querrá eliminar la regla IPv6 correspondiente.

Por regla real

La alternativa a los números de regla es especificar la regla real a eliminar. Por ejemplo, si desea eliminar el permitir http regla, podrías escribirlo así:

  • sudo ufw delete allow http

También puede especificar la regla por allow 80, en lugar de por nombre de servicio:

Este método eliminará las reglas IPv4 e IPv6, si existen.

Paso 9 – Verificación del estado y las reglas de UFW

En cualquier momento, puede verificar el estado de UFW con este comando:

Si UFW está desactivado, que es el predeterminado, verá algo como esto:

Output

Status: inactive

Si UFW está activo, lo que debería ser si siguió el Paso 3, la salida indicará que está activo y enumerará todas las reglas establecidas. Por ejemplo, si el firewall está configurado para permitir SSH (puerto 22) conexiones desde cualquier lugar, la salida podría verse así:

Output

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

Utilizar el status comando si desea verificar cómo UFW ha configurado el firewall.

Paso 10: deshabilitar o restablecer UFW (opcional)

Si decide que no desea usar UFW, puede deshabilitarlo con este comando:

Cualquier regla que haya creado con UFW ya no estará activa. Siempre puedes correr sudo ufw enable si necesita activarlo más tarde.

Si ya tiene configuradas las reglas de UFW pero decide que desea comenzar de nuevo, puede usar el comando de reinicio:

Esto deshabilitará UFW y eliminará cualquier regla que se haya definido previamente. Tenga en cuenta que las políticas predeterminadas no cambiarán a su configuración original, si las modificó en algún momento. Esto debería darle un nuevo comienzo con UFW.

Conclusión

Su firewall ahora está configurado para permitir (al menos) conexiones SSH. Asegúrese de permitir cualquier otra conexión entrante que su servidor, al tiempo que limita las conexiones innecesarias, para que su servidor sea funcional y seguro.

Por itencore