wer mehrere dienste auf unterschiedlichen Server in einem Netzwerk hat, die auch Öffentlich zugänglich sind, kann diese alle ganz leicht mit Crowdsec absichern und an zentraler stelle z.b. einer OPNsense die Sperrung vornehmen lassen von bösen Aktivitäten.
– auf der OPNsense ( LAPI ) –
als erstes Crowdsec auf der OPNsense installieren über die Plugins
System → Firmware → Erweiterungen
os-crowdsec suchen und installieren
jetzt muss noch die Crowdsec Konfiguration angepasst werden, die IP von der OPNsense anpassen oder 0.0.0.0 wen auf allen Schnittstellen erreichbar sein soll
/usr/local/etc/crowdsec/config.yaml
api:
server:
listen_uri: 10.0.0.1:8080
/usr/local/etc/crowdsec/local_api_credentials.yaml
IP anpassen
url: http://10.0.0.1:8080/
Crowdsec neustarten
– auf den Client ( Log Processors ) –
jetzt Crowdsec auf z.b. client 1 und client 2 installieren, z.b. Debian/Ubuntu
curl -s https://install.crowdsec.net | sudo sh
apt install crowdsec
anschließend die Verbindung zur OPNsense LAPI herstellen
cscli lapi register -u http://10.0.0.1:8080
auf dem Client die lokale API deaktivieren da wir ja die OPNsense LAPI nutzen wollen
/etc/crowdsec/config.yaml
api:
server:
enable: false
der dienst muss jetzt angepasst werden
cp /lib/systemd/system/crowdsec.service /etc/systemd/system/crowdsec.service
datei anpassen und -no-api hinzufügen
/etc/systemd/system/crowdsec.service
[Unit]
Description=Crowdsec agent
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=notify
Environment=LC_ALL=C LANG=C
PIDFile=/var/run/crowdsec.pid
ExecStartPre=/usr/bin/crowdsec -c /etc/crowdsec/config.yaml -t
ExecStart=/usr/bin/crowdsec -c /etc/crowdsec/config.yaml -no-api
#ExecStartPost=/bin/sleep 0.1
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
anschließend den dienst neu laden und neustarten
systemctl daemon-reload
systemctl restart crowdsec
– auf der OPNsense ( LAPI ) –
jetzt auf der OPNsense die Client validieren in der Konsole, dazu folgenden befehl eingeben
cscli machines list
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
NAME IP ADDRESS LAST UPDATE STATUS VERSION
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
dc6f34b3a4994700a2e333df43728701D0iARTSQ6dxiwyMR 10.0.0.1 2024-11-17T20:22:19Z ✔️ v1.6.3-4851945a-freebsd
9f3602d1c9244f02b0d6fd2e92933e75zLVg8zSRkyANxHbC 10.0.0.3 2024-11-17T20:24:12Z 🚫
ac86209e6f9c4d7d8de43e2ea31fe28ebvde0vWDr46Mpd3L 10.0.0.2 2024-11-17T20:22:28Z 🚫
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
in diesem Beispiel haben wir 2 Client hinzugefügt mit der IP 10.0.0.2 und 10.0.0.3 jetzt müssen wir die Client Validieren
cscli machines validate 9f3602d1c9244f02b0d6fd2e92933e75zLVg8zSRkyANxHbC
cscli machines validate ac86209e6f9c4d7d8de43e2ea31fe28ebvde0vWDr46Mpd3L
– auf den Client ( Log Processors ) –
anschließend müssen die Client Crowdsec neustarten
systemctl restart crowdsec
– auf der OPNsense (LAPI) –
jetzt müssen noch API Token für die Client erstellt werden auf der OPNsense
cscli bouncers add client-1
Api key for 'client-1':
02954e85c72cf442a4dee357f0ca5a7c
Please keep this key since you will not be able to retrive it!
cscli bouncers add client-2
Api key for 'client-2':
3b1030ce0840c343eecd387ac5a3a614
Please keep this key since you will not be able to retrieve it!
– auf den Client ( Log Processors ) –
anschließend auf Client 1 und 2 den Bouncer installieren
apt install crowdsec-firewall-bouncer-iptables
jetzt müssen wir die Bouncer yaml anpassen und die OPNsense LAPI IP hinzufügen und den Key der zuvor für die Client generiert wurde
Client 1
/etc/crowdsec/cs-firewall-bouncer/cs-firewall-bouncer.yaml
api_url: http://10.0.0.1:8080/
api_key: 02954e85c72cf442a4dee357f0ca5a7c
Client 2
/etc/crowdsec/cs-firewall-bouncer/cs-firewall-bouncer.yaml
api_url: http://10.0.0.1:8080/
api_key: 3b1030ce0840c343eecd387ac5a3a614
anschließend auf beiden Client den Bouncer neustarten
systemctl restart crowdsec-firewall-bouncer
wer noch möchte kann auf dem Client ein kosmetischen schritt machen und die bei der Installation angelegten lokalen API und Bouncer entfernen da wir ja jetzt beides extern benutzen also auf der OPNsense
cscli machines list
cscli bouncer list
und z.b. je nach dem was in der Ausgabe für einen Namen seht
cscli machines delete dedc853cde8b4118a153488cc91bb0edb6wrUz9CSq4t4bbc
cscli bouncers delete cs-firewall-bouncer-1704563299
noch einmal abschließend alles neustarten
systemctl restart crowdsec-firewall-bouncer
systemctl restart crowdsec
– auf der OPNsense ( LAPI ) –
in der OPNsense unter Dienste und Crowdsec → überblick kann man noch einmal Prüfen unter dem Reiter Machines und Bouncer ob auch die Client dort eingetragen sind und ob Last update und Last API Pull auch funktioniert, im Normalfall werden alle paar Sekunden Updates gemacht, wen ein Client mehrere Minuten kein update schickt, scheint etwas mit der Verbindung nicht zu stimmen
jetzt werden die Client ihre verdächtigen zugriffe an die OPNsense melden und dort sperren lassen