Cómo configurar el firewall UFW en Ubuntu y Debian

A correctly functioning firewall is the most crucial part of the complete Linux system security. By default, Debian and Ubuntu distribution comes with a firewall configuration tool called UFW (Uncomplicated Firewall), is a most popular and easy-to-use command line tool for configuring and managing a firewall on Ubuntu and Debian distributions.

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

Prerrequisitos

Antes de comenzar con este artículo, asegúrate de haber iniciado sesión en tu servidor Ubuntu o Debian con un usuario sudo o con la cuenta de root. Si no tienes un usuario sudo, puedes crear uno siguiendo las siguientes instrucciones como usuario root.

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

Instalar el Firewall UFW en Ubuntu y Debian

El firewall UFW (Uncomplicated Firewall) debería estar instalado por defecto en Ubuntu y Debian, si no lo está, instálalo utilizando el gestor de paquetes APT con el siguiente comando.

$ sudo apt install ufw

Verificar el Firewall UFW

Una vez completada la instalación, puedes verificar el estado de UFW escribiendo el siguiente comando.

$ sudo ufw status verbose

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

Status: inactive

Activar el Firewall UFW

Puedes activar o habilitar el firewall UFW utilizando el siguiente comando, que carga el firewall y lo habilita para iniciar en el arranque.

$ sudo ufw enable

Para desactivar el firewall UFW, utiliza el siguiente comando, que descarga el firewall y lo deshabilita para iniciar en el arranque.

$ sudo ufw disable 

Políticas Predeterminadas de UFW

Por defecto, el firewall UFW deniega 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 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 predeterminadas de UFW se encuentran en el archivo /etc/default/ufw y se pueden modificar utilizando el siguiente comando.

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

Perfiles de aplicación de UFW

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

Puede ver todos los perfiles de aplicaciones disponibles en su servidor utilizando el siguiente comando.

$ sudo ufw app list

Según los paquetes de software instalados 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 las reglas definidas, puede utilizar 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

Habilitar IPv6 con UFW

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

$ sudo vi /etc/default/ufw

Asegúrese de que “IPV6” esté establecido en "sí" en el archivo de configuración, como se muestra.

IPV6=yes

Guarde y salga. Luego, reinicie su firewall con los siguientes comandos:

$ sudo ufw disable
$ sudo ufw enable

Permitir conexiones SSH en UFW

Si has activado el firewall UFW hasta ahora, bloquearía todas las conexiones entrantes y si estás conectado a tu servidor a través de SSH desde una ubicación remota, ya no podrás volver a conectarte.

Vamos a habilitar las conexiones SSH a nuestro servidor para evitar que esto ocurra utilizando el siguiente comando:

$ sudo ufw allow ssh

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

$ sudo ufw allow 2222/tcp

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

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

Habilitar Puertos Específicos en UFW

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

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

Abrir Puerto 80 HTTP en UFW
$ sudo ufw allow http     [By service name]
$ sudo ufw allow 80/tcp   [By port number]
$ sudo ufw allow 'Apache' [By application profile]
Abrir Puerto 443 HTTPS en UFW
$ sudo ufw allow https
$ sudo ufw allow 443/tcp
$ sudo ufw allow 'Apache Secure'

Permitir Rangos de Puertos en UFW

Suponiendo que tienes algunas aplicaciones que deseas ejecutar en un rango de puertos (5000-5003), puedes agregar todos estos puertos utilizando los siguientes comandos.

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

Permitir Direcciones IP Específicas

Si deseas permitir conexiones en todos los puertos desde una dirección IP específica 192.168.56.1, entonces necesitas especificar “from” antes de la dirección IP.

$ sudo ufw allow from 192.168.56.1

Permitir Direcciones IP Específicas en un Puerto Específico

Para permitir la conexión en un puerto específico (por ejemplo, puerto 22) desde la máquina de su hogar con la dirección IP de 192.168.56.1, entonces necesitará 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

Permitir Subredes de Red a Puerto Específico

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

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

Permitir Interfaz de Red Específica

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

$ sudo ufw allow in on eth2 to any port 22

Negar Conexiones en UFW

Por defecto, 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á bajo ataque de la red desconocida 11.12.13.0/24.

Para bloquear todas las conexiones de esta particular 11.12.13.0/24 gama de redes, puede usar la siguiente orden.

$ sudo ufw deny from 11.12.13.0/24

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

$ 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

Eliminar Reglas de UFW

Hay 2 maneras de eliminar reglas de UFW, por número de regla y por regla actual.

Para eliminar una regla de UFW usando número de regla, primero necesitará listar las reglas por números usando la siguiente orden.

$ sudo ufw status numbered
Salida de muestra
Status: active

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

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

$ sudo ufw delete 1

El segundo método para eliminar una regla es utilizando la regla actual, por ejemplo, para eliminar una regla, especifica el número de puerto con el protocolo indicado.

$ sudo ufw delete allow 22/tcp

Ejecución en seco de reglas UFW

Puedes ejecutar cualquier comando de ufw sin realizar realmente cambios en el firewall del sistema utilizando la bandera --dry-run, esto simplemente muestra los cambios que deberían haber ocurrido.

$ sudo ufw --dry-run enable

Restablecer el firewall UFW

Por alguna razón, si deseas eliminar/restablecer todas las reglas del firewall, escribe los siguientes comandos, revertirá todos tus cambios y empezará de nuevo.

$ sudo ufw reset
$ sudo ufw status

Funcionalidades avanzadas de UFW

El firewall UFW puede hacer todo lo que hace iptables. Esto se puede hacer con diferentes conjuntos de archivos de reglas, que no son más que simples archivos de texto de iptables-restore.

No está permitido ajustar el firewall UFW o agregar comandos iptables adicionales a través del comando ufw, es solo cuestión de modificar 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 se calculan las reglas antes de ser añadidas a través del comando ufw.
  • /etc/ufw/after[6].rules: En este archivo se calculan las reglas después de ser añadidas a través del comando ufw.
  • /etc/ufw/sysctl.conf: Este archivo se utiliza para ajustar la red del kernel.
  • /etc/ufw/ufw.conf: Este archivo habilita el ufw al iniciar.

¡Eso es! UFW es un excelente frente para iptables con una interfaz amigable para el usuario para definir reglas complejas con un solo comando de ufw.

Si tienes alguna pregunta o pensamiento para compartir sobre este artículo de ufw, utiliza el formulario de comentarios a continuación para contactarnos.

Source:
https://www.tecmint.com/setup-ufw-firewall-on-ubuntu-and-debian/