CrowdSec, the open-source & participative IPS.
In diesem Artikel zeigen wir Ihnen, wie Sie ihren Nextcloud Server auf Basis von Ubuntu 22/24.x oder Debian 12 durch den Einsatz eines IPS (Intrusion Prevention Systems) namens CrowdSec zusätzlich härten. Beginnen wir dafür zuerst mit den vorbereitenden Maßnahmen und der Installation der CrowdSec-Software selbst. Dazu wechseln Sie in den privilegierten Benutzermodus.
sudo -s
Richten Sie nun das Repository ein:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
Nur für Ubuntu 24:
sed -i 's/noble/jammy/' /etc/apt/sources.list.d/crowdsec_crowdsec.list
Ab hier geht es wieder sowohl für Denian als auch für Ubuntu 22/24.x weiter:
Im Anschluss daran lässt sich das IPS bereits installieren:
apt update
apt install crowdsec
Stellen wir nun den „Autostart“ der CrowdSec-Software sicher:
systemctl enable --now crowdsec.service
und überprüfen, ob CrowdSec gestartet und auf Autostart („enabled“) steht:
Um Konflikten mit fail2ban vorzubeugen stoppen und deaktivieren wir fail2ban:
systemctl stop fail2ban.service
systemctl disable fail2ban.service
systemctl mask fail2ban.service
Richten wir nun die Grundregeln des IPS ein um einen Grundschutz zu erhalten. Dazu installieren wir „crowdsec-firewall-bouncer-nftables“ nach:
apt install crowdsec-firewall-bouncer-nftables
und lassen uns die verfügbaren und verwendeten Regeln (Bouncer) anzeigen:
cscli bouncers list
Der Grundschutz ist nun gewährleistet und beinhaltet folgende Szenarien und Parser:
cscli scenarios list && cscli parser list
Um Ihren Cloudserver gegen NGINX- und Nextcloud-Attacken abzusichern fügen wir sowohl eine NGINX-, als auch eine Nextcloud-Collection hinzu:
cscli collections install crowdsecurity/nextcloud cscli collections install crowdsecurity/nginx cscli collections install crowdsecurity/sshd
Passen Sie nun den Pfad des Nextcloud-Logfiles für crowdsec an:
nano /etc/crowdsec/acquis.yaml
Fügen Sie am Ende der Datei folgende rot markierten Zeilen ein:
[...] --- filenames: - /var/log/nextcloud/nextcloud.log labels: type: Nextcloud ---
Um diese Erweiterungen wirksam werden zu lassen, führen wir noch diesen Befehl zum aktualisieren der Dienste aus:
systemctl reload crowdsec && systemctl restart crowdsec
Lassen Sie sich nun die Collections anzeigen und prüfen, ob Nextcloud (Name: nextcloud), NGINX (Name: nginx) und SSH (Name: sshd) mit dem Status „enabled“ dargestellt werden:
cscli collections list
Ein erneuter Blick auf die Szenarien und Parser zeigt uns zudem auch die neuen Erweiterungen an:
cscli scenarios list && cscli parser list
Ab sofort ist Ihr System auf Angriffe wie bspw. Bruteforce-, DDOS- und ähnliche Szenarien vorbereitet und sperrt „kritisch aufgefallene“ IP’s automatisch für 4 Stunden für den gesamten Server. Dabei werden u.a. Angriffe auf Nextcloud (logins, Bruteforce u.v.m.), SSH und NGINX analysiert und interpretiert! Um sich den aktuellen Stand gesperrter IP’s anzeigen zu lassen rufen Sie diesen Befehl auf:
cscli decision list
Um bspw. die exemplarisch gesperrte IP unter der ID 14563 entsperren zu können führen Sie diesen Befehl aus
cscli decision delete --id 14563
und lassen sich anschließend die Liste erneut ausgeben:
cscli decision list
Umgehend wird diese IP nicht mehr geblockt, der Eintrag für die exemplarische ID 14563 wurde gelöscht.
Prüfen Sie durch den Aufruf von
cscli metrics
ob und wie bspw. das Nextcloud Log interpretiert wird:
Wir hoffen Ihnen einen ersten Einblick in die Möglichkeiten von IPS / CrowdSec gegeben zu haben und wünschen Ihnen viel Spaß mit Ihrem gehärteten Server. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!