Cómo configurar el cortafuegos UFW en Ubuntu y Debian


Un firewall que funcione correctamente es la parte más crucial de la seguridad completa del sistema Linux. De forma predeterminada, la distribución de Debian y Ubuntu viene con una herramienta de configuración de firewall llamada UFW (firewall sin complicaciones), es una herramienta de línea de comandos más popular y fácil de usar para configurar y administrar un firewall en distribuciones de Ubuntu y Debian.

En este artículo, explicaremos cómo instalar y configurar un firewall UFW en distribuciones de Ubuntu y Debian.

Antes de comenzar con este artículo, asegúrese de haber iniciado sesión en su servidor Ubuntu o Debian con el usuario sudo o con la cuenta raíz. Si no tiene un usuario sudo, puede crear uno usando las siguientes instrucciones como usuario root.

# adduser username
# usermod -aG sudo username 
# su - username
$ sudo whoami

Instale UFW Firewall en Ubuntu y Debian

El UFW (firewall sin complicaciones) debe instalarse de forma predeterminada en Ubuntu y Debian, si no, instálelo usando el administrador de paquetes APT usando el siguiente comando.

$ sudo apt install ufw

Una vez que se completa la instalación, puede verificar el estado de UFW escribiendo.

$ sudo ufw status verbose

En la primera instalación, el cortafuegos UFW está desactivado de forma predeterminada, la salida será similar a la siguiente.

Status: inactive

Puede activar o habilitar el cortafuegos UFW usando el siguiente comando, que debería cargar el cortafuegos y permitir que se inicie en el arranque.

$ sudo ufw enable

Para deshabilitar el firewall UFW, use el siguiente comando, que descarga el firewall y lo deshabilita para que no se inicie en el arranque.

$ sudo ufw disable 

De forma predeterminada, el firewall de UFW niega todas las conexiones entrantes y solo permite todas las conexiones salientes al servidor. Esto significa que nadie puede acceder a su servidor, a menos que usted abra específicamente el puerto, mientras que todos los servicios o aplicaciones en ejecución en su servidor pueden acceder a la red externa.

Las políticas de firewall predeterminadas de UFW se colocan en el archivo /etc/default/ufw y se pueden modificar con el siguiente comando.

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

Al instalar un paquete de software con el administrador de paquetes APT, incluirá un perfil de aplicación en el directorio /etc/ufw/applications.d que define el servicio y contiene la configuración de UFW.

Puede enumerar todos los perfiles de aplicaciones disponibles en su servidor usando el siguiente comando.

$ sudo ufw app list

Dependiendo de las instalaciones del paquete de software en su sistema, el resultado será similar al siguiente:

Available applications:
  APACHE
  APACHE Full
  APACHE SECURE
  CUPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

Si desea obtener más información sobre un perfil en particular y reglas definidas, puede usar el siguiente comando.

$ sudo ufw app info 'Apache'
Profile: Apache
Title: Web Server 
Description: Apache V2 is the next generation f the omnipresent Apache web server.

Ports:
  80/tcp

Si su servidor está configurado con IPv6, asegúrese de que su UFW esté configurado con soporte para IPv6 e IPv4. Para verificarlo, abra el archivo de configuración de UFW usando su editor favorito.

$ sudo vi /etc/default/ufw

Luego, asegúrese de que “IPV6” esté configurado en "yes" en el archivo de configuración como se muestra.

IPV6=yes

Guardar y Salir. Luego reinicie su firewall con los siguientes comandos:

$ sudo ufw disable
$ sudo ufw enable

Si ya habilitó el firewall UFW, bloqueará todas las conexiones entrantes y si está conectado a su servidor a través de SSH desde una ubicación remota, ya no podrá volver a conectarlo.

Habilitemos las conexiones SSH a nuestro servidor para evitar que eso suceda usando el siguiente comando:

$ sudo ufw allow ssh

Si está utilizando un puerto SSH personalizado (por ejemplo, el puerto 2222), debe abrir ese puerto en el firewall UFW con el siguiente comando.

$ sudo ufw allow 2222/tcp

Para bloquear todas las conexiones SSH, escriba el siguiente comando.

$ sudo ufw deny ssh/tcp
$ sudo ufw deny 2222/tcp  [If using custom SSH port]

También puede abrir un puerto específico en el firewall para permitir conexiones a través de él a un determinado servicio. Por ejemplo, si desea configurar un servidor web que escuche en el puerto 80 (HTTP) y 443 (HTTPS) de forma predeterminada.

A continuación se muestran algunos ejemplos de cómo permitir conexiones entrantes a los servicios de Apache.

$ sudo ufw allow http     [By service name]
$ sudo ufw allow 80/tcp   [By port number]
$ sudo ufw allow 'Apache' [By application profile]
$ sudo ufw allow https
$ sudo ufw allow 443/tcp
$ sudo ufw allow 'Apache Secure'

Suponiendo que tiene algunas aplicaciones que desea ejecutar en un rango de puertos (5000-5003), puede agregar todos estos puertos usando los siguientes comandos.

sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp

Si desea permitir conexiones en todos los puertos desde la dirección IP específica 192.168.56.1, debe especificar antes de la dirección IP.

$ sudo ufw allow from 192.168.56.1

Para permitir la conexión en un puerto específico (por ejemplo, el puerto 22) desde su máquina doméstica con la dirección IP 192.168.56.1, entonces necesita agregar cualquier puerto y el número de puerto después de la dirección IP como se muestra.

$ sudo ufw allow from 192.168.56.1 to any port 22

Para permitir conexiones para direcciones IP particulares que van desde 192.168.1.1 hasta 192.168.1.254 hasta el puerto 22 (SSH), ejecute el siguiente comando.

$ sudo ufw allow from 192.168.1.0/24 to any port 22

Para permitir conexiones a la interfaz de red específica eth2 para un puerto 22 en particular (SSH), ejecute el siguiente comando.

$ sudo ufw allow in on eth2 to any port 22

De forma predeterminada, todas las conexiones entrantes están bloqueadas, a menos que haya abierto específicamente la conexión en UFW. Por ejemplo, ha abierto los puertos 80 y 443 y su servidor web está siendo atacado por la red desconocida 11.12.13.0/24.

Para bloquear todas las conexiones de este rango de red particular 11.12.13.0/24, puede usar el siguiente comando.

$ sudo ufw deny from 11.12.13.0/24

Si solo desea bloquear las conexiones en los puertos 80 y 443, puede usar los siguientes comandos.

$ sudo ufw deny from 11.12.13.0/24 to any port 80
$ sudo ufw deny from 11.12.13.0/24 to any port 443

Hay 2 formas de eliminar las reglas de UFW, por número de regla y por regla real.

Para eliminar una regla de UFW usando el número de regla, primero necesita enumerar las reglas por números usando el siguiente comando.

$ sudo ufw status numbered
Status: active

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

Para eliminar la regla número 1, use el siguiente comando.

$ sudo ufw delete 1

El segundo método es eliminar una regla utilizando la regla real, por ejemplo, para eliminar una regla, especifique el número de puerto con el protocolo como se muestra.

$ sudo ufw delete allow 22/tcp

Puede ejecutar cualquier comando ufw sin hacer ningún cambio en el firewall del sistema usando el indicador --dry-run , esto simplemente muestra los cambios que se supone que suceden.

$ sudo ufw --dry-run enable

Por una razón u otra, si desea eliminar/restablecer todas las reglas del firewall, escriba los siguientes comandos, revertirá todos sus cambios y comenzará de nuevo.

$ sudo ufw reset
$ sudo ufw status

El cortafuegos UFW puede hacer cualquier cosa que haga iptables. Esto se puede hacer con diferentes conjuntos de archivos de reglas, que no son más que simples archivos de texto de restauración de iptables.

El ajuste del firewall UFW o la adición de comandos iptables adicionales no están permitidos a través del comando ufw, es solo una cuestión de alterar los siguientes archivos de texto

  • /etc/default/ufw: el archivo de configuración principal con reglas predefinidas.
  • /etc/ufw/before[6].rules: En este archivo, las reglas se calculan antes de agregarlas mediante el comando ufw.
  • /etc/ufw/after[6].rules: En este archivo, las reglas se calculan después de agregarlas mediante el comando ufw.
  • /etc/ufw/sysctl.conf: este archivo se usa para ajustar la red del kernel.
  • /etc/ufw/ufw.conf: este archivo habilita ufw en el arranque.

¡Eso es! UFW es una excelente interfaz para iptables con una interfaz fácil de usar para definir reglas complejas con un solo comando ufw.

Si tiene alguna pregunta o idea que compartir sobre este artículo de ufw, utilice el formulario de comentarios a continuación para comunicarse con nosotros.