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:
davidochobits@hpenvyi7:~$ sudo ufw status
Estado: inactivo
Para activarlo solo debemos escribir lo siguiente:
davidochobits@hpenvyi7:~$ sudo ufw enable
El cortafuegos está activo y habilitado en el arranque del sistema
davidochobits@hpenvyi7:~$ sudo ufw status
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:
davidochobits@hpenvyi7:~$ sudo ufw status verbose
Estado: activo
Acceso: on (low)
Predeterminado: deny (entrantes), allow (salientes), disabled (enrutados)
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:
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:
sudo ufw allow /
Veamos algunos ejemplos:
davidochobits@hpenvyi7:/etc/ufw$ sudo ufw allow 161
Regla añadida
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:
davidochobits@hpenvyi7:/etc/ufw$ sudo ufw allow 161/udp
Regla añadida
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:
davidochobits@hpenvyi7:/etc/ufw$ sudo ufw deny 161/udp
Regla actualizada
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í:
davidochobits@hpenvyi7:/etc/ufw$ sudo ufw delete deny 161/udp
Regla eliminada
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»
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:
sudo ufw allow
En el caso del servicio mencionado:
davidochobits@hpenvyi7:~$ sudo ufw allow snmp
Regla añadida
Regla añadida (v6)
Si en cambio queremos denegar el acceso:
sudo ufw deny snmp
Saber el estado de UFW
Si queremos saber el estado del cortafuegos gestionado con ufw, escribiremos:
davidochobits@hpenvyi7:~$ sudo ufw status
Estado: activo
Hasta Acción Desde
----- ------ -----
161 ALLOW Anywhere
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:
sudo ufw allow from
#Por ejemplo
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:
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:
sudo ufw allow from to port
En el ejemplo habilitamos el puerto 22 para toda nuestra red:
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: