
Centralizar o distribuir listas negras de IPset
Este programa te permite centralizar y distribuir listas negras de IP.
Si mantienes un servidor en Internet, es muy probable que te hayas encontrado con uno o más ataques de fuerza bruta. No hay problema, solo instala fail2ban. Hecho.
Pero si tienes varios servidores, cada uno ejecutando su propia instancia de fail2ban, todos tendrán diferentes direcciones IP en la lista de bloqueados. ¿No sería agradable tener una lista de bloqueos compartida en todas tus instancias de fail2ban? O en el caso de que todas tus máquinas estén detrás de un router o cortafuegos que controles tú mismo, ¿no sería agradable eliminar el tráfico malicioso en el borde de tu red?
Eso es exactamente lo que vallumd ayuda a lograr.
Vallumd se conecta a un broker MQTT, lee mensajes que contienen direcciones IP, y agrega o elimina esas direcciones IP hacia o desde un ipset. Así de simple.
Esto significa que no es útil por sí solo, pero hace que vallumd sea muy flexible. Puedes decidir por ti mismo qué tipo de regla iptables quieres que haga referencia al ipset. Integrarlo con fail2ban es tan sencillo como crear una nueva acción que use mosquitto_pub para enviar un mensaje a tu broker MQTT. Y dado que existen librerías MQTT para la mayoría de los lenguajes comunes, no debería ser demasiado difícil integrarlo con tu IDS, IPS o Honeypot favorito.
El nombre vallumd proviene de la palabra latina "vallum", que significa muro. Y eso es lo que hace vallumd: construir un muro para proteger tu imperio digital.
La forma más elegante de instalar cualquier paquete es usando el gestor de paquetes de tu distribución. Sin embargo, dado que este proyecto es muy joven, aún no ha sido incluido en muchas distribuciones.
Un paquete que sigue la rama master de git está disponible en el AUR.
Asegúrate de tener habilitado el repositorio EPEL.
sudo yum -y install cmake3 ipset-devel mosquitto-devel openssl-devel pkgconfig '@Development Tools'
Ahora puedes generar un paquete RPM con cpack:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake3 .
cpack3 -G RPM
sudo yum -y localinstall build/*.rpm
Probado en compilación en CentOS 7.
Puedes generar un paquete DEB con cpack:
sudo apt-get -y install build-essential cmake file libipset-dev libmosquitto-dev libssl-dev pkg-config
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
cpack -G DEB
sudo dpkg -i build/*.deb
Probado en compilación en Debian 10, 11, 12, 13 y Ubuntu 18.04, 20.04, 22.04, 24.04.
Puedes encontrar un ebuild en vivo para vallumd en mi overlay de Gentoo
Si estás ejecutando una instantánea de OpenWrt DD o LEDE, vallumd está disponible en el feed de paquetes, y se puede instalar con opkg:
opkg update
opkg install vallumd
La instalación manual es muy fácil. Requisitos:
Instrucciones:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
make
make install
Para usar vallumd, necesitas un broker MQTT, como Mosquitto. Dependiendo de tu configuración, puedes ejecutarlo en el mismo host que ejecuta vallumd, pero eso no es un requisito.
Lo siguiente que necesitas es un IPset. Para darte control total sobre el tipo de IPset y sus opciones, vallumd no creará el IPset por sí mismo. Puedes elegir entre estos tipos de IPset:
Ejemplo de creación de IPset:
ipset create blacklist hash:ip timeout 3600
Ahora puedes iniciar vallumd. Existen las siguientes opciones de línea de comandos:
-h: Host MQTT al que conectarse
-p: Puerto MQTT al que conectarse (1883)
-u: Usuario MQTT
-P: Contraseña MQTT
-t: Tema MQTT y nombre del IPset
-V: Imprime el número de versión y sale
-c: Ruta al archivo CA
-T: Usar TLS
Las opciones de host y tema son obligatorias, las otras son opcionales (valor por defecto). Es posible especificar múltiples temas.
Iniciando vallumd:
vallumd -h 192.168.0.1 -t blacklist
Esto escuchará mensajes en el broker MQTT en 192.168.0.1, en el tema blacklist, y cuando se reciba un mensaje, la dirección IP en el mensaje será agregada o eliminada del IPset llamado blacklist.
Así que ahora tenemos todo listo para empezar a agregar IPs a la lista negra. Todo lo que tenemos que hacer es configurar nuestro IDS, IPS o Honeypot para enviar direcciones IP maliciosas a nuestro broker MQTT.
Para fail2ban, esto se podría hacer con el cliente Mosquitto mosquitto_pub.
Crea una nueva acción en /etc/fail2ban/action.d/vallumd.conf:
[Definition]
actionban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/add -m <ip>
actionunban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/del -m <ip>
Y configura tus jaulas de fail2ban para usar la acción vallumd.
Los paquetes generados con CPack soportan OpenRC, Upstart y systemd. Los archivos de configuración del servicio están donde los esperarías en tu distro:
Después de editar el archivo relevante para tu distribución, inicia el servicio vallumd como iniciarías cualquier otro servicio en tu sistema.
Vallumd usa syslog(3) para el registro.