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-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 Attacken auf SSH, NGINX- und BigBlueButton vorzubereiten und abzusichern fügen wir eine nginx-Collection hinzu:
cscli collections install crowdsecurity/nginx
cscli collections install crowdsecurity/sshd
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!