
Centralizza o distribuisci le blacklist IPset
Questo programma ti permette di centralizzare e distribuire le blacklist IP.
Se gestisci un server su Internet, è molto probabile che tu abbia incontrato uno o più attacchi di forza bruta. Nessun problema, basta installare fail2ban. Fatto.
Ma se gestisci più server, ciascuno con la propria istanza di fail2ban, avranno tutti indirizzi IP diversi nella lista di ban. Non sarebbe bello avere una lista di ban condivisa tra tutte le tue istanze fail2ban? Oppure, nel caso tutte le tue macchine siano dietro un router o firewall che controlli tu stesso, non sarebbe bello bloccare il traffico malevolo al confine della tua rete?
Questo è esattamente ciò che vallumd aiuta a realizzare.
Vallumd si connette a un broker MQTT, legge messaggi contenenti indirizzi IP e aggiunge o rimuove tali indirizzi IP da un ipset. Semplice come sembra.
Ciò significa che non è utile da solo, ma rende vallumd molto flessibile. Puoi decidere tu stesso che tipo di regola iptables vuoi associare all'ipset. Integrarlo con fail2ban è semplice come creare una nuova azione che usa mosquitto_pub per inviare un messaggio al tuo broker MQTT. E dato che esistono librerie MQTT per la maggior parte dei linguaggi comuni, non dovrebbe essere troppo difficile integrarlo con il tuo IDS, IPS o Honeypot preferito.
Il nome vallumd deriva dalla parola latina "vallum", che significa muro. Ed è proprio ciò che fa vallumd: costruire un muro per proteggere il tuo impero digitale.
Il modo migliore per installare qualsiasi pacchetto è utilizzare il gestore di pacchetti della tua distribuzione. Tuttavia, poiché questo progetto è molto recente, non è ancora stato incluso in molte distribuzioni.
Un pacchetto che segue il branch master di git è disponibile nell'AUR.
Assicurati di avere il repository EPEL abilitato.
sudo yum -y install cmake3 ipset-devel mosquitto-devel openssl-devel pkgconfig '@Development Tools'
Ora puoi generare un pacchetto RPM con cpack:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake3 .
cpack3 -G RPM
sudo yum -y localinstall build/*.rpm
Testato in build su CentOS 7.
Puoi generare un pacchetto 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
Testato in build su Debian 10, 11, 12, 13 e Ubuntu 18.04, 20.04, 22.04, 24.04.
Puoi trovare un ebuild live per vallumd nel mio Gentoo overlay
Se stai usando un'istantanea OpenWrt DD o LEDE, vallumd è disponibile nel feed dei pacchetti e può essere installato con opkg:
opkg update
opkg install vallumd
L'installazione manuale è molto semplice. Requisiti:
Istruzioni:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
make
make install
Per utilizzare vallumd, hai bisogno di un broker MQTT, come Mosquitto. A seconda della configurazione, puoi eseguirlo sullo stesso host che esegue vallumd, ma non è obbligatorio.
La prossima cosa di cui hai bisogno è un IPset. Per darti il pieno controllo sul tipo di IPset e le sue opzioni, vallumd non creerà l'IPset da solo. Puoi scegliere tra questi tipi di IPset:
Esempio di creazione IPset:
ipset create blacklist hash:ip timeout 3600
Ora puoi avviare vallumd. Esistono le seguenti opzioni da riga di comando:
-h: MQTT host a cui connettersi
-p: MQTT porta a cui connettersi (1883)
-u: MQTT username
-P: MQTT password
-t: MQTT topic e nome IPset
-V: stampa il numero di versione ed esci
-c: percorso del file CA
-T: usa TLS
Le opzioni host e topic sono obbligatorie, le altre sono facoltative (valore predefinito). È possibile specificare più topic.
Avvio di vallumd:
vallumd -h 192.168.0.1 -t blacklist
Questo ascolterà i messaggi sul broker MQTT su 192.168.0.1, nel topic blacklist, e quando viene ricevuto un messaggio, l'indirizzo IP nel messaggio verrà aggiunto o rimosso dall'IPset chiamato blacklist.
Ora abbiamo tutto ciò che serve per iniziare ad aggiungere IP alla blacklist. Tutto ciò che dobbiamo fare è configurare il nostro IDS, IPS o Honeypot per inviare indirizzi IP malevoli al nostro broker MQTT.
Per fail2ban, questo può essere fatto con il client Mosquitto mosquitto_pub. Crea una nuova azione in /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>
E configura le tue jail di fail2ban per utilizzare l'azione vallumd.
I pacchetti generati con CPack supportano OpenRC, Upstart e systemd. I file di configurazione del servizio si trovano dove ti aspetteresti nella tua distribuzione:
Dopo aver modificato il file pertinente per la tua distribuzione, avvia il servizio vallumd proprio come faresti con qualsiasi altro servizio sul tuo sistema.
Vallumd utilizza syslog(3) per la registrazione.