Ir al contenido principal

IPsets con UFW en Ubuntu

IPsets con UFW en Ubuntu

Introducción

Este es un ejemplo que te permite tener UFW e IPSet con una lista blanca de IP de forma dinamica para una implementacion comun de firewall en Ubuntu

Primero necesitas un script systemd que crea un ipset al arraque del sistema, y posterior un script que integra el ipset con UFW para permitir el trafico especifico, se necesitará crear 2 conceptos principales.

  1. Un script de servicio systemd que crea y carga el ipset al inicio
  2. Un perfil de aplicación en UFW o editar de forma directa las reglas para utilizar el ipset para permitir el trafico

Servicio Systemd para IPset

1. Crear el script de ipset

Primero, crear un script para cargar el ipset. Llamaremos el script create_ipset.sh

  • /usr/local/bin/create_ipset.sh
#!/bin/bash 
# Nombre de la ipset 
IPSET_NAME="whilelist"

# Liberar si exite y crear
ipset ipset -exist flush $IPSET_NAME
ipset -exist create $IPSET_NAME hash:ip

# Opcional, agregar IP's aqui o por un mecanismo distinto
ipset add $IPSET_NAME 192.168.1.100

Asegurarse que hacer el script ejecutable

sudo chmod +x /usr/local/bin/create_ipset.sh

2. Crear el archivo de servicio systemd

Crear el nuevo archivo de servicio en systemd y lo llamaremos ipset.service

  • /etc/systemd/system/ipset.service
[Unit] 
Description=Crear IPSET para lista blanca
Before=ufw.service
After=network.target


[Service]
Type=oneshot
ExecStart=/usr/local/bin/create_ipset.sh

[Install]
WantedBy=multi-user.target

El script define la ejecucion antes de iniciar UFW (como se indica en Before=ufw.service) pero despues de que la red este disponible (After=network.target)

Integrar IPset en UFW

Para integrar ipset con UFW, sera necesario editar las reglas iptables de UFW ya que este no soporta ipset de forma normal en sus archivos de configuración. Para esto será necesario modificar las reglas en el archivo user.rules o after.rules, dependiendo donde se quiera aplicar el filtrado

Agregar en las reglas de UFW

Editar el archivo deseado, para este ejemplo se utilizara el archivo after.rules agregando la regla personalizada haciendo la referencia a ipset

  • /etc/ufw/after.rules
...
-A ufw-after-input -m set --match-set whilelist src -p tcp --dport 22 -j ACCEPT
...
COMMIT

La regla permite el acceso al puerto 22 para las direcciones IPs registradas en whitelist de ipset

Notas a considerar

  • Pruebas: Siempre probar el firewall en ambientes controlados antes de poner en produccion, ya puedes tener bloqueos no deseados. Puedes probar con otro puerto distinto al 22 u otro puerto productivo.
  • Orden de ejecucion: El script de systemd necesita ejecutarse antes que UFW inicie, por eso la directiva Before=ufw.service. Asegurarse que la red esta habilitada antes de que el script se ejecute.

Con esta configuracion, tu servidor creará e inicializará ipset para ser utilizado en UFW para permitir trafico como se especifique en los scripts. Es provee un balance entre la simplicidad de UFW y el poder ipset e iptables. Siempre asegurarse de probar y verificar la configuracion en ambientes controlados antes de aplicarlos en producción.

Comentarios

Entradas más populares de este blog

Como leer/visualizar archivos utmp, wtmp y btmp en Linux

Lectores, les paso este "Como" de linux, algo que debe ser usado por cualquier sysadmin de Linux. Esperando aportar conocimiento, aqui les dejo. Introducción. En sistemas operativos Linux/Unix todo es registrado en algun lado (los conocidos logs). La mayoria de registros del sistema se almacenan en el directorio /var/log . El directorio contiene registros relacionados a distintos servicios y/o aplicaciones. En este directorio tenemos algunos archivos como utmp , wtmp y btmp . Estos archivos contienen todo el detalle de registro de inicio (login) y termino (logout) de sesiones de usuarios ya sea local, sistemas remoto, como estado en el sistema, tiempo en linea, etc. Informacion sobre los archivos utmp : te mostrara informacion completa del acceso de usuarios, la terminal que usa, termino de sesion, eventos del sistema y el estado actual del mismo, etc. wtmp : contiene el historio del archivo utmp btmp : registros solo intentos fallidos de sesion. Como no ...

Como montar particiones LVM en Linux

Como están lectores, reportandome después de varios meses fuera. Hace un par de días vi un howto que me gusto y quiero compartir. Nota: lo siguiente es una traducción, el original lo pueden ver el siguiente link: How to mount an LVM partition on Linux Introducción LVM es una herramienta de administración de volúmenes lógicos (particiones) la cual te permite administrar el espacio de disco usando la connotación de volúmenes lógicos y grupo de volúmenes. El mayor beneficio de usar LVM sobre las particiones clásicas es la flexibilidad en la asignación de almacenamiento para usuarios y aplicaciones sin verse limitado por el tamaño de los discos individuales. En LVM, el almacenamiento físico, en el cual se crean los volúmenes lógicos, son particiones tradicionales (/dev/sda1, /dev/sda2). Estas particiones deben ser marcadas como "volúmenes físicos" y etiquetadas como "Linux LVM", esto para ser usadas en LVM. Como no montar Unas vez que las particiones h...

Resetear password de NextCloud

Estimados, recienmente he estado trabajando en la administración de archivos para una institución gubernamental, por lo que comenzamos a trabajar con NextCloud . Para mas información de la plataforma consulten la documentación Como suele pasar en muchas ocasiones, es probable que podamos olvidar la password del usuario admin o que quien instaló no haya previsto el anotarla y se olvide. Para realizar el reset o cambiar la password del administrador u otro usuario se puede realizar de la siguiente manera. 1. Click en el link de reset password en la pantalla de login, esta link aparece al intentar la primera vez en el acceso y falla. Este metodo solo funcionara si se definio un correo electrónico para el usuario, por lo que Nextcloud te enviara una correo con las instrucciones. 2. Solicitar a otro usuario que tenga permisos de administrador, para que te resetee el password. Si lo anterior no funciona o no esta en el escenario en que estas, puedes resetear el password tenie...