Ante la necesidad de instalar un cortaguegos en una instalación Linux, una buena opción es UFW (Uncomplicated Firewall) que es fácil de instalar, configurar y mantener.
Podemos describirlo como una herramienta de configuración de cortafuegos para Linux, diseñada para simplificar la configuración de iptables
.
Esta es una guía rápida de sus comandos y la descripción de los mismos que cubren las funcionalidades básicas y avanzadas de UFW, permitiendo una gestión sencilla y efectiva del cortafuegos en sistemas Linux.
Instalación y Configuración Básica
Instalar UFW
Este comando instala UFW en un sistema basado en Debian/Ubuntu.
sudo apt install ufw
Habilitar UFW
Habilita UFW y comienza a aplicar las reglas de firewall.
sudo ufw enable
Deshabilitar UFW
Deshabilita UFW y detiene la aplicación de las reglas de firewall.
sudo ufw disable
Reiniciar UFW
Recarga las reglas de UFW sin deshabilitar el firewall.
sudo ufw reload
Reestablecer UFW
Restablece UFW a su configuración predeterminada, deshabilitando el firewall y eliminando todas las reglas.
sudo ufw reset
Gestión de reglas
Comprobar estado de UFW
Muestra el estado actual de UFW (habilitado o deshabilitado) y las reglas activas.
sudo ufw status
Muestra el estado con más detalle.
sudo ufw status verbose
Añadir o permitir un puerto en UFW
Permite el tráfico entrante en el puerto especificado.
sudo ufw allow 22 # permite SSH en el puerto 22
Denegar un puerto en UFW
Niega el tráfico entrante en el puerto especificado.
sudo ufw deny 22 # impide SSH en el puerto 22
Eliminar una regla (puerto) en UFW
Elimina la regla que permite el puerto especificado.
sudo ufw delete allow 22 # Elimina la regla que permitía ssh sobre el puerto 22
Elimina la regla que deniega el puerto especificado.
sudo ufw delete deny 22 # Elimina la regla que impedía tráfico ssh en el puerto 22
Tipos de Reglas y Servicios
Permitir un servicio en UFW
Permite el tráfico para un servicio conocido y previamente definido en /etc/services
.
sudo ufw allow ssh # equivalente a sudo ufw allow 22
Denegar un servicio en UFW
Niega el tráfico para un servicio conocido.
sudo ufw deny ftp # equivalente a sudo ufw deny 21
Reglas avanzadas
Permitir un rango de puertos en UFW
Permite el tráfico en un rango de puertos especificado.
sudo ufw allow 1000:2000/tcp # permite el tráfico TCP en los puertos del 1000 al 2000
Denegar un rango de puertos en UFW
Niega el tráfico en un rango de puertos especificado.
sudo ufw deny 1000:2000/udp # niega el tráfico UDP en los puertos del 1000 al 2000
Permitir tráfico desde una IP específica en UFW
Permite el tráfico entrante desde una dirección IP específica.
sudo ufw allow from 192.168.0.1
Denegar tráfico desde una IP espcífica en UFW
Niega el tráfico entrante desde una dirección IP específica.
sudo ufw deny from 192.168.0.1
Logging y Monitorización
En UFW, el logging es una funcionalidad que nos permite registrar eventos relacionados con el tráfico de red y las reglas del cortafuegos. Los niveles de logging determinan la cantidad de información que se va a registrar.
Habilitar logging en UFW
Activa el registro de eventos del firewall.
sudo ufw logging on
Deshabilitar logging en UFW
Desactiva el registro de eventos del firewall.
sudo ufw logging off
Establecer el nivel de logging
Configura el nivel de registro (off
, low
, medium
, high
, full
).
sudo ufw logging <nivel>
Niveles de Logging en UFW
off (apagado):
- No se registra ninguna información relacionada con UFW.
- Ejemplo de uso:
sudo ufw logging off
low (bajo):
- Registra eventos básicos, como conexiones permitidas o denegadas.
- Esta es la configuración predeterminada cuando se habilita el logging.
- Ejemplo de uso:
sudo ufw logging low
medium (medio):
- Registra eventos adicionales comparado con el nivel
low
. - Incluye detalles adicionales sobre los paquetes permitidos o denegados.
- Ejemplo de uso:
sudo ufw logging medium
high (alto):
- Registra eventos detallados, incluyendo información más específica sobre cada paquete.
- Puede registrar intentos de conexión y más detalles sobre los paquetes permitidos o denegados.
- Ejemplo de uso:
sudo ufw logging high
full (completo):
- Registra todos los eventos posibles relacionados con UFW.
- Este nivel incluye toda la información disponible sobre cada evento y paquete.
- Es útil para depuración y análisis detallado, pero puede generar una gran cantidad de registros.
- Ejemplo de uso:
sudo ufw logging full
Ubicación de los Registros
Los registros generados por UFW se almacenan en los archivos de logs del sistema. Generalmente, los registros se pueden encontrar en:
/var/log/ufw.log
/var/log/syslog
/var/log/kern.log
Podemos usar herramientas como tail
, grep
o less
para visualizar y analizar los registros como en estos ejemplos.
tail -f /var/log/ufw.log
grep "UFW" /var/log/syslog
less /var/log/kern.log
Cuando establecer un nivel u otro
Elegir el nivel adecuado de logging depende del contexto y las necesidades específicas:
- Producción: En entornos de producción, generalmente se usa
low
omedium
para evitar la generación excesiva de logs mientras se mantiene una monitorización suficiente. - Depuración: Para solucionar problemas de red o analizar eventos específicos,
high
ofull
pueden proporcionar la información detallada necesaria. - Auditoría: En casos donde es importante mantener un registro completo de todos los eventos de red,
full
puede ser necesario, aunque se debe gestionar adecuadamente el almacenamiento de logs debido al volumen generado.
Configurar el nivel de logging apropiado es crucial para equilibrar la necesidad de información con el rendimiento y la gestión de recursos del sistema.
Otras operaciones con UFW
Mostrar las aplicaciones disponibles
Muestra una lista de aplicaciones con perfiles de UFW predefinidos.
sudo ufw app list
Mostrar detalles de una aplicación
Muestra detalles sobre una aplicación específica.
sudo ufw app info OpenSSH
Especificación de protocolos
Las reglas pueden especificar protocolos (tcp
o udp
).
sudo ufw allow 80/tcp
sudo ufw deny 53/udp
Las reglas pueden especificar direcciones y puertos de destino.
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw deny from 192.168.1.100 to any port 23