Gestión del cortafuegos en Ubuntu con UFW

En el artículo de hoy vamos a hablar de UFW en Ubuntu 18.04. Se trata de una herramienta para configurar y trabajar con el cortafuegos de este popular sistema operativo GNU/Linux Tiene como fin facilitar el trabajo con las reglas iptables típicas de los sistemas UNIX y like-UNIX

Un poco más de información sobre UFW

El nombre de esta herramienta es un acrónimo de las siglas en inglés “Uncomplicated Firewall” , que como bien indica su nombre está pensado para ser fácil de usar o por lo menos esa es su intención. Como hemos dichos en el párrafo anterior utiliza las tablas iptables. Esta escrito Python.

Si nos interesa trabajar con la herramienta vía interfaz gráfica, podemos utilizar Gufw.

Trabajar con UFW en Ubuntu

Esta herramienta viene instalada por defecto en Ubuntu, pero deshabilitada, para comprobar si efectivamente la tenemos en ese estado, escribiremos:

  1. davidochobits@hpenvyi7:~$ sudo ufw status
  2. Estado: inactivo

Para activarlo solo debemos escribir lo siguiente:

  1. davidochobits@hpenvyi7:~$ sudo ufw enable
  2. El cortafuegos está activo y habilitado en el arranque del sistema
  3. davidochobits@hpenvyi7:~$ sudo ufw status
  4. Estado: activo

Cuando habilitamos ufw se utilizan un conjunto de reglas definidas en un perfil predeterminado, pensado para un usuario doméstico estándar. Estas reglas indican que se deniege todo el tráfico entrante exceptuando algunos servicios.

Confirmemos que esto es así, utilizando el modo “verbose” que nos dará más detalles:

  1. davidochobits@hpenvyi7:~$ sudo ufw status verbose
  2. Estado: activo
  3. Acceso: on (low)
  4. Predeterminado: deny (entrantes), allow (salientes), disabled (enrutados)
  5. Perfiles nuevos: skip

Como hemos dicho se bloquea toda conexión entrante, excepto algunas. Para ver cuales son estas excepciones.

Utilizamos la herramienta más estos parámetros:

  1. davidochobits@hpenvyi7:~$ sudo ufw show raw | less

También podemos consultar los ficheros ubicados en el directorio : “/etc/ufw”

Aceptar y denegar en UFW

Para aceptar conexiones entrantes, el formato sería:

  1. sudo ufw allow /

Veamos algunos ejemplos:

  1. davidochobits@hpenvyi7:/etc/ufw$ sudo ufw allow 161
  2. Regla añadida
  3. Regla añadida (v6)

De esta manera hemos abierto el puerto 161, tanto para tcp como para udp. Si queremos especificar el protocolo, sería como sigue:

  1. davidochobits@hpenvyi7:/etc/ufw$ sudo ufw allow 161/udp
  2. Regla añadida
  3. Regla añadida (v6)

Recordar que este puerto es utilizado por el servicio SNMP, por ejemplo, para la herramienta gráfica Cacti, de la que ya hemos hablado.

En cambio para denegar conexiones entrantes, pero esta vez utilizando el parámetro “deny”, de esta manera:

  1. davidochobits@hpenvyi7:/etc/ufw$ sudo ufw deny 161/udp
  2. Regla actualizada
  3. Regla actualizada (v6)

Para eliminar una regla establecida, utilizaremos el parámetro “delete”, más los parámetros que habíamos utilizado para dar de alta una regla, siguiendo con los ejemplos anteriores, sería así:

  1. davidochobits@hpenvyi7:/etc/ufw$ sudo ufw delete deny 161/udp
  2. Regla eliminada
  3. Regla eliminada (v6)

Trabajar con servicios utilizando UFW

Una opción muy interesante es trabajar directamente con el nombre de un servicio que queramos aceptar o denegar en el cortafuegos. Para ello ufw trabaja con los servicios indicados en «/etc/services»

  1. davidochobits@hpenvyi7:~$ less /etc/services

Imaginemos que habilitar el servicio SNMP, que hemos hablado antes.

Primero de todo el comando y parámetros se deben de utilizar como sigue:

  1. sudo ufw allow

En el caso del servicio mencionado:

  1. davidochobits@hpenvyi7:~$ sudo ufw allow snmp
  2. Regla añadida
  3. Regla añadida (v6)

Si en cambio queremos denegar el acceso:

  1. sudo ufw deny snmp

Saber el estado de UFW

Si queremos saber el estado del cortafuegos gestionado con ufw, escribiremos:

  1. davidochobits@hpenvyi7:~$ sudo ufw status
  2. Estado: activo
  3.  
  4. Hasta                      Acción      Desde
  5. -----                      ------      -----
  6. 161                        ALLOW       Anywhere                  
  7. 161 (v6)                   ALLOW       Anywhere (v6)

Opciones avanzadas con ufw

Hasta ahora hemos hablado de las opciones más utilizadas, a partir de aquí hablaremos de las opciones más avanzadas.

Si queremos habilitar el acceso a nuestro host desde una IP remota en concreto:

  1. sudo ufw allow from 
  2. #Por ejemplo
  3. sudo ufw allow from 192.168.0.75

También podemos, aunque desde mi punto de vista no recomendable, habilitar el acceso a nuestro host desde toda una subnet:

  1. sudo ufw allow from 192.168.0.0/24

O bien queremos habilitar el acceso a un puerto específico de nuestro host a toda una subnet.

La sintaxis sería:

  1. sudo ufw allow from  to  port

En el ejemplo habilitamos el puerto 22 para toda nuestra red:

  1. sudo ufw allow from 192.168.0.0/24 to any port 22

Para denegar el acceso solo tenemos que sustituir «allow» por «deny»

Conclusiones y opinión personal

Y esto es todo por hoy. ¿Hábeis trabajado alguna vez con esta herramienta? ¿Qué os parece?

Yo personalmente me parece más fácil de trabajar incluso más lógico, el sistema para systemd, que utilizo generalmente en sistemas Red Hat o Centos, llamado «firewalld» Pero para gustos colores, faltaría más.

Aunque está claro que este tipo de herramientas facilita y mucho la gestión de un cortafuegos, en vez de añadir las reglas de iptables «a pelo»

Nos vamos leyendo

Fuentes consultadas:

UFW – Community Help

Wikipedia – Uncomplicated Firewall