CrowdSec, the open-source & participative IPS.

In diesem Artikel zeigen wir Ihnen, wie Sie ihren BigBlueButton Server auf Basis von Ubuntu oder Debian 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

Im Anschluss daran lässt sich das IPS bereits installieren:

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-iptables“ nach:

apt install crowdsec-firewall-bouncer-iptables

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 Attacken auf SSH, NGINX- und BigBlueButton vorzubereiten und abzusichern fügen wir eine nginx-Collection hinzu:

cscli collections install crowdsecurity/nginx

Passen Sie nun die Pfade der relevanten Logfiles für crowdsec an:

nano /etc/crowdsec/acquis.yaml

Stellen Sie dafür sicher, dass die rot markierten Zeilen enthalten sind und ergänzen diese, sofern diese noch nicht enthalten sind:

[...]
#Generated acquisition file - wizard.sh (service: nginx) / files : /var/log/nginx/bigbluebutton.access.log /var/log/nginx/error.log /var/log/nginx/access.log
filenames:
  - /var/log/nginx/bigbluebutton.access.log
  - /var/log/nginx/error.log
  - /var/log/nginx/access.log
  - /var/log/bbb-webrtc-sfu/bbb-webrtc-sfu.log
  - /var/log/bigbluebutton/bbb-web.log
  - /var/log/nginx/html5-client.log
labels:
  type: nginx
---
[...]

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 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 BigBlueButton, 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.

Durch den Aufruf von

cscli metrics

können Sie sich einen Überblick der überprüften Logdateien verschaffen. Alle Dateien werden zuerst eingelesen und verarbeitet, wodruch es lange dauern kann, ehe alle Logdateien angezeigt werden!

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!