Como Habilitar y Configurar el Firewall UFW en Ubuntu

En el post de hoy te hablare de UFW, una de las alternativas mas simples a la hora de habilitar y gestionar el cortafuegos del Kernel de Linux en Ubuntu y en otras distribuciones derivadas. UFW viene de Uncomplicated Firewall, y es un pequeño script creado por los desarrolladores de Ubuntu con el fin de simplificar casi hasta el máximo extremo la gestión de Netfilter/Iptables, el cortafuegos del núcleo de Linux.

UFW apareció en Ubuntu 8.04 (como pasa el tiempo…), y de momento, ha ido estado disponible en todas las versiones posteriores a ésta. Si ya llevas algunos años con Linux, probablemente ya lo conocerás más que de sobra, pero si no, aquí tienes una guía sobre como usarlo.

Tabla de contenidos:

  1. La importancia de contar con un cortafuegos
  2. UFW facilita la gestión del cortafueos del kernel de Linux
  3. Como habilitar y configurar UFW
  4. Como abrir y cerrar puertos
  5. Como permitir o denegar conexiones por servicio
  6. Comprobar estado y política por defecto
  7. ¿Como se que el cortafuegos está bloqueando los puertos?
  8. Si prefieres la interfaz gráfica, echa un ojo a GUFW
  9. Consejos para más seguridad

La Importancia de Contar con un Cortafuegos

La importancia de contar con un firewall activo y bien configurado es vital, ya que supone una de las primeras líneas de defensa de cualquier sistema lógico que esté conectado a la red. Funciona como una barrera entre una red privada y el resto de Internet, o entre un dispositivo y el exterior.

En entornos corporativos, es algo absolutamente crucial. Cualquier empresa o red de ordenadores suele dispone de un firewall de hardware para evitar conexiones entrantes provenientes del exterior. Incluso la mayoría de routers domésticos disponen de una capa de bloqueo para aislar la red interna del resto de Internet.

Dicho esto, a nivel de dispositivo es igualmente importante disponer de un firewall de software integrado en el propio sistema operativo. Primero que no siempre vamos a estar conectados a una red segura (como la doméstica), y, en cualquier caso, siempre estarás más protegido con él. Siempre estás a tiempo de abrir un puerto determinado si tienes alguna necesidad especial.

Al igual que en Windows o macOS, el cortafuegos es uno de los pilares sobre el que se asienta la seguridad en Linux. Esto, obviamente, no te exime de tomar otras medidas, como mantener el sistema siempre parcheado, no instalar nunca software de orígenes desconocidos, contar con un mecanismo de control de acceso como AppArmor o SELinux, algo que por suerte ahora muchas distribuciones ya traen por defecto, y, sobretodo, aplicar el sentido común en todas tus acciones.

En definitiva, tener el cortafuegos activado y bien configurado no te va a proteger ni del malware ni de la creciente cantidad de amenazas en Internet, pero si que supone una de las primeras líneas de defensa. Digamos que es una condición necesaria pero no suficiente.

UFW Facilita la Gestión del Cortafuegos del Kernel de Linux

UFW viene de Uncomplicated Firewall, y es un pequeño script creado por los desarrolladores de Canonical para facilitar la configuración de Netfilter/Iptables (el cortafuegos del kernel de Linux) en Ubuntu.

UFW viene ya pre-instalado en Ubuntu y en todas sus ediciones y sabores (de hecho, incluso Debian o Linux Mint cuentan con él). Sin embargo, en Ubuntu viene deshabilitado por defecto (supongo que lo justifican por el hecho de que, por defecto, Ubuntu no viene con ningún puerto abierto al exterior). Es por eso que una de las primeras cosas que suelo hacer en cualquier nueva instalación de Ubuntu es habilitar UFW.

Antes de pasar a la acción y explicarte las diferentes opciones de configuración que tienes al alcance, conviene aclarar que el uso de UFW es puramente desde la línea de comandos, si bien como verás la sintaxis básica es muy simple e intuitiva. Luego verás que hay una herramienta, GUFW, que básicamente es una interfaz gráfica de UFW, pero de eso ya hablo más adelante.

NOTA: Si aun no estás muy habituado a trabajar con la línea de comandos y deseas aprender desde el principio, puedes consultar esta guía de varios artículos sobre como dar tus primeros pasos con la terminal de Linux.

Ahora si, sin más demora, te explico cuales son los principales comandos para habilitar o deshabilitar UFW, comprobar su estado, abrir o cerrar puertos, etc.

Como Habilitar y Configurar UFW

Lo primero que puedes hacer es comprobar si UFW esta activo o no. Aunque ya te adelanto que, a no ser que lo hayas modificado previamente, en Ubuntu estará deshabilitado (almenos hasta ahora siempre ha sido así). Para ello, tan solo abre la Terminal y teclea la siguiente línea:

sudo ufw status

Si no lo has habilitado antes, lo más probable es que el resultado sea que está inactivo, como muestro a continuación:

Estado: inactivo

Si te encuentras en ese estado, habilitar UFW por primera vez es tan sencillo como teclear en la terminal la primera línea que te muestro abajo:

sudo ufw enable

Como puedes ver, con esto ya tendrás activado y habilitado el cortafuegos en el arranque del sistema. En cualquier momento puedes volver a comprobar el estado para verificar que realmente sea así:

sudo ufw status

Al hacer esto, ahora si que te aparecerá un mensaje indicando como que está activo:Fantástico.

Estado: activo

Con esto ya tenemos lo que queríamos, que es disponer del cortafuegos activo y habilitado en el arranque. Sin embargo, veamos como establecer la política por defecto.

En general, la mejor política de un firewall es la de denegar todas las conexiones entrantes por defecto, y a partir de ahí, y en caso de que sea estrictamente necesario, establecer las excepciones que te convengan dependiendo de cada caso.

En teoría, por defecto UFW ya debería venir con la política por defecto de denegar todas las conexiones entrantes. Sin embargo, si quieres asegurarte de que así sea, tan solo teclea:

sudo ufw default deny

Y a continuación, puedes reiniciar el cortafuegos deshabilitando y habilitando de nuevo UFW:

sudo ufw disable

Lo habilitamos de nuevo, y listo:

sudo ufw enable

Ahora ya tienes activado Netfilter/Iptables en el kernel de Linux, y configurado (según las reglas internas de UFW) para denegar todo el tráfico entrante por defecto, lo que significa que desde el exterior, tu sistema operativo mantendrá todos los puertos invisibles e inaccesibles.

Como Abrir y Cerrar Puertos

Si tu PC ofrece algún servicio en el exterior, o utilizas algún servicio de compartición de archivos con dispositivos de la misma red, seguramente necesitaras mantener ciertos puertos accesibles por tal de posibilitar el servicio requerido.

En este caso, y una vez conozcas que puerto o puertos necesitas tener visibles desde el exterior, para habilitar un puerto es tan sencillo como seguir la siguiente secuencia:

sudo ufw allow <número de puerto>

Donde deberás sustituir <número de puerto> por el puerto que deseas abrir. El comando puedes repetirlo para todos los puertos que necesites mantener abiertos. Es importante, en ese sentido, abrir solo aquellos puertos que sean estrictamente necesarios.

A modo de ejemplo, podríamos pensar en el caso de que estés configurando un pequeño servidor cloud, y quieres poder conectarte a él desde los dispositivos de tu hogar. Si te encuentra en esa situación, probablemente necesitarás permitir las conexiones entrantes a través del puerto 22:

sudo ufw allow 22

Si en un momento dado quieres cerrar un puerto que ya no requiere estar abierto, puedes hacerlo de un modo similar con la siguiente sentencia:

sudo ufw deny <número de puerto>

En cualquier momento puedes consultar cuales son los puertos que tienes abiertos, con los comandos que tienes en el apartado Comprobar estado y política por defecto verás un listado de todas las reglas adicionales que has ido aplicando.

Como Permitir o Denegar Conexiones por Servicio

Esas mismas reglas anteriores que has visto a nivel de puerto, también puedes establecerlas a nivel de servicio, si te resulta más cómodo. La sintaxis es la misma, simplemente que en vez de tener que especificar el número de puerto asociado, puedes hacer uso del nombre del servicio:

sudo ufw allow <nombre del servicio>

En el ejemplo anterior, en el que habilité el puerto 22 para permitir conexiones entrantes a mi sistema por SSH, ahora podrías hacer lo mismo utilizando el siguiente comando:

sudo ufw allow ssh

El único requisito en este sentido es que, en vez de conocer el número de puerto, debes conocer el nombre exacto del servicio. Para ello, suponiendo que tu sistema utilice systemd, que es lo más común a día de hoy (Ubuntu lo utiliza desde a versión 16.04, si mal no recuerdo), puedes ayudarte del siguiente comando:

sudo systemctl -r --type service --all

Ojo, ese te mostrará los servicios (activos o no) disponibles en tu sistema. Hay servicios que pueden no mostrarse, por el hecho de que no tengas instalados los paquetes necesarios para ejecutarlos.

Del mismo modo que antes, para volver a denegar las conexiones entradas asociadas a un servicio determinado que hayas permitido previamente, tan solo debes ejecutar la siguiente sentencia:

sudo ufw deny <nombre del servicio>

Estas reglas, internamente, no dejan de hacer lo mismo, independientemente que tu establezcas las reglas a nivel de puerto, o a nivel de nombre de servicio.

Comprobar el Estado de UFW y la Política por Defecto

Para comprobar el estado de UFW, así como el conjunto de reglas que se están aplicando,  como puertos permitidos, puedes seguir la siguiente secuencia:

sudo ufw status

Sí además de esto, quieres que se muestre la política por defecto, puedes utilizar la siguiente variante:

sudo ufw status verbose

La salida mostrara un formato similar al que ves por pantalla, donde para ver la política aplicada debes fijarte en el apartado Predeterminado.

Estado: activo 
Acceso: on (low) 
Predeterminado: deny (entrantes), allow (salientes), disabled (enrutados)
Perfiles nuevos: skip

En este caso se está aplicando la política de denegar todo el tráfico entrante, pero permitir el saliente.

¿Como se que el Cortafuegos está Bloqueando los Puertos?

Una vez habilitado UFW, es interesante comprobar desde el exterior, si realmente está actuando correctamente filtrando todos los puertos del sistema, o permitiendo solo el trafico por los puertos que se han habilitado.

Seguramente hay muchas maneras de comprobarlo, incluso puedes encontrar tests online que te indican el estado de los puertos de tu sistema con gran detalle. El problema es que en muchos casos, al ser un escaner desde fuera de tu red, el muchos casos el resultado vendrá determinado por el cortafuegos de tu router.

Una buena manera de conocer el estado de los puertos de tu sistema, sin que interfiera el router, es utilizando la herramienta Nmap desde dentro de tu red interna. En este post tienes explicado como.

GUFW. Como Utilizar UFW desde una Interfaz Gráfica

Pues si, aunque UFW es una aplicación de consola, tambien se ha desarrollado una interfaz gráfica denominada GUFW. Esta si que no viene pre-instalada en Ubuntu, pero instalarlo es tan sencillo como abrir la linea de comandos y teclear:

sudo apt install gufw

Con GUFW, puedes aplicar las mismas opciones, pero mediante una cómoda interfaz gráfica de gestión. El resultado es exactamente el mismo, ya que GUFW no deja de ser un front-end de UFW escrito en Python.

Es cierto que en sus primeras versiones la interfaz era extremadamente simplista, pero es justo mencionar que en cada versión ha ido añadiendo funcionalidades y mejoras de forma continua.

Si eres de los que te gusta gestionar el sistema desde la comodidad y la claridad de una buena interfaz gráfica, te recomiendo que eches un vistazo a la web oficial de proyecto (enlazada arriba).

Para más Seguridad…

Disponer de un firewall correctamente configurado para denegar todas las conexiones entrantes nos asegura disponer de una primera línea de defensa, pero hoy en día los ataques son más avanzados, ya que sin ir más lejos, cualquier Windows moderno ya viene con cortafuegos habilitado de serie, y bastante completo.

Por lo tanto, si bien es importante, es una medida de protección necesaria pero no suficiente. De entrada, solo a nivel del cortafuegos, se podría pensar en tratar de filtrar las conexiones salientes a nivel de aplicación, algo que ofrecen muchos firewalls modernos en Windows, y que en Linux es un poco más complicado. Eso, si acaso, lo reservo para un futuro post…

Además no estaría de más valorar si instalar un antivirus como ClamAV, o también hacer uso de herramientas como Chkrootkit y Rkhunter para detectar la presencia de rootkits o procesos ocultos en tu sistema.

Como curiosidad, tienes una herramienta denominada Lynis que se encarga de realizar una pequeña auditoria a tu sistema, en busca de posibles problemas de seguridad, configuraciones inadecuadas, etc., y te propone una serie de mejoras en base a lo que ha ido encontrando. Si te interesa, tengo un post dedicado a ella.

Bueno, hasta aquí habrás podido consultar las opciones más importantes para pelearte con UFW, y que siendo un usuario de Escritorio, con más probabilidad necesitarás utilizar. Ahora bien, si quieres ampliar conocimiento, te recomiendo muchísimo que consultes la wiki oficial de UFW.

Ah, y por si quieres  probar opciones diferentes, en otro post publiqué un tutorial similar sobre como configurar el cortafuegos del kernel con el script Arno Iptables firewall, disponible también en los repositorios oficiales de Debian y Ubuntu a un simple apt install de distancia.

Espero que te haya parecido una guía útil e interesante, y si quieres compartir más opciones, me encantará leerte en los comentarios;)

Categorías Linux, SeguridadEtiquetas ,

23 comentarios en “Como Habilitar y Configurar el Firewall UFW en Ubuntu

  1. Hola. ¿Por qué se desactiva el cortafuegos cada vez que saldo de UbuntuStudio? Tengo que habilitarlo cada vez que entro en linux. ¿Qué estoy haciendo mal? Gracias por compartir.

    Me gusta

  2. Hola. ¿Por qué tengo que habilitar el cortafuegos cada vez que entro en UbuntuStudio? Se desactiva cuando apago el ordenador. ¿Qué estoy haciendo mal? Muchas gracias

    Me gusta

  3. Excelente Post.

    Me gusta

  4. Excelente Post.

    Me gusta

  5. Estimado Oriol, excelente tus aportes, gracias por compartir tus conocimientos, me ha sido de gran ayuda

    Me gusta

  6. Muchas gracias!! Muy útil y claro!!

    Me gusta

  7. Carlos Romero 19 Ene 2019 — 04:17

    Muchas gracias amigo… Ya en 2 ocasiones lo que tienes en tu blog me ha sido de utilidad..! Sigue así…

    Me gusta

    1. Gracias a ti Carlos Romero!
      Me alegra mucho oír eso.

      Un saludo y hasta pronto;)

      Me gusta

    1. Muy agradevcido por la informaci[on!

      Me gusta

  8. Hola genial toda la info k das me sirvió de mucho (soy nuevo con lo de ubuntu) y la verdad k he quedado fascinado con todo lo k se aprende, gracias

    Me gusta

    1. Muchisimas gracas Dante, es un placer leer comentarios así. Tienes mucha razón, si uno le pone ganas nunca dejas de aprender;)
      Saludos y hasta pronto:)

      Me gusta

  9. Gracias por ponernos las cosas más fáciles.

    Me gusta

    1. Gracias a ti Angel, es un gusto:-)

      Me gusta

  10. ami cuando pongo el comando para ver el estado si esta activo o no me dice orden no encontrada por que????

    Me gusta

    1. Hola Braulio,
      En que distro GNU/Linux lo intentas utilizar?

      Me gusta

  11. muchas gracias por tu informacion muy clara me ayudo muchisimo

    Me gusta

    1. Hola Marko! Gracias a ti por el comment!!
      Me alegra saberlo;)

      Me gusta

  12. puedo utilizarlo como cortafuegos para una red?? o es solo para un usuario final??

    Me gusta

    1. Hola, perdona por tardar tanto en contestar.
      Por lo que se, es solo un firewall de cliente, es decir para usuario final.
      Además las opciones que ofrece de configuración son bastante reducidas. Es muy util, por ejemplo, para un Ubuntu a la hora de denegar todas las conexiones entrantes, pero no va mucho más allá.
      Para una red seguro que hay mejores opciones. Te paso este enlace por si quieres hecharle un ojo:

      http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=465

      Si no también puedes optar por un firewall de hardware.

      Me gusta

  13. Muchas gracias. Un post muy claro y práctico.

    Me gusta

    1. De nada, me alegro mucho.
      Gracias a ti!

      Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

search previous next tag category expand menu location phone mail time cart zoom edit close