
IPset-Blacklists zentralisieren oder verteilen
Dieses Programm ermöglicht es Ihnen, IP-Blacklists zu zentralisieren und zu verteilen.
Wenn Sie einen Server im Internet betreiben, sind Sie sehr wahrscheinlich schon auf einen oder mehrere Brute-Force-Angriffe gestoßen. Kein Problem, installieren Sie einfach fail2ban. Erledigt.
Aber wenn Sie mehrere Server betreiben und jeder seine eigene fail2ban-Instanz laufen hat, haben alle unterschiedliche IP-Adressen in der Sperrliste. Wäre es nicht schön, eine gemeinsame Sperrliste für alle Ihre fail2ban-Instanzen zu haben? Oder falls alle Ihre Maschinen hinter einem Router oder einer Firewall stehen, die Sie selbst verwalten, wäre es nicht schön, bösartigen Datenverkehr am Rand Ihres Netzwerks abzuweisen?
Genau das hilft vallumd zu erreichen.
Vallumd verbindet sich mit einem MQTT-Broker, liest Nachrichten, die IP-Adressen enthalten, und fügt diese IP-Adressen einem ipset hinzu oder löscht sie daraus. So einfach ist das.
Das bedeutet, dass es allein nicht nützlich ist, aber es macht vallumd sehr flexibel. Sie können selbst entscheiden, welche Art von iptables-Regel auf das ipset verweisen soll. Die Integration mit fail2ban ist so einfach wie das Erstellen einer neuen Aktion, die mosquitto_pub verwendet, um eine Nachricht an Ihren MQTT-Broker zu senden. Und da es MQTT-Bibliotheken für die gängigsten Sprachen gibt, sollte es nicht allzu schwierig sein, es in Ihr bevorzugtes IDS, IPS oder Honeypot zu integrieren.
Der Name vallumd stammt vom lateinischen Wort „vallum“, das Mauer bedeutet. Und genau das tut vallumd: Es baut eine Mauer, um Ihr digitales Reich zu schützen.
Der schönste Weg, ein Paket zu installieren, ist die Verwendung der Paketverwaltung Ihrer Distribution. Da dieses Projekt jedoch noch sehr jung ist, wurde es noch nicht in viele Distributionen aufgenommen.
Ein Paket, das dem git-Master-Branch folgt, ist im AUR verfügbar.
Stellen Sie sicher, dass das EPEL-Repository aktiviert ist.
sudo yum -y install cmake3 ipset-devel mosquitto-devel openssl-devel pkgconfig '@Development Tools'
Sie können nun ein RPM-Paket mit cpack erstellen:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake3 .
cpack3 -G RPM
sudo yum -y localinstall build/*.rpm
Build-getestet auf CentOS 7.
Sie können ein DEB-Paket mit cpack erstellen:
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
Build-getestet auf Debian 10, 11, 12, 13 und Ubuntu 18.04, 20.04, 22.04, 24.04.
Sie finden ein Live-Ebuild für vallumd in meinem Gentoo-Overlay
Wenn Sie einen OpenWrt-DD-Snapshot oder LEDE betreiben, ist vallumd im Paket-Feed verfügbar und kann mit opkg installiert werden:
opkg update
opkg install vallumd
Die manuelle Installation ist sehr einfach. Erforderlich:
Anleitung:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
make
make install
Um vallumd zu verwenden, benötigen Sie einen MQTT-Broker wie Mosquitto. Je nach Einrichtung können Sie ihn auf demselben Host ausführen, der vallumd ausführt, aber das ist keine Voraussetzung.
Das nächste, was Sie benötigen, ist ein IPset. Um Ihnen die volle Kontrolle über den Typ des Ipsets und seine Optionen zu geben, erstellt vallumd das IPset nicht selbst. Sie können zwischen diesen IPset-Typen wählen:
Beispiel zur Erstellung eines Ipsets:
ipset create blacklist hash:ip timeout 3600
Jetzt können Sie vallumd starten. Folgende Befehlszeilenoptionen existieren:
-h: MQTT host to connect to
-p: MQTT port to connect to (1883)
-u: MQTT username
-P: MQTT password
-t: MQTT topic and IPset name
-V: print version number and exit
-c: path to CA file
-T: use TLS
Die Optionen Host und Thema sind erforderlich, die anderen sind optional (Standardwert). Es ist möglich, mehrere Themen anzugeben.
Starten von vallumd:
vallumd -h 192.168.0.1 -t blacklist
Dies wird auf Nachrichten auf dem MQTT-Broker unter 192.168.0.1 im Thema blacklist lauschen, und wenn eine Nachricht empfangen wird, wird die IP-Adresse in der Nachricht dem IPset namens blacklist hinzugefügt oder daraus entfernt.
Jetzt haben wir alles bereit, um mit dem Hinzufügen von IPs zur schwarzen Liste zu beginnen. Wir müssen nur noch unser IDS, IPS oder Honeypot so konfigurieren, dass es bösartige IP-Adressen an unseren MQTT-Broker sendet.
Für fail2ban könnte dies mit dem Mosquitto-Client mosquitto_pub erfolgen. Erstellen Sie eine neue Aktion 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>
Und konfigurieren Sie Ihre fail2ban-Jails, um die vallumd-Aktion zu verwenden.
Die mit CPack generierten Pakete unterstützen OpenRC, Upstart und systemd. Dienstkonfigurationsdateien befinden sich dort, wo Sie sie in Ihrer Distribution erwarten:
Nachdem Sie die für Ihre Distribution relevante Datei bearbeitet haben, starten Sie den vallumd-Dienst genauso wie jeden anderen Dienst auf Ihrem System.
Vallumd verwendet syslog(3) zur Protokollierung.