Volver al blog

Configuración de un cortafuegos con UFW en Ubuntu 18.04

Configuración de un cortafuegos con UFW en Ubuntu 18.04

Un cortafuegos es uno de los componentes principales para proteger un sistema. Es responsable de gestionar las conexiones entrantes y salientes a través de la red. Es la primera línea de defensa para sus servidores y datos. Por eso es fundamental contar con un cortafuegos bien configurado. En esta guía, le guiaremos a través de los pasos para configurar un cortafuegos con UFW en Ubuntu 18.04.

UFW en Ubuntu

El término UFW significa “Uncomplicated Firewall” (Cortafuegos sin complicaciones). Es un programa de cortafuegos predeterminado que viene preinstalado con Ubuntu. UFW es en realidad una interfaz para iptables. El objetivo de UFW es facilitar la configuración y gestión de un cortafuegos. Aunque iptables, por sí mismo, es una opción sólida y flexible, no es amigable para los principiantes. UFW lo hace más fácil tanto para principiantes como para usuarios experimentados.

Primero, eche un vistazo a nuestra guía completa que le ayudará a familiarizarse con las funciones básicas de UFW. También puede seguir esta guía para instalar su servidor Ubuntu. ¡Ahora, empecemos!

Para empezar, si por alguna razón su UFW no está instalado, instálelo de inmediato:

Configurando UFW

  • Uso de IPv6

A día de hoy, IPv4 sigue siendo la fuerza dominante. Teniendo esto en cuenta, la mayor parte de esta guía también presenta IPv4. Afortunadamente, UFW también viene con soporte para IPv6. Todo lo que necesita hacer es habilitar la función desde el archivo de configuración de UFW.

Primero, abra el archivo de configuración de UFW en un editor de texto. Para guardar los cambios, el editor de texto debe ejecutarse con privilegios de sudo:

Busque “IPV6” y asegúrese de que esté configurado en “yes”.

  • Política predeterminada

Si es la primera vez que realiza modificaciones en un cortafuegos, se recomienda definir primero las políticas predeterminadas. Estas reglas determinan cómo se controla el tráfico que no coincide con ninguna regla explícita. Por defecto, UFW está configurado para denegar todas las conexiones entrantes pero permitir todas las conexiones salientes. Define que nadie puede acceder al servidor mientras que una aplicación que se ejecuta en el servidor sí puede acceder al exterior.

Los siguientes comandos simplemente redefinirán el comportamiento predeterminado de UFW. Tenga en cuenta que cambiará el comportamiento de UFW si se modificó anteriormente:

Para un ordenador personal, estas reglas de cortafuegos por sí solas serían suficientes. Sin embargo, los servidores requieren más para reforzar adecuadamente su seguridad.

Permitir conexiones SSH

Tal como está configurado UFW ahora, denegará todas las conexiones entrantes. Para un servidor remoto, eso es inviable. Sin acceso al servidor, no se puede hacer nada. Para evitar este problema, UFW se puede configurar para permitir conexiones entrantes de SSH o HTTP.

Para permitir conexiones SSH al servidor, ejecute el siguiente comando. Básicamente, le dirá a UFW que permita todas las conexiones en el puerto 22. Es el puerto en el que el demonio SSH escucha por defecto:

En lugar de este comando, es posible configurar directamente permitir conexiones al puerto 22. Este puerto está definido en el archivo /etc/services:

Debido a que el puerto 22 es el predeterminado para el demonio SSH, también puede ser susceptible a ataques. ¿Qué pasa si el servidor SSH está configurado para escuchar en un puerto diferente? En tal situación, UFW debe permitir la conexión a ese puerto. Suponiendo que el servidor SSH esté escuchando en el puerto 1234, entonces use el siguiente comando:

Habilitar UFW

Aunque las reglas de UFW están establecidas, no harán nada a menos que UFW esté activado. Por defecto, UFW está deshabilitado, lo que significa que a pesar de declarar las reglas, no las aplicará. Para habilitar UFW, ejecute el siguiente comando:

UFW puede mostrar un mensaje de advertencia sobre la interrupción de las conexiones SSH existentes. Debido a que las conexiones SSH se configuraron para ser permitidas, habilitar UFW no causará ninguna interrupción. Para ver qué reglas están establecidas, ejecute el siguiente comando:

Permitir varias conexiones

En este punto, UFW debería estar equipado con otras reglas para tener una experiencia estable. Las conexiones que se van a permitir dependen de sus necesidades específicas. Ya se ha demostrado cómo indicarle a UFW que permita conexiones basadas en el nombre de un servicio o número de puerto.

Aquí hay algunos otros puertos que es muy común tener abiertos:

  • SSH (puerto 22): Este es el puerto predeterminado configurado para conexiones SSH.
  • HTTP (puerto 80): Este es el puerto predeterminado que utilizan los servidores web no cifrados.
  • HTTPS (puerto 443): Este es el puerto predeterminado que utilizan los servidores web cifrados.

Para habilitar las conexiones SSH, ejecute cualquiera de los siguientes comandos:

A continuación, para habilitar las conexiones HTTP, ejecute cualquiera de los siguientes comandos:

Para habilitar las conexiones HTTPS, ejecute cualquiera de los siguientes comandos:

Rango de puertos

Hasta ahora, hemos demostrado cómo permitir un puerto determinado. ¿Qué pasa si se necesita un rango de puertos? Declarar cada puerto en UFW es bastante ineficiente. Algunas aplicaciones utilizan múltiples puertos. Afortunadamente, UFW permite declarar un rango de puertos. Para hacerlo, utilice la siguiente estructura de comando:

El siguiente ejemplo habilita las conexiones X11 que utilizan los puertos 6000 a 6007:

Se recomienda declarar los protocolos siempre que sea posible. Sin embargo, en la mayoría de los casos, no es necesario y todo funcionará perfectamente.

Direcciones IP específicas

Al usar UFW, también es posible filtrar conexiones por direcciones IP específicas. Por defecto, UFW bloqueará las conexiones de cualquier dirección IP. Es posible declarar que se permita la conexión desde ciertas direcciones IP. Para permitir la conexión desde una dirección IP, utilice la siguiente estructura de comando:

También puede declarar los puertos específicos a los que se le permite conectarse a la dirección IP. Para hacerlo, agregue to any port seguido del número de puerto al comando:

Subredes

Si tiene la necesidad de permitir una subred de direcciones IP, es posible hacerlo utilizando la notación CIDR. En este ejemplo, UFW permitirá la conexión desde direcciones IP que van desde 203.0.113.1 a 203.0.113.254:

De manera similar al paso anterior, también es posible especificar el puerto al que se pueden conectar estas direcciones IP:

Conectarse a una interfaz de red específica

En un entorno de servidor, puede haber múltiples interfaces de red conectadas al sistema. Usando UFW, es posible describir que una determinada regla solo se aplica a una interfaz de red específica. Primero, verifique todas las interfaces de red conectadas al servidor. El nombre de la interfaz de red de destino es el enfoque principal:

 firewall with UFW on Ubuntu 18.04. 4

En nuestro caso, solo hay una interfaz de red ens3 que se conecta a la internet pública. Para permitir conexiones entrantes desde esta interfaz de red, utilice la siguiente estructura de comando:

También es posible definir el puerto al que puede llegar el tráfico proveniente de la interfaz de red:

Denegar conexión

Según la configuración predeterminada, UFW denegará la conexión desde cualquier origen (excepto las excepciones declaradas). Esta es la forma recomendada de usar UFW. Sin embargo, puede ser necesario bloquear conexiones específicas de una determinada dirección IP de origen o subred. Tal vez el comportamiento predeterminado de UFW esté configurado para permitir todas las conexiones (no recomendado).

Para denegar una conexión desde ciertas direcciones IP, UFW requiere reglas de denegación. Escribir reglas de denegación es bastante simple. ¡Tome cualquier regla de permiso, cambie el término “allow” por “deny” y listo! Se convierte en una regla de denegación.

Eche un vistazo al siguiente ejemplo. Para denegar cualquier conexión HTTP, use la siguiente regla de denegación:

Para denegar la conexión desde 203.0.113.1, use la siguiente regla de denegación:

Eliminar reglas

Todo lo que hemos aprendido hasta ahora es cómo crear reglas. Al igual que se crean las reglas, también se pueden eliminar. En el caso de UFW, existen dos formas específicas de eliminar una regla.

  • Eliminar una regla por número de regla

Esta es la forma más sencilla de eliminar una regla de UFW. Cada regla en UFW tiene un número de regla. El siguiente comando imprimirá todas las reglas de UFW junto con el número de regla:

 firewall with UFW on Ubuntu 18.04. 3

El siguiente comando eliminará la regla especificada por el número de regla:

  • Eliminar regla por la regla real

Este es el método más difícil para eliminar una regla. Requiere especificar manualmente la regla real para eliminarla. En el siguiente ejemplo, UFW eliminará la regla especificada por allow http:

La regla también podría haber sido especificada por allow 80. En ese caso, el siguiente comando la eliminará:

Al eliminar una regla, se eliminará tanto para IPv4 como para IPv6.

Comprobación del estado y las reglas de UFW

Es esencial asegurarse de si UFW está activo o no. Para determinar el estado de UFW, ejecute el siguiente comando:

 firewall with UFW on Ubuntu 18.04. 2

Si el estado es “inactive, ” entonces actívelo siguiendo el paso Habilitación de UFW anterior. Si está activo, UFW informará el estado “active” y enumerará todas las reglas activas.

Deshabilitación de UFW

Si, por alguna razón, no va a utilizar UFW, deshabilítelo con el siguiente comando:

Si UFW está deshabilitado, todas las reglas creadas ya no estarán activas. Sin embargo, las reglas no se eliminan. Cuando se vuelva a activar UFW, todas las reglas volverán a estar activas. ¿Qué pasa si la configuración actual de UFW es un caos? En lugar de eliminar las reglas una por una, es posible eliminarlas todas con un solo comando. Para restablecer UFW, ejecute el siguiente comando:

 firewall with UFW on Ubuntu 18.04. 1

Tenga en cuenta que esto no cambiará el comportamiento predeterminado de UFW que se configuró al principio.

Conclusión

Una configuración adecuada del cortafuegos es necesaria para garantizar la seguridad y la funcionalidad. Debe configurarse para permitir solo las conexiones entrantes necesarias y, al mismo tiempo, limitar las conexiones innecesarias.

Si desea familiarizarse con más soluciones de cortafuegos, eche un vistazo a nuestro blog para obtener más recursos:

¡Feliz computación!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.