Kontakt

Carsten Rieger IT Services
Am Danglfeld 8 | 83132 Pittenhart
Telefon: 08624.9009794
E-Mail: info@c-rieger.de

Intrusion Prevention System (IPS) für Nextcloud

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
sed -i 's/noble/jammy/' /etc/apt/sources.list.d/crowdsec_crowdsec.list

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!