„Es gibt keine 100 Prozent an Sicherheit!“, diesen Satz erzähle ich meinen Kund*innen immer und immer wieder. Er ist ja auch richtig, aber dennoch finde ich es wichtig, auch immer die Sicherheit mitzudenken und auch immer wieder Neues zu entdecken. Crowdsec zum Beispiel. Ich bin vor ein paar Wochen durch einen Kommentar auf Mastodon auf Crowdsec aufmerksam geworden und musste es dann auch gleich ausprobieren. Zum einen, weil ich mir nie sicher bin, ob meine Server wirklich schon sicher sind und zum anderen, weil ich glaube, dass der Ansatz von Crowdsec es ermöglicht, schnell auf Bedrohungen reagieren zu können.
Was ist Crowdsec überhaupt?
Crowdsec selbst beschreibt sich als Nachfolger von Fail2Ban, einem Programm, welches viele Serveradmins auf ihren Servern laufen lassen, um automatisiert IPs zu blockieren, die auf dem Server Dinge ausführen möchten, die der Server so nicht machen soll und die durch Fail2Ban-Regeln definiert sind. 3 Mal das falsche Passwort eingeben führt zu einer Blockierung von fünf Minuten, wäre zum Beispiel so eine Regel, die mit Fail2Ban umgesetzt werden kann. Klar, das ist eine stark vereinfachte Erklärung, aber sie trifft glaube ganz gut, was Fail2Ban macht.
Crowdsec funktioniert ähnlich. Auch hier werden Regeln erstellt, die zu einem automatischen Block der IP-Adresse führen, hinzu kommt aber die kollaborative Ebene von Crowdsec. Es ist nicht nur einfach ein Nachbau von Fail2Ban, sondern es soll so ein Netzwerk entstehen, wo jeder den anderen hilft, seinen Server zu schützen. Grundlage ist hier eine Datenbank mit IP-Adressen, von denen Angriffe auf Server ausgingen, auf denen Crowdsec läuft und die mit der Community geteilt werden, was dann auch auf anderen Servern, die Crowdsec einsetzen, zu einem Bann führen kann. Genau das hat mich überzeugt! Natürlich gibt es auch schon andere Projekte, wo IP-Adressen mit schlechter Reputation gesammelt werden – HoneyPot zum Beispiel – aber Crowdsec kann hier meiner Meinung nach schneller reagieren, wenn es viele Serveradmins gibt, die Crowdsec auf ihren Server installieren und betreiben.
Wie du vielleicht weißt, schützt CrowdSec nicht nur Dienste im Stil von fail2ban. Es kann auch Webseiten vor L7-DDoS-Angriffen und Bot-Scalping/Scraping schützen. Es kann sogar AWS-Buckets vor unbefugtem Zugriff und Datenexfiltration schützen… und vieles mehr. Die Herausforderung bei CrowdSec besteht sehr darin, die richtige Idee zu bekommen
Ja, auch diese Beschreibung ist jetzt stark vereinfacht, ich beschäftige mich auch erst seit ein paar Wochen mit Crowdsec und mein Hauptaugenmerk lag erst einmal darauf, dieses auf meinem Server zum Laufen zu bringen. Eine bessere Beschreibung kann ich mir jetzt in den nächsten Wochen überlegen!
Muss ich haben!
Wie schon erwähnt, ich wurde auf das Projekt durch einen Post auf Mastodon aufmerksam und nachdem ich kurz gelesen habe, worum es geht, wollte ich es unbedingt haben. Installiert war es auch relativ schnell, doch wie es so ist, es gibt dann immer ein paar Kleinigkeiten, die noch angepasst werden müssen. Doch als Erstes habe ich erst einmal beobachtet, was Crowdsec so erkennt, nachdem die Installation fertig war und doch, es erkannte sofort einiges, auch ab und zu die eigene Server-IP, was ich natürlich gleich erst einmal ändern musste.
Nachdem mir gefallen hatte, was ich sah, wollte ich das Ganze natürlich auch so einstellen, dass es auch automatisch blockt, wenn da Aktivitäten sind, die so nicht gewollt sind. Die Regeln dafür gibt es auf Crowdsec und zusätzlich natürlich auch die Werkzeuge, die dann die zu blockenden IPs direkt an die Firewall übergeben. Hier sei noch erwähnt, dass natürlich auch jeder selbst solche Regeln schreiben und diese – wenn gewollt – auch mit der Community teilen kann.
Das Einrichten der Bouncer – das sind die Teile, die dann zum Beispiel die IP-Adressen zum Blocken an die Firewall übergeben – hat mich dann jetzt die letzte Woche ein wenig beschäftigt. Wobei das eigentliche Problem – nämlich dass die Plesk-Firewall die Regeln für den Bouncer löscht, sobald etwas an der Plesk-Firewall geändert wird – konnte ich relativ schnell mit einem kleinen Script beheben, doch dann wollte ich mehr und das hat mich die letzte Woche dann beschäftigt.
Denn ich wollte gleichzeitig noch eine zweite Blacklist, in der ich IP-Adressen dauerhaft blocke. Habe ich vorher mit der Plesk-Firewall gemacht, aber das war die Faulheit und nicht die schönste Lösung. Da ich aber jetzt eh dran war, habe ich mir auch dafür gleich ein Script gebaut, welches a.) regelmäßig prüft, ob die Blacklists noch vorhanden sind, b.) ob diese noch in den Firewallregeln stehen und c.) alles wieder herstellt, wenn dem nicht der Fall ist. Das Script prüft ebenso, ob der Firewall-Bouncer von Crowdsec noch aktiv ist.
Und ja, gestern – am Sonntag – bin ich damit endlich fertig geworden. Ich habe noch ein wenig was über Cron gelernt, bin ein wenig tiefer ins Bash-Scripting eingestiegen und bin jetzt ziemlich stolz darüber, dass ich das, was ich mir vorgestellt hatte, auch umsetzen konnte. Schon allein die Dinge, die ich wieder gelernt habe, die mir den Horizont ein wenig erweitert haben, waren es wert, sich mit Crowdsec auseinander zu setzen und wenn dadurch jetzt auch die Sicherheit meines Servers gesteigert wird, dann ist das eine Nutzenoptimierung, an die ich vor ein paar Wochen noch gar nicht gedacht habe.
Also Leute, immer offen sein für Neues, immer schauen, wo ihr Dinge vielleicht noch verbessern könnt, gerade im IT-Bereich ist das wichtig, aber auch für ein gesundes Netzwerk im Kopf (Gehirn), ist es wichtig, sich immer mal wieder neuen Herausforderungen zu stellen.