UFW: Reglas y comandos comunes

,
UFW Ubuntu

Introducción

UFW (Uncomplicated Firewall) es una herramienta de configuración del firewall iptables, la cual es incluida por defecto en las instalaciones de Ubuntu. El objetivo del presente tutorial es ofrecer una referencia a los principales comandos de UFW que son empleados para configurar las reglas más comunes de la herramienta UFW, que incluyen permitir y denegar servicios por puertos, interfaces de red y direcciones IPs.

Debería saber que…

  • Si es la primera vez que configura UFW como firewll, debería revisar nuestro tutorial: Cómo configurar UFW en Ubuntu.
  • La mayoría de la reglas descritas asumen que se emplea la configuración por defecto de UFW; o sea se permite el tráfico saliente y se deniega el tráfico entrante, por lo que se necesita definir qué puede tener acceso a nuestro servidor.
  • Antes de comenzar a trabajar con UFW es importante chequear el estado del firewall. Para ello puede auxiliarse de los comandos: sudo ufw statussudo ufw status verbose

Bloquear una direccción IP

Para bloquear todas las conexiones de red que se originen desde el IP 192.168.0.1 ejecute el siguiente comando:

En caso de querer bloquear la red completa, basta con agregar la red en sí y la máscara de red en formato CIDR, existen calculadoras de CIDR en internet muy buenas, por ejemplo:

Bloquear conexiones a través de una interfaz de red

Para bloquear las conexiones de red desde una dirección IP específica, ej. 192.168.0.1 a una interfaz de red específica, ej. eth0 ejecutar:

Servicio: SSH

El acceso remoto en los servidores GNU/Linux es realizado mediante el servicio SSH (puerto 22), por lo que es importante definir qué direcciones IPs o redes accederán a nuestro servidor. Si desea permitir el acceso al servicio SSH desde cualquier red  se recomienda habilitar el acceso sólo mediante llaves compartidas o instalar un sistema detector de intrusos. La siguiente sección abarca varios tipos de reglas para el servcio SSH.

Permitir SSH

Para permitir todas las conexiones entrantes al puerto 22 (SSH):

De forma alternativa se puede especificar solamente el puerto del servicio SSH:

Permitir conexiones SSH entrantes desde una dirección IP o subred específica

En este caso se especifica la dirección IP origen o la subred como se muestra a continuación:

Permitir conexiones entrantes de Rsync desde una dirección IP o subred específica

Rsync permite la transferencia de archivos de una computadora a otra, este corre sobre el puerto 873 TCP y UDP. En este caso el comando es el mismo que en el ejemplo anterior solo que se especifica el puerto 873 (Rsync):

Servicio: Servidor Web

Los servidores Web como Apache y Nginx, normalmente escuchan por el puerto 80 y 443 para conexiones HTTP y HTTPS respectivamente. Si la política por defecto es denegar todas las conexiones entrantes, se debe habilitar dichos puertos para que los usuarios puedan accedar a nuestras páginas webs.

Permitir conexiones HTTP entrantes

De forma alternativa se puede especificar solo el puerto del servidor Web (80):

Permitir conexiones HTTPS entrantes

De forma alternativa se puede especificar solo el puerto del servidor Web seguro (443):

Permitir conexiones entrantes HTTP y HTTPS

Es posible permitir las conexiones entrantes HTTP y HTTP mediante una sola línea de comando, pero para ello es necesario especificar el protocolo a emplear, en este caso TCP:

Servicio: MySQL

El servicio MySQL escucha de forma predeterminada por el puerto 3306, por lo que si se desea permitir conexiones externas a nuestro servidor de bases de datos (no se recomienda permitir desde todas las redes que accedan al servidor MySQL por cuestiones de seguridad), siga los ejemplos que se  muestran.

Permitir acceso al servidor MySQL desde una dirección IP o subred específica

Permitir acceso al servidor MySQL a una interfaz de red específica desde una subred

Servicio: PostgreSQL

PostgreSQL es otro servicio de bases de datos bien conocido que escucha de forma predeterminada en el puerto 5432.

Permitir acceso al servidor PostgreSQL desde una dirección IP o subred específica

Permitir acceso al servidor PostgreSQL a una interfaz de red específica desde una subred

 Servicio: Correo

Los servidores de correo electrónico como Exim y Postfix escuchan en varios puertos en dependencia de los protocolos que empleen para recibir y enviar los correos, por lo que se debe definir bien qué puertos deben estar abiertos.

Bloquear el tráfico SMTP saliente

Si su servidor solo será empleado para enviar correo interno (dentro del mismo servidor), es posible que quiera bloquear el correo saliente, el cual emplea el puerto 25

Si desea bloquear el tráfico saliente de otros servicios, la línea anterior le puede ser útil, solo debe cambiar el número 25 por el puerto que desea bloquear.

Permitir el tráfico SMTP entrante

NOTA: Algunos servidores de correo emplean el puerto 587, aunque para el intercambio entre MTA sólo se emplea el 25. Para el caso de SMTPS se emplea el puerto 465.

Permitir el tráfico IMAP entrante

Permitir el tráfico IMAPS entrante

Permitir el tráfico POP3 entrante

Permitir el tráfico POP3S entrante

Conclusión

A lo largo del tutorial hemos cubierto una serie de comandos básicos que nos permiten definir a qué puertos o servicios se les permite acceso, así como denegar el tráfico saliente de un determinado servicio. Como se puede apreciar el uso de UFW es realmente simple y fácil de aprender. 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 un comentario

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