GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar un cortafuegos con UFW en Linux

Esta guía explica qué es UFW, cómo instalar UFW en Linux y cómo configurar el firewall con UFW en varios sistemas operativos Linux.

Introducción

La seguridad es un asunto serio. Ya sea que esté ejecutando su sistema operativo Linux en centros de datos o en su escritorio, debe proteger su sistema operativo contra todas las amenazas posibles.

De hecho, los servidores que se ejecutan en el entorno corporativo estarán bien protegidos. La mayoría de las empresas corporativas invierten millones de dólares para proteger su infraestructura.

Habrá un equipo de red separado, un equipo de firewall, un equipo de seguridad para proteger su entorno y servidores Linux. Este no será el caso cuando ejecute Linux en sus escritorios o servidores.

Debe saber cómo proteger sus máquinas Linux con las herramientas adecuadas. Una de esas herramientas es UFW .

¿Qué es UFW?

UFW , significa U ncomplicado F irw all, es un programa de cortafuegos que viene preinstalado de forma predeterminada con las distribuciones basadas en Ubuntu.

¿Por qué UFW en lugar de iptables? Usted podría preguntarse.

Si aún no lo sabe, Netfilter es un sistema de filtrado de paquetes que se envía con un kernel de Linux y las iptables se utilizan para manipular los filtros de red con un conjunto de comandos.

Sentirse cómodo con iptables puede llevar tiempo y puede ser una tarea abrumadora. Para facilitar la administración del firewall, se crean muchos front-end para iptables. UFW es uno de ellos.

UFW es una interfaz de línea de comandos para administrar iptables. Proporciona un marco para administrar y manipular el firewall de netfilter.

UFW está disponible de forma predeterminada en todas las instalaciones de Ubuntu posteriores a la versión 8.04 LTS.

También hay una interfaz gráfica para UFW llamada Gufw . Discutiremos sobre esto en una guía separada. En este artículo, nuestro enfoque será usar ufw desde la línea de comandos.

Sin más preámbulos, avancemos y veamos cómo instalar y configurar el firewall UFW en Linux.

1. Instalar UFW en Linux

UFW viene preinstalado con la mayoría de las distribuciones basadas en Debian y Arch. Para verificar si UFW está instalado o no, ejecute el siguiente comando:

$ which ufw
/usr/sbin/ufw
$ ufw version
ufw 0.36
Copyright 2008-2015 Canonical Ltd.

Si no está instalado en su distribución, puede instalarlo utilizando el administrador de paquetes predeterminado de su distribución.

Para instalar UFW en Alpine Linux, ejecute:

$ sudo apk add ufw

Instale UFW en Arch Linux y sus variantes como EndeavourOS y Manjaro Linux:

$ sudo pacman -S ufw

Instale ufw en Debian, Ubuntu y sus derivados:

$ sudo apt update
$ sudo apt install ufw

Instalar UFW en Fedora:

$ sudo dnf install ufw

UFW está disponible en [EPEL] repositorio para sistemas operativos Enterprise Linux como RHEL, CentOS, AlmaLinux y Rocky Linux.

Habilitar [EPEL] e instale UFW en RHEL, CentOS, AlmaLinux, Rocky Linux como se muestra a continuación:

$ sudo dnf install epel-release
$ sudo dnf install ufw

Instalar UFW en openSUSE:

$ sudo zypper install ufw

1.1. Habilite, inicie y detenga el servicio UFW

En los sistemas basados ​​en Debian, el demonio UFW se iniciará y habilitará automáticamente.

Ejecute el siguiente comando para verificar el estado del servicio UFW:

$ systemctl status ufw

Salida de muestra:

● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor prese>
     Active: active (exited) since Mon 2021-07-05 20:08:01 IST; 44s ago
       Docs: man:ufw(8)
             man:ufw-framework(8)
             file://usr/share/doc/ufw/README
    Process: 21690 ExecStart=/usr/libexec/ufw/ufw-init start (code=exited, stat>
   Main PID: 21690 (code=exited, status=0/SUCCESS)
        CPU: 169ms

Jul 05 20:08:01 ostechnix systemd[1]: Starting Uncomplicated firewall...
Jul 05 20:08:01 ostechnix systemd[1]: Finished Uncomplicated firewall.

La otra forma de verificar si el servicio UFW está habilitado y activo:

$ systemctl is-enabled ufw
enabled
$ systemctl is-active ufw
active

Si el servicio UFW no se inicia automáticamente después de la instalación, ejecute el siguiente comando para iniciar el servicio UFW:

$ sudo systemctl start ufw

Ufw también debe habilitarse para que se inicie automáticamente entre reinicios del sistema.

$ sudo systemctl enable ufw

O bien, puede combinar ambos comandos en uno para habilitar e iniciar el servicio UFW de una sola vez, como se muestra a continuación:

$ sudo systemctl enable --now ufw

Para detener el servicio UFW, simplemente ejecute:

$ sudo systemctl stop ufw

3. Configure el cortafuegos con UFW en Linux

3.1. Obtener ayuda

Si es nuevo en UFW, lo primero que debe hacer después de instalarlo es consultar la sección de ayuda y la página de manual de UFW para obtener una idea básica sobre el uso de UFW.

$ ufw --help
$ man ufw

Si olvidó la sintaxis o necesita una referencia para una característica particular de ufw, estos dos comandos serán muy útiles.

3.2. Establecer reglas predeterminadas

Con UFW, puede crear reglas (o políticas) de firewall para permitir o denegar un servicio específico. A través de estas políticas, le indica a la UFW qué puerto, servicio, direcciones IP e interfaces deben permitirse o denegarse.

Hay políticas predeterminadas que vienen con ufw. La política predeterminada eliminará todas las conexiones entrantes y permitirá todas las conexiones salientes.

IMPORTANTE: Si está configurando ufw en un servidor remoto, asegúrese de haber permitido el puerto o servicio ssh antes de habilitar el firewall ufw.

La política entrante predeterminada denegará todas las conexiones entrantes. Entonces, si no configuró las reglas para permitir SSH, se le bloqueará el acceso al sistema remoto y no podrá iniciar sesión en el sistema. Este no es el caso cuando ejecuta ufw en su sistema local.

Las políticas predeterminadas se definen en el /etc/default/ufw expediente. Aquí está el contenido del archivo:

Desde aquí, podemos establecer políticas predeterminadas.

Alternativamente, podemos usar ufw allow comando para establecer políticas predeterminadas para los comandos entrantes y salientes:

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

3.2.1. Comprobar el estado de las reglas del cortafuegos UFW

Para verificar si las políticas predeterminadas están activas, ejecute el siguiente comando:

$ sudo ufw status

Salida de muestra:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             

Y para obtener información de estado más detallada, use este comando:

$ sudo ufw status verbose

Salida de muestra:

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

To                         Action      From
--                         ------      ----
22/tcp (SSH)               ALLOW IN    Anywhere                  
224.0.0.251 5353/udp (mDNS) ALLOW IN    Anywhere                  
22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)             
ff02::fb 5353/udp (mDNS)   ALLOW IN    Anywhere (v6)             

Para ver el formato numerado, ejecute:

$ sudo ufw status numbered

3.2.2. Agregar reglas

Déjame tomar SSH como ejemplo para demostrar cómo agregar reglas de firewall con ufw dominio. Echa un vistazo a los siguientes comandos:

$ sudo ufw allow ssh
$ sudo ufw allow 22
$ sudo ufw allow 22/tcp
$ sudo ufw allow 2222/tcp

Todos los comandos tienen el mismo propósito.

[ 1 ] - En el primer comando, permito todos los accesos a ssh Servicio. UFW sabe por defecto que ssh escucha el puerto 22 . Entonces, cuando usa permitir ssh servicio, también aplicará la regla para el puerto 22 .
[ 2 ] - En el segundo comando, digo explícitamente que permita conexiones entrantes para el puerto 22 .
[ 3 ] - El tercer comando es el mismo que el segundo comando. Permite todo el acceso a tcp puerto 22 . Se admiten los protocolos TCP y UDP.
[ 4 ] - En el cuarto comando, permito un puerto ssh personalizado (es decir, 2222 ) para aceptar las conexiones entrantes.

Puede usar estos cuatro comandos no solo para ssh sino también para cualquier servicio y puerto. Por ejemplo, si desea conectarse a PostgreSQL ejecutándose en el puerto 5433 , entonces la regla debe agregarse como se muestra a continuación.

$ sudo ufw allow 5433

Del mismo modo, podemos usar ufw deny comando para rechazar conexiones entrantes:

$ sudo ufw deny 5433

Este comando denegará el tráfico en el puerto 5433 .

3.2.3. Eliminar reglas de cortafuegos UFW

Para eliminar una regla o política, puede usar el comando ufw delete.

Por ejemplo, si ya no desea permitir el tráfico HTTP, simplemente ejecute:

sudo ufw delete allow 80

3.2.4. Habilitar, deshabilitar y recargar reglas de firewall UFW

Esto es diferente a habilitar e iniciar el demonio UFW. Iniciar la unidad ufw systemd no hará cumplir las reglas de su cortafuegos. UFW tiene comandos dedicados para habilitar, deshabilitar y recargar reglas de firewall.

Para que las reglas sean efectivas, debe ejecutar el siguiente comando:

$ sudo ufw enable
Firewall is active and enabled on system startup

Como ya mencioné, use el siguiente comando para ver el estado de las reglas del firewall UFW:

$ sudo ufw status

Salida de muestra:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             

Para deshabilitar las reglas del Firewall, ejecute:

$ sudo ufw disable
Firewall stopped and disabled on system startup

Tenga en cuenta: El comando anterior solo deshabilitará las reglas del firewall. El demonio UFW seguirá ejecutándose y habilitado en los reinicios.

Después de agregar cualquier política, vuelva a cargar el ufw para que la política entre en vigor usando el comando:

$ sudo ufw reload

3.2.5. Agregar política para rangos de puertos

Puede agregar una política para un rango de puertos en lugar de crear una política para un solo puerto:

$ sudo ufw allow 8000:8080/tcp
$ sudo ufw deny 8000:8080/tcp

3.2.6. Adición de políticas para direcciones IP, subredes y puertos específicos

Puede crear reglas más detalladas con ufw. Digamos que si desea que su servidor esté conectado (ssh'ed) solo desde una IP específica, puede hacerlo agregando la siguiente regla.

$ sudo ufw allow from 192.168.156.2
$ sudo ufw allow from 192.168.156.2 to any port 2222

El primer comando permite que la IP especificada se conecte en función de los puertos abiertos. El segundo comando especifica que el usuario puede conectarse al puerto 2222 solo desde 192.168.156.2 .

Para permitir que un grupo de IP de la misma subred se conecte a ssh , puede usar la subred mientras agrega una regla, lo que permite que todas las partes de IP de esa subred se conecten al puerto 2222 .

$ sudo ufw allow from 192.168.156.1/24 to any port 2222

3.2.7. Agregar política de interfaz de red

También puede crear políticas basadas en interfaces de red. El siguiente comando creará una política para aceptar conexiones para la interfaz de red en01 al puerto 2222 .

$ sudo ufw allow in on en01 to any port 2222

3.2.8. Pruebe las reglas sin aplicarlas usando la opción de ejecución en seco

UFW tiene --dry-run opción de probar las reglas sin aplicarlas realmente. Por ejemplo, lo siguiente es lo que se aplicaría si se abriera el puerto SSH:

$  sudo ufw --dry-run allow ssh

Como puede ver en el resultado anterior, el comando ufw solo genera las reglas resultantes, pero no las aplica cuando agregamos --dry-run opción. Esto es útil cuando desea probar cualquier política de firewall.

3.2.9. Agregar comentario a cada regla

Es posible que haya agregado varias reglas. Después de un número particular de reglas (digamos 50), no tiene forma de recordar de qué se trata la regla.

En ese caso, puede agregar un comentario a cada regla como se muestra a continuación:

$ sudo ufw allow 22 comment 'open port 22 for ssh'

El comando anterior permitirá todo el tráfico al puerto 22 y agregará un comentario para la regla. De esta manera, puede encontrar fácilmente el propósito de una regla específica.

4. ¿Qué regla tiene prioridad?

La prioridad es importante cuando crea varias reglas para el mismo servicio o puerto. La política obtiene su prioridad en el orden en que se crearon. Ejecute el siguiente comando que le dará la política junto con su prioridad.

$ sudo ufw status numbered

Salida de muestra:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere                  
[ 2] 2222                       ALLOW IN    Anywhere                  
[ 3] 2222                       ALLOW IN    192.168.156.2             
[ 4] 2222                       DENY IN     192.168.157.0/24          
[ 5] 22 (v6)                    ALLOW IN    Anywhere (v6)             
[ 6] 2222 (v6)                  ALLOW IN    Anywhere (v6)   

Eche un vistazo a [ 4 ] en el resultado anterior. Cualquier conexión al puerto 2222 de la subred 192.168.157.0/24 debe ser descartado.

Pero cuando intento conectarme desde cualquiera de las máquinas de la misma subred, se permitirá la conexión porque se le ha dado alta prioridad a [ 2 ].

Para anular este comportamiento, debe crear reglas con prioridad. Puede eliminar la regla existente y agregar una nueva regla con prioridad y volver a cargar el servicio.

$ sudo ufw delete 4
Deleting:
deny from 192.168.157.0/24 to any port 2222
Proceed with operation (y|n)? y
Rule deleted
$ sudo ufw insert 2 deny from 192.168.157.0/24 to any port 2222
Rule inserted
$ sudo ufw reload
Firewall reloaded
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 2222 DENY IN 192.168.157.0/24
[ 3] 2222 ALLOW IN Anywhere
[ 4] 2222 ALLOW IN 192.168.156.2
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] 2222 (v6) ALLOW IN Anywhere (v6)

Eche un vistazo a la salida anterior. La prioridad se reasigna a [ 2 ]. Ahora si trato de conectarme al puerto 2222
desde 192.168.157.0/24 , mi conexión será denegada.

5. Registro UFW

Los registros son la mejor apuesta cuando algo sale mal.

Para deshabilitar el registro de UFW, ejecute el siguiente comando:

$ sudo ufw logging off
Logging disabled

Para habilitar el registro de UFW, ejecute:

$ sudo ufw logging on
Logging enabled

Hay cuatro niveles de registro, a saber, bajo , medio , alto y lleno . Según el nivel que elija, los registros se generarán en /var/log/ufw.log expediente. De forma predeterminada, el nivel de registro será bajo.

Puede usar el siguiente comando para establecer el nivel adecuado que desee:

$ sudo ufw logging [ high | medium | Full | Low ]

Para verificar el estado del registro y el nivel de registro, ejecute ufw status comando y busque logging entrada.

$ sudo ufw status verbose
Status: active
Logging: on (high)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

6. Perfiles de aplicación

Cuando instala cualquier paquete usando su administrador de paquetes (por ejemplo, apt o pacman), se creará un perfil de aplicación que define reglas para ese paquete en ufw.

Por ejemplo, si está instalando un servidor OpenSSH usando apt , luego se creará el perfil para el puerto 22 . Todos los perfiles de aplicación se almacenan en /etc/ufw/applications.d directorio.

Para obtener la lista de perfiles de aplicaciones, ejecute el siguiente comando:

$ sudo ufw app list

Salida de muestra:

Available applications:
CUPS
OpenSSH

Esta es una máquina de prueba. He instalado solo OpenSSH. Así que solo ves dos perfiles.

Para obtener información detallada sobre ese perfil y qué política aplica, ejecute el siguiente comando:

$ sudo ufw app info 'OpenSSH'

Salida de muestra:

Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp

7. Restablecer el cortafuegos UFW a la política predeterminada

Si desea limpiar todas las reglas que creó y restablecerlas a sus valores predeterminados, puede hacerlo ejecutando ufw reset comando.

$ sudo ufw reset

Salida de muestra:

Resetting all rules to installed defaults. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210705_131655'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210705_131655'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210705_131655'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210705_131655'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210705_131655'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210705_131655'

Cuando ejecute este comando, se realizará una copia de seguridad de sus reglas actuales antes de restablecer el perfil predeterminado.

Ufw también tiene muchas interfaces gráficas. Uno de ellos es Gufw .

8. Gufw, una interfaz gráfica para UFW

Es posible que algunos de ustedes no se sientan cómodos con el modo de línea de comandos. Afortunadamente, hay una interfaz gráfica disponible para UFW.

Gufw es una aplicación front-end gráfica para administrar el cortafuegos sin complicaciones (UFW) en Linux. Gufw está desarrollado principalmente para instalar y configurar firewalls para escritorios Linux.

Consulte la siguiente guía para aprender a instalar y configurar Gufw en Linux:

  • Cómo configurar el cortafuegos con Gufw en el escritorio de Linux

Conclusión

En esta guía, hemos discutido qué es UFW, cómo instalar y configurar el firewall UFW en Linux con comandos de ejemplo.

Ahora es su turno de probar ufw en su máquina. Sugiero probar ufw en cualquier máquina virtual antes de implementarlo en su escritorio o servidor.


Linux
  1. Cómo configurar un cortafuegos con UFW en Ubuntu 20.04

  2. Cómo configurar un cortafuegos con UFW en Debian 10

  3. Cómo configurar un cortafuegos con UFW en Debian 9

  4. Cómo configurar el cortafuegos UFW en Ubuntu 18.04

  5. Cómo instalar Fail2ban con Firewalld en Rocky Linux 8

Cómo configurar el cortafuegos UFW en Debian 11

Cómo instalar el cortafuegos UFW en Ubuntu 16.04 LTS

Cómo configurar el cortafuegos con UFW en Ubuntu Linux

Cómo proteger un firewall de Linux con reglas de IPTables

Cómo configurar el cortafuegos UFW en Linux

Cómo configurar el cortafuegos UFW en Ubuntu 20.04