CrowdSec - Eine brauchbare Möglichkeit zur Absicherung eines Servers/Dienstes?

Ich habe mich in den letzten Tagen etwas mit CrowdSec beschäftigt. Es ist eine Möglichkeit, präventiv gefährliche IP-Adressen zu sperren und soll schneller sein als fail2ban. Was ein Vorteil sein kann, ist auch ein potentieller Nachteil.

Was ist CrowdSec?

In deren Broschüre heißt es auf Seite 5:

This open source and lightweight software identifies malicious behavior and shares the related IP across the network, instantly protecting all users from the identified threat. Coded in Golang, it uses marginal resources and can be deployed in any environment — containers, onprem, cloud, or hybrid. CrowdSec provides its users with a hub of numerous analysis, detection, and remediation components to quickly and easily integrate the solution with the various elements of the security infrastructure.

Crowd heißt auf Deutsch Menge. Und das ist auch Programm. Server, auf denen CrowdSec verwendet wird, melden aggressive IP an CrowdSec. Diese werden in eine Liste aufgenommen, die wiederum an die Anwender verteilt wird. Somit profitieren alle Anwender den Erfahrungen aller. Um gefährliche IP-Adressen zu identifizieren, liest CrowdSec die entsprechenden Logs und wertet diese aus.

Vorteile

Durch die gemeinsame Sammlung von gefährlichen IP-Adressen ist das Blocken solcher schnell eingerichtet. Auch muss man selber keine Erfahrungen mehr sammeln. CrowdSec kann mit Firewalls zusammenarbeiten. Bei OPNSense bspw. werden die blockierten IP-Adressen durch den Bouncer übergeben und in einem Alias gespeichert. Die OPNSense übernimmt dann durch Regeln am WAN das Blockieren. Ebenso geht es auch mit den klassischen iptables/ufw. Auch stehen für verschiedene Anwendungen wie WordPress entsprechende Erweiterungen zur Verfügung.

Über die CLI lassen sich die blockierten IP etc. anzeigen. Bei Wunsch kann dies auch im Online-Dahsboard bei CrowdSec geschehen.

CrowdSec bietet zudem IP-Listen zum abonnieren an, mit denen Bots bspw. ausgesperrt werden können. Wahlweise werden diese geblockt oder müssen ein Captcha ausfüllen.

Nachteile

Der Vorteil ist zugleich auch ein Nachteil: Die Blockierliste wird von anderen gefüllt, man selbst hat darüber keine Kontrolle. Das ist bei Listen für DNS-Blocker aber ebenso. Man kann aber einzelne Adressen oder ganze Adressbereiche erlauben.

Logischerweise fallen bei der Nutzung des Dienstes auch Daten an, die nicht auf dem installierten Server verbleiben. Was sagt die Datenschutzerklärung?

The CrowdSec ecosystem identifies IP addresses involved in the occurrence of security incidents and keeps track of the context of this involvement. This information comes to it either directly from you (by connecting to its honeypots, etc.), from members of its ecosystem or from publicly available sources.

Die IP-Adressen erhält CrowdSec logischerweise von den Mitgliedern, die diese Software einsetzen. Zudem aus öffentlichen Listen und Honypots.

The type personal data processed by CrowdSec and the members of its ecosystem within the framework of the service provided, are only contextualized IP addresses (date, time, and type of security incident involved). No data directly nominative or allowing the direct identification of an individual is processed on this occasion and is not included in these lists.

Es werden dieser Aussage nach nur IP-Addressen und deren Datum, Uhrzeit und Art des Sicherheitsvorfalls gespeichert. CrowdSec gibt an, dass mittels dieser Daten keine Person direkt identifiziert werden könne.

Your data may be transmitted to the following recipients:

AWS
GCP
Firebase
Slack
Clickup

Only IP addresses that have carried out an attack are kept for a maximum of 3 months as such.

After 3 months, we implement procedures in order to keep the maximum amount of information necessary related to the attack while degrading the personal character of the stored information. Thus, we apply a first double filter, reducing the accuracy of the IP address to a set of 16 possible IPs (for IP v 4, with a similar mechanism for IP v 6) while rounding the timestamp in a window of 6 hours.

After 6 months, we apply a second filter that further reduces the accuracy of the stored information: the IP address is amalgamated into a set of 256 possible IP addresses, reducing the accuracy of the IP address to a set of 16 possible IPs (for IP v 4, with a similar mechanism for IP v 6) while rounding the timestamp in a 24-hour window.

Diese Passage gibt an, dass nur IP-Addressen, von denen ein Angriff erfolgte, gespeichert werden. Nach drei Monaten wird ein Verfahren angewendet, um die Daten länger zu speichern und dabei zugleich den persönlichen Charakter nicht zu beeinträchtigen. Gleiches wird nach sechs Monaten angewendet.

The distinction between a compromised machine and a machine whose owner is malicious. The dangerousness of an IP address is perishable information in the medium term: In many cases, a malicious IP address at a given time is in fact a machine that has been compromised and is used without the knowledge of its legitimate owner, until the latter is informed by a third party or becomes aware of the intrusion. […]

Die Daten werden gebraucht, um kompromittierte Rechner von böswilligen Besitzern zu unterscheiden. Nicht immer kommen Angriffe von einem Rechner, dessen Besitzer diesen Angriff auch ausführt.

[…] During a post-mortem analysis, being able to cross-reference event logs (i.e. server log files) with a history of attacks identified by source allows us to easily sort out false positives and false negatives.

Durch nachträgliche Analysen können false-positives besser erkannt werden.

Fragen

  1. Hattet ihr schon Kontakt mit CrowdSec? Wenn ja, wie sind eure Erfahrungen?
  2. Ist es ein gangbarer Weg, einen Server oder Dienst damit abzusichern?
  3. Seht ihr weitere Vorteile oder Nachteile?

Was ist „gefährlich“ für dich und „gefährlich“ für andere? Bei fail2ban hat man unmittelbar Einfluss auf die eigene Definition. Beispiel: Du selbst hantierst öfter mal mit Spielzeugen wie nmap. Deshalb baust Du was in fail2ban ein, damit Du dich nicht selber aussperrst. Wenn Du das mal vergisst, dann fütterst Du CrowdSec mit Deinen eigenen IP-Adressen.
Außerdem kann sich die „Crowd“ dazu entschliessen, Deine IP-Adressen doof zu finden und schon hast Du Deine eigenen Zugänge gesperrt. Man könnte CrowdSec auch zu DOS-Attacken benutzen.

Außerdem lese ich mal wieder doppelseufz eine eigene Definition, was IP-Adressen in Bezug auf personenbezogene Daten sein sollen. Die Verarbeitung von IP-Adressen wird von CrowdSec quasi verharmlost, indem man behauptet, dass man von der IP-Adresse nicht auf eine Person schliessen kann. Nun, die Rechtsprechung und zum Beispiel mein Provider sehen das anders. Alleine schon deshalb würde ICH CrowdSec nicht benutzen und lieber bei fail2ban bleiben.

Nachtrag: das bedeutet nicht, dass ich aus Datenschutzgründen CrowdSec nicht benutzen würde. Es zeigt aber einmal mehr, dass die Macher einer Software bei diesem Thema geschlampt haben. Die Begründung, warum man IP-Adressen speichert, kann aus meiner Sicht damit begründet werden, dass das Sicherheitsbedürfnis, einen potentiellen oder echten Angriff abzuwehen, höher eingestuft wird als das Persönlichkeitsrecht einzelner, dass ihre IP-Adressen nicht gespeichert werden. DAS hätte ich als Text erwartet und nicht „ja nee, IP-Adressen sind ja nicht mit Personen verknüpft“.

Dazu gibt es eine Whitelist, in der man seine IP-Adressen einträgt. Diese Datei liegt auf dem Server. Allerdings gibt es ein kleinen Haken: Bei meinem Test habe ich mich selbst ausgesperrt. Zwar ungewollt, aber so weiß ich auch dass der Dienst arbeitet. Mittels Konsole konnte ich die dazugehöroge Entscheidung von CrowdSec entfernen, was aber kein Erfolg brachte. Denn die Entscheidung ist auch online gespeichert. Und um diese dort zu entfernen, muss man ein zahlender Kunde sein. Das kostet aktuell 2500 Euro pro Monat. Heißt dann: 4h warten.

Wie das? CrowdSec blockiert Adressen oder schaltet, wenn man es so konfiguriert, einen Captcha vor.

Das sehe ich auch so, besonders bei false-positives brisant. Gerade dann, wenn private Computer für Angriffe zweckentfremdet werden.


Aktuell halte ich CrowdSec für ein interessantes Modell, was einen Vorsprung durch Gemeinwissen bietet. Aber dass man Entscheidungen, die von CrowdSec getroffen wurden, nicht sofort wieder aufheben kann ist ein (hoher) Preis. Es gibt wohl auch die Möglichkeit, ausschließlich die problematischen IP-Adressen von CrowdSec zu beziehen. Das werde ich mir auch mal anschauen, ob man dadurch mehr Kontrolle erhält. Zudem werden dann keine IPs an den Dienst gemeldet.

Damit meinte ich nicht den klassischen DOS-Angriff, wo man andere IP-Adressen mit Anfragen flutet, sondern dass man als Angreifer dafür sorgt, dass die IP-Adresse bei CrowdSec auf der Blacklist landet. Im Zusammenhang mit der „preisgünstigen“ Methode der Freischaltung ist das für mich auch DOS.