Cómo configurar UFW en Ubuntu

,
Cómo configurar UFW en Ubuntu

Uncomplicated Firewall o más conocido como UFW, es una interfaz de configuración para iptables que permite de forma fácil y rápida el proceso de configuración de un cortafuegos (firewall). Mientras que iptables es una herramienta sólida y flexible para muchos usuarios, en un principio, puede ser tedioso el proceso de configuración. Si tienes instalado un servidor con Ubuntu Server y deseas configurar un contafuegos, UFW es la solución perfecta ya que viene incluido por defecto en Ubuntu. En el presente tutorial aprenderás en detalles cómo configurar UFW en Ubuntu.

Requisitos previos

Cada uno de los pasos que se desorrallan en el tutorial se realizan desde un usuario con privilegios de root (o sea que pueda hacer sudo). Durante la instalación de Ubuntu Server, el primer usuario creado posee este tipo de privilegios; en caso de no tener un usuario de este tipo, puede seguir los pasos descritos en nuestro tutorial sobre la configuración inicial de un servidor Ubuntu.

Tenga en cuenta que UFW es instalado por defecto en Ubuntu, pero en caso de que no esté instalado ejecute el siguiente comando:

UFW en IPv6

El uso de IPv6 en las redes de computadoras se ha extendido y todos los sistemas operativos modernos traen incorporado de forma nativa el soporte para este tipo de tecnología. De forma predeterminada UFW habilita el soporte para IPv6, esto puede ser comprobado en el archivo de configuración global: «/etc/default/ufw«, mediante la directiva:

En caso de querer desactivar el soporte para IPv6, basta con ajustar el valor a «no» y reiniciar el servicio:

Chequear el estado de UFW y reglas

El estado de UFW y reglas puede ser comprobado mediante:

Por defecto UFW está desactivado, por lo que la salida del comando muestra dicho estado. Para activar el firewall debes ejecutar:

La acción anterior además activa el firewall en el arranque del sistema.

Configuración de las políticas predeterminadas

Una vez activo UFW es necesario ajustar las políticas predeterminadas para el tráfico entrante y saliente. Por defecto son denegadas las conexiones entrantes y se permiten las salientes. Por esto es necesario definir qué puertos tendrán acceso a conexiones entrantes, ya que de lo contrario, los usuarios externos al servidor no podrán acceder.

La configuración de las políticas predeterminadas pueden ser modificadas mediante los siguientes comandos:

$ sudo ufw default allow outgoing

Permitir servicios a través del firewall

Como se dijo anteriormente, una vez activo el firewall la politíca por defecto para las conexiones entrantes (a menos que se haya cambiado) es denegar todo el tráfico entrante, por lo que es necesario definir qué servicios (también se pueden definir mediante puertos) podrán ser accedidos desde internet en el servidor. Los sistemas operativos GNU/Linux ofrecen una lista de puertos con el protocolo y el servicio asociado, la cual puede ser útil en caso de tener dudas en los puertos a abrir en el servidor. Esta lista puede encontrarse en el archivo: «/etc/services«.

Servicio SSH

El servicio SSH puede ser habilitado especificando solamente el puerto, en este caso el puerto 22:

De la línea anterior se puede llegar a una conclusión: para permitir las conexiones entrantes de un servicio basta con especificar el puerto asociado con el mismo.

Servicio Web

Las conexiones webs se realizan por el puerto 80 y 443 para HTTP y HTTPS respectivamente, estas pueden ser habilitadas de la siguiente manera:

o

En nuestro tutorial sobre reglas y comandos comunes de UFW puede encontrar más ejemplos y casos prácticos.

NOTA: Cada uno de los servicios tiene uno o varios puertos asociados, así como un protocolo que puede ser TCP o UDP. Al configurar UFW se puede especificar al abrir o cerrar un puerto qué protoloco se empleará (TCP o UDP). En caso de no especificarse se asumen ambos. Para abrir el puerto 21 (FTP) sólo por TCP, ejecutar:

Permitir rango de puertos específicos

Al configurar UFW puede ser útil especificar un rango de puertos específicos, por ejemplo para permitir conexiones X11, que empleen los puertos 6000-6007:

Permitir direcciones IP y subredes específicas

UFW permite definir qué dirección IP o subred tendrá acceso a nuestro servidor. Esto permite declarar estaciones de trabajo o áreas de confianza, para configurar UFW que permita el acceso a la dirección IP 192.168.0.1 a nuestro servidor, basta con agregar la palabra «from» antes de la dirección IP, por ejemplo:

En el caso de una subred se necesita especificar la red y la máscara de red mediante el CIDR correspondiente. Por ejemplo, para permitir el acceso al rango de direcciones IPs 192.168.0.1 hasta 192.168.0.254, se debe de especificar de la siguiente forma:

NOTA: Si necesitas ayuda para calcular el CIDR, puedes auxiliarte de calculadoras en internet.

Si no quieres dar acceso completo a tu servidor desde una dirección IP o subred específica, agregas la frase «to any port» seguida del número del puerto después de especificar la dirección IP o subred:

Permitir conexiones a una interfaz de red específica

Como medida de seguridad adicional o si se quiere configurar un firewall bastante restrictivo, UFW permite especificar por cuál interfaz de red se permitirá acceso a determinado servicio. Para ello se agrega la frase «allow in on» seguida del nombre de la interfaz de red. Las interfaces de red que tienen disponibles nuestro servidor pueden listarse mediante los comandos: «ip addr» o «ifconfig«. El siguiente ejemplo permite acceso a nuestro servidor solo de la interfaz de red eth0, a la subred 192.168.0.0/24 al puerto 80 y 443:

Fíjate cómo en la línea anterior se especifica el tipo de protocolo a emplear (TCP o UDP); esto se debe a que, al especificar varios puertos separados por coma, es necesario definir el tipo de protocolo a emplear. De forma general la sintáxis es:

Denegar conexiones entrantes

De forma predeterminada la política para conexiones entrantes en UFW es denegar. Esto de cierta forma facilita el proceso de configuración de las reglas del firewall, ya que solo es necesario especificar qué servicios serán accedidos desde redes externas. En ocasiones nuestro servidor puede estar bajo ataques o simplemente se quiere cerrar un determinado servicio. Para escribir reglas para denegar conexiones entrantes, solo hay que emplear la palabra «deny» en lugar de «allow«. Por ejemplo, en los archivos de logs de nuestro sistema vemos cómo la dirección IP 192.168.2.40 posee varias conexiones HTTP abiertas y ha intentado acceder por SSH a nuestro servidor. En este caso es recomendable bloquear la dirección IP si no es de un cliente «potencial»:

En caso de querer cerrar solo el puerto SSH:

Borrado de reglas

UFW ofrece dos formas para el borrado de las relgas: 1) mediante la regla actual (consiste en agregar la palabra «delete» delante de la regla recién creada) y 2) mediante el número de la regla.

Mediante el número de la regla

Este método es el fácil, pues conociendo el número correspondiente de la regla se puede eliminar. Para listar las reglas de UFW de forma enumerada se ejecuta:

Lo cual devuelve algo como la lista anterior, para borrar la primera regla:

Después de ejecutar el comando anterior, se pide confirmación por parte del usuario para proceder. Tenga en cuenta que si posee reglas IPv6 activas, se debe de borrar la regla IPv6 correspondiente.

Mediante la regla actual

Este método requiere reescribir completamente la regla que se quiere borrar. Por ejemplo si se quiere borrar la regla «deny from 192.168.2.40 to any port 22«, la sintáxis a ejecutar es:

¿Cómo desactivar UFW?

Si te parece que UFW es demasiado complicado o te gusta aplicar reglas de firewall al estilo iptables, puedes desactivarlo mediante:

Al ejecutar el comando anterior todas las reglas creadas serán desactivadas, si luego deseas activarlas nuevamente puedes ejecutar:

Reestablecer las reglas de UFW

Para desactivar UFW y eleminar las reglas creadas, puede emplearse:

NOTA: La acción anterior no modifica las políticas predeterminadas si estas fueron cambiadas en algún momento.

Conclusión

Como se ha podido observar UFW es una excelente herramienta de configuración para iptables. Permite de forma fácil e intuitiva agregar y eleminar reglas, así como configurar la política por defecto establecida.  A lo largo del tutorial se mostraron varios ejemplos de configuración, si deseas conocer cómo aplicar más reglas puedes visitar nuestro tutorial UFW: reglas y comandos comunes.

Más ejemplos de configuraciones pueden encontrarse en la guía oficial de Ubuntu.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *