Introducción
UFW es una herramienta de configuración de firewall para iptables que viene con Ubuntu de forma predeterminada. Esta guía de estilo de hoja de trucos proporciona una referencia rápida a los comandos UFW que crearán las reglas del servidor de seguridad de iptables que son útiles en escenarios comunes y cotidianos.
Esto incluye ejemplos UFW de permitir y bloquear varios servicios por puerto, interfaz de red y dirección IP de origen.
Como usar esta guía
- Si recién estás comenzando a usar UFW para configurar tu firewall, puedes consultar alguna guía introductoria en línea.
- La mayoría de las reglas que se describen aquí suponen que estás utilizando el conjunto de reglas UFW predeterminado. Es decir, está configurado para permitir el tráfico saliente y denegar el trafico entrante, a través de las políticas predeterminadas, por lo que debe permitir el tráfico selectivo
- Utiliza las siguientes secciones que sean aplicables a lo que estás tratando de lograr. La mayoría de las secciones no están basadas en ninguna otra, por lo que puedes usar los ejemplos a continuación de forma independiente
- Usa los encabezas dentro del articulo o la función de búsqueda de tu navegador para ubicar las secciones que necesitas
- Copia y pega los ejemplos de la línea de comandos que se dan, sustituyendo los valores en rojo con tus propios valores.
Recuerda que puedes verificar tu conjunto de reglas UFW actual con sudo ufw status o sudo ufw status verbose.
Bloquear una dirección IP
Para bloquear todas las conexiones de red que se originan desde una dirección IP específica, 15.15.15.51 por ejemplo, ejecuta este comando:
1 |
$ sudo ufw deny from 15.15.15.51 |
En este ejemplo, from 15.15.15.51 especifica una fuente de dirección IP “15.15.15.51”. Si lo deseas, una subred, como por ejemplo 15.15.15.0/24, puede especificarse aquí. La dirección IP de origen se puede especificar en cualquier regla de firewall, incluyendo una regla allow.
Bloquear conexiones a una interfaz de red
Para bloquear conexiones desde una dirección IP específica, por ejemplo 15.15.15.51, a una interfaz de red específica, por ejemplo, eth0, usa este comando:
1 |
$ sudo ufw deny in on eth0 from 15.15.15.51 |
Este es el mismo que el ejemplo anterior, con la adición de in on eth0. La interfaz de red se puede especificar en cualquier regla de firewall, y es una excelente manera de limitar la regla a una red en particular.
Servicio: SSH
Si estás utilizando un servidor en la nube, es probable que desees permitir conexiones SSH entrantes (puerto 22) para poder conectarte y administrar tu servidor. Esta sección explica cómo configurar tu firewall con varias reglas relacionadas con SSH.
Permitir SSH
Para permitir todas las conexiones SSH entrantes ejecuta este comando:
1 |
$ sudo ufw allow ssh |
Una sintaxis alternativa es especificar el número de puerto del servicio SSH:
1 |
$ sudo ufw allow 22 |
Permitir SSH entrante desde una dirección IP específica o subred
Para permitir conexiones SSH entrantes desde una dirección IP o subred específica, especifica la fuente. Por ejemplo, si deseas permitir la subred completa 15.15.15.0/24, ejecuta este comando:
1 |
$ sudo ufw allow from 15.15.15.0/24 to any port 22 |
Permitir Rsync entrante desde una dirección IP específica o subred
Rsync, que se ejecuta en el puerto 873, se puede usar para transferir archivos de una computadora a otra.
Para permitir las conexiones rsync entrantes desde una dirección IP o subred específica, tienes que especificar la dirección IP de origen y el puerto de destino. Por ejemplo, si deseas permitir que toda la subred 15.15.15.0/24 pueda hacer rsync a tu servidor, ejecuta este comando:
1 |
$ sudo ufw allow from 15.15.15.0/24 to any port 873 |
Servicio: Servidor Web
Los servidores web, como Apache y Nginx, normalmente escuchan las solicitudes en los puertos 80 y 443 para las conexiones HTTP y HTTPS, respectivamente. Si tu política predeterminada para el tráfico entrante está configurada para cancelar o rechazar, tendrás que crear reglas que permitan a tu servidor responder a esas solicitudes.
Permitir todos los HTTP entrantes
Para permitir todas las conexiones HTTP entrantes (puerto 80) ejecuta este comando:
1 |
$ sudo ufw allow http |
Una sintaxis alternativa es especificar el número de puerto del servicio HTTP:
1 |
$ sudo ufw allow 80 |
Permitir todos los HTTPS entrantes
Para permitir todas las conexiones HTTPS (puerto 443) entrantes ejecuta este comando:
1 |
$ sudo ufw allow https |
Una sintaxis alternativa es especificar el número de puerto del servicio HTTPS:
1 |
$ sudo ufw allow 443 |
Permitir todos los HTTP y HTTPS entrantes
Si deseas permitir el tráfico HTTP y HTTPS, puedes crear una sola regla que permita ambos puertos. Para permitir que todas las conexiones entrantes HTTP y HTTPS (puerto 443) debes ejecutar este comando:
1 |
$ sudo ufw allow proto tcp from any to any port 80,443 |
Ten en cuenta que debes especificar el protocolo, con proto tcp, al especificar varios puertos.
Servicio: MySQL
MySQL escucha las conexiones de clientes en el puerto 3306. Si tu servidor de base de datos MySQL está siendo utilizado por un cliente en un servidor remoto, debes asegurarte de permitir ese tráfico.
Permitir MySQL desde una dirección IP específica o subred
Para permitir conexiones de MySQL entrantes desde una dirección IP o subred específica, tienes que especificar la fuente. Por ejemplo, si deseas permitir la subred 15.15.15.0/24 completa, hay que ejecutar este comando:
1 |
$ sudo ufw allow from 15.15.15.0/24 to any port 3306 |
Permitir MySQL a una interfaz de red específica
Para permitir conexiones de MySQL a una interfaz de red específica, digamos que tienes una interfaz de red privada eth1, usa este comando:
1 |
$ sudo ufw allow in on eth1 to any port 3306 |
Servicio: PostgreSQL
PostgreSQL escucha las conexiones de clientes en el puerto 5432. Si tu cliente está utilizando tu servidor de base de datos PostgreSQL en un servidor remoto, debes asegurarte de permitir ese tráfico.
PostgreSQL desde dirección IP específica o subred
Para permitir conexiones entrantes de PostgreSQL desde una dirección IP o subred específica, hay que especificar la fuente. Por ejemplo, si deseas permitir la subred completa 15.15.15.0/24, usa este comando:
1 |
$ sudo ufw allow from 15.15.15.0/24 to any port 5432 |
El segundo comando, que permite el tráfico saliente de las conexiones PostgreSQL establecidas, solo es necesario si la política OUTPUT no está establecida en ACCEPT.
Permitir PostgreSQL a una interfaz de red específica
Para permitir las conexiones de PostgreSQL a una interfaz de red específica, digamos que tienes una interfaz de red privada eth1, por ejemplo, usa el siguiente comando:
1 |
$ sudo ufw allow in on eth1 to any port 5432 |
El segundo comando, que permite el tráfico saliente de las conexiones PostgreSQL establecidas, solo es necesario si la política OUTPUT no está establecida en ACCEPT.
Servicio: Correo
Los servidores de correo, como Sendmail y Postfix, escuchan en una variedad de puertos dependiendo de los protocolos que se utilizan para la entrega de correo. Si estás ejecutando un servidor de correo, determina qué protocolos está utilizando y permite los tipos de tráfico adecuados. También te mostraremos cómo crear una regla para bloquear el correo SMTP saliente.
Bloquear correo SMTP saliente
Si tu servidor no debería enviar correo saliente, es posible que desees bloquear ese tipo de tráfico. Para bloquear el correo SMTP saliente, que usa el puerto 25, ejecuta este comando:
1 |
$ sudo ufw deny out 25 |
Esto configura tu firewall para eliminar todo el tráfico saliente en el puerto 25. Si necesitas rechazar un servicio diferente por su número de puerto, en lugar del puerto 25, simplemente reemplázalo.
Permitir todo SMTP entrante
Para permitir que tu servidor responda a las conexiones SMTP, puerto 25, usa el siguiente comando:
1 |
$ sudo ufw allow 25 |
Nota: es común que los servidores SMTP usen el puerto 587 para el correo saliente.
Permitir todos los IMAP entrantes
Para permitir que tu servidor responda a las conexiones IMAP, puerto 143, ejecuta este comando:
1 |
$ sudo ufw allow 143 |
Permitir todos los IMAPS entrantes
Para permitir que tu servidor responda a las conexiones IMAPS, puerto 993, ejecuta este comando:
1 |
$ sudo ufw allow 993 |
Permitir todos los POP3 entrantes
Para permitir que tu servidor responda a las conexiones POP3, puerto 110, usa este comando:
1 |
$ sudo ufw allow 110 |
Permitir todos los POP3S entrantes
Para permitir que tu servidor responda a las conexiones POP3S, puerto 995, ejecuta el siguiente comando:
1 |
$ sudo ufw allow 995 |
Conclusión
Eso debería cubrir muchos de los comandos que se usan comúnmente cuando se usa UFW para configurar un firewall.
Por supuesto, UFW es una herramienta muy flexible, así que siéntete libre de mezclar y combinar los comandos con diferentes opciones para satisfacer tus necesidades específicas si no están cubiertas aquí.