
Schutz unserer Maschinen mit Crowdsec – Teil I
Seien Sie vorsichtig, dies ist die… Es tut mir leid, Aber es ist wahr… Für alle, die es noch nicht kennen, In einer Reihe von Beiträgen möchte ich einige der Wunder von Crowdsec zeigen und zeigen, wie wir unsere Infrastruktur vor Angriffen oder unsachgemäßem Zugriff schützen können.
Bevor Sie anfangen, das Produkt als solches zu beschreiben, seiner Architektur… Fangen wir an zu denken, dass ich ein glücklicher fail2ban-Benutzer war, bis ich Crowdsec entdeckte. Es stellt sich heraus, dass Crowdsec, ist ein IDS und ein IPS, Erkennt und blockiert den Zugriff auf Maschinen, Es ist mir egal, ob es sich um einen Rechner in einem LAN handelt, als eine im Internet veröffentlichte Dienstleistung, ein Linux sein, Fenster oder Container. Crowdsec, wenn ein DDoS-Angriff erkannt wird, einen Port-Scan, Ein Schwachstellen-Scan, oder einfach falsche Zugriffe (Zu dieser Website, wenn es sich um eine Website handelt, zu diesem RDP, wenn es sich um ein Windows-Programm handelt, SSH (englisch), CIFS…). Crowdsec erkennt diesen unrechtmäßigen Zugriff und ergreift eine Maßnahme, Das Normalste, Lass ihn sperren, wie? naja, unter anderem von der OS-eigenen Firewall (Fenster, Linux (Englisch)…). Daher erstellt Crowdsec eine Regel in der FW des Betriebssystems, um diese Quell-IP zu blockieren. Außerdem, Offensichtlich, Crowdsec wird auch die Protokolle unserer Apps lesen, Dienste… und basierend auf dem, was ich sehe, Handeln, Achtung Angreifer.
Brunnen, Wenn das nur so wäre, Ich habe dir nicht gesagt, dass es die, Noch, Noch… Crowdsec ist freie Software, die einen kommerziellen Teil hat, wenn Sie möchten, und den wir in dieser Reihe von Beiträgen nicht sehen werden, Was wir in dieser Serie sehen werden, wird also ganz offen sein. Gesamt, dass Crowdsec Verhaltensweisen erkennt, Reputationsbasiertes und Bedrohungsmanagement, aber es hat auch eine schwarze Liste für öffentliche IP-Adressen, geteilt und gepflegt von uns allen, die Crowdsec nutzen; Wenn es also eine Mehrheit gibt, die eine Bedrohung erkennt, Wir werden alle gewarnt und vorgewarnt werden!
Warte, wir sind noch nicht fertig, Es stellt sich heraus, dass Crowdsec, wie gesagt, unter Windows installiert werden kann, macOS (Englisch), Linux (Englisch), Kubernetes (Englisch), Hafenarbeiter, OpenWRT… naja, dank der Crowdsec API, Unsere Maschinen werden auch in der Lage sein, eine Blacklist von IPs miteinander zu teilen. Das heißt, dass, wenn mich jemand angreift, eine Maschine, Der Rest blockiert Ihren Zugriff, bevor Sie es versuchen, neugierig… Brunnen, Crowdsec erkennt tatsächlich und den "Türsteher"’ Handeln (Dann kommen wir dazu).
Es gibt noch viel mehr zu tun, Wir werden es nach und nach sehen, Was wäre, wenn Benachrichtigungen per Telegram, die Webkonsole, die Sie haben, die sich in Prometheus integrieren lässt, Grafana… Aber, Möchten Sie wissen, was meiner Meinung nach das Kurioseste von allen ist?? Vielleicht denkst du, dass das Blödsinn ist, Für mich ist es die Bombe. Aufmerksam!!! denn es ist, dass, wenn wir eine Unternehmens-Firewall im Unternehmen haben, Ein echter Perimeter, ein Fortigate zum Beispiel, ein pfSense… Wir können diese Firewalls auch von diesen Blacklists füttern lassen! Oh! Und haben Sie Regeln in unseren Firewalls (Zu allem Überfluss) die anderen Rechnern den Zugriff auf diese schwarzen IPs verweigern, Netzwerk-Segmente… Oh mein Gott!
Es ist leicht, modulieren, Einfach einzurichten… Brunnen, Fangen wir an, weil ich viel 😉 rede
In diesem ersten Beitrag werden wir es wissen: So installieren Sie Crowdsec unter Linux, Die grundlegenden Befehle, So installieren Sie Crowdsec auf einem Windows, Verwenden der Konsole, Wir machen einen Testangriff und schließlich, wie man Alarme per Telegram verwaltet. So gut wie nichts.
In anderen Beiträgen werden wir sehen, wie man eine Multi-Server-Installation durchführt, Das ist, dass unsere Maschinen Informationen austauschen, oder integrieren Sie es in unsere Fortigate-Firewall…
Es erübrigt sich, das offizielle Dokument zu empfehlen: https://docs.crowdsec.net
Installieren Sie Crowdsec unter Linux
Die Installation ist sehr einfach, Beginnen wir mit einem Beispiel, das wir schützen möchten, um ein Nginx zu schützen, das auf einem Ubuntu läuft, Wir installieren mit:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo Bash sudo apt install crowdsec -y ... INFO[11/12/2022:04:24:15 NACHMITTAGS] crowdsec_wizard: Installing collection 'crowdsecurity/linux' INFO[11/12/2022:04:24:21 NACHMITTAGS] crowdsec_wizard: Installing collection 'crowdsecurity/nginx' INFO[11/12/2022:04:24:24 NACHMITTAGS] crowdsec_wizard: Installing collection 'crowdsecurity/sshd' ...
Wie wir sehen können, bei der Installation des Crowdsec-Agenten für Linux, erkennt, dass wir SSHd- und Nginx-Dienste haben, und damit automatisch und ohne weiteres Zutun, Anomalien werden bereits erkannt.
Als nächstes kommt es weiter, wenn wir eine Aktion zum Sperren der Quell-IP-Adressen wünschen, da wir eine Firewall auf dem Betriebssystem installieren und installieren müssen, dass es normalerweise jeder mitbringt, Wir verstehen, dass wir iptables verwenden, Es würde auch NFTables unterstützen, Ipset oder P, hängt von unserem Betriebssystem ab. Und wir installieren den entsprechenden Türsteher:
sudo apt install crowdsec-firewall-bouncer-iptables -y
Nun, im Prinzip wäre es jetzt soweit, Geschützt durch die Maschine! 🙂 Nimm es jetzt! Lassen Sie uns nun den gleichen Vorgang auf einem Windows durchführen, um die Ähnlichkeiten zu erkennen, Und dann folgen wir ausführlicher, vielleicht den interessantesten Befehlen, Wir werden über die API sprechen… Es stimmt, dass wir noch andere Details haben, dass wir sehen werden.
Installieren Sie Crowdsec unter Windows
Was ich gesagt habe, Wir machen die gleiche Übung, Installieren Sie Crowdsec auf einem Windows-Rechner, mit dem Ziel, sie zu schützen. Und wenn jemand versucht, per RDP zuzugreifen und dabei das falsche Passwort eingibt (Vorgabe 5 mal) Nun, verbannen Sie ihn, oder durch CIFS, Oder was auch immer Sie wollen, Lassen Sie einen Scan 😉 durchführen
Zuallererst, Laden Sie die .NET Runtime-Anforderung herunter und installieren Sie sie.: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-6.0.11-windows-x64-installer (oder eine höhere Version, Es kommt darauf an, wann Sie dies lesen).
Und wir können fortfahren, Wir haben das MSI-Installationsprogramm von https://github.com/crowdsecurity/crowdsec/releases/
“Folgende”,
“Ja Liebling”,
“Ja”,
Wir warten ein paar Sekunden, während es installiert wird…
Und fertig! Wir haben Crowdsec bereits installiert!
Aber Vorsicht, wir sind noch nicht fertig, Ebenso wird Crowdsec dies erkennen, aber nicht in der Lage sein, Aktionen auszuführen, Dazu benötigen wir den Bouncer für die Windows-Firewall. Also, Wir laden es herunter und installieren es: https://github.com/crowdsecurity/cs-windows-firewall-bouncer/releases
“Installieren”,
…
Und jetzt ist es soweit. Geschützter Windows-PC!
Testangriff durchführen
Zuallererst, Warum überprüfen wir nicht, ob dies funktioniert?? So sehen wir einige erste erste Befehle. Nichts, Sehr einfach, furchtlos, Wie man es testet?
Nun, der Windows-Computer selbst versucht, Sie zu validieren 5 mal mit falschen Zugangsdaten durch RDP (Remote-Desktop), oder über CIFS und einen freigegebenen Ordner… Wenn Sie möchten, verkomplizieren Sie es und führen einen Port-Scan durch, oder Schwachstellen… Sie werden sehen, wie der Windows-Rechner Sie blockiert.
Es wird eine Regel in der nativen Firewall mit einer Ausnahme erstellt, die jeglichen Zugriff von dieser bösartigen IP verweigert.
Und das Linux-Team, wenn es zum Beispiel eine Nginx trägt, wie es im vorherigen Fall der Fall war, Nun, wir können Nikto herunterladen, einen Webserver-Scanner, und wir prüfen, ob es erkannt wird:
git clone https://github.com/sullo/nikto cd nikto/program git checkout nikto-2.5.0 ./nikto.pl -h https://XXX.XXX.XXX.XXX
Danach das Gleiche, Der Linux-Rechner verweigert uns sofort den Zugriff, mit einer Ausnahme in der Firewall.
Grundlegende Befehle
Als Entschuldigung gehen wir zum nächsten Punkt des Dokuments über, Mindestbefehle, die uns interessieren könnten (Wir werden später mehr wissen):
Liste der Sperren oder Sperren anzeigen:
sudo CSCLI Entscheidungsliste
Und das wird uns wieder sagen, dass es keine Verbote gibt, Wenn wir den Test nicht gemacht hätten.
Oder dass es einen Block erkannt hat und uns seine IP anzeigt, Ihr Grund, Zeit blockieren…
Manuelles Sperren einer IP:
sudo cscli decisions add --ip DIRECCIÓN_IP --reason "Beschreibung"
Deban, oder entsperren Sie eine IP-Adresse:
Sudo cscli Entscheidungen löschen --IP DIRECCIÓN_IP
Con 'sudo cscli alerts list’ Wir sehen die Warnungen, die ausgelöst wurden, con 'sudo cscli alerts inspect ID’ Wir hätten mehr Details zu jeder Warnung.
Con 'sudo /usr/share/crowdsec/wizard.sh -c’ Wir können die Überwachung von Diensten mit Crowdsec aktivieren/deaktivieren.
In dieser Datei '/etc/crowdsec/parsers/s02-enrich/whitelists.yaml’ Wir haben die Möglichkeit, eine Maschine auszuschließen und auf die Whitelist zu setzen, Standardmäßig bringt es 3 Ausgeschlossene Bereiche und wenn Sie vom Testangriff nicht entdeckt wurden, Vielleicht schießen 😉 Sie hier herum
Name: Crowdsecurity/Whitelists Beschreibung: "Whitelist-Ereignisse von privaten IPv4-Adressen"
Weiße Liste:
Grund: "Private IPv4/IPv6 IP/Bereiche"
IP:
- "127.0.0.1"
- "::1"
CIDR:
#- "192.168.0.0/16"
#- "10.0.0.0/8"
- "172.16.0.0/12"
# Ausdruck:
# - "'foo.com' in evt.Meta.source_ip.reverse"
Telegramm-Benachrichtigungen
Nun, an diesem letzten und einem weiteren Tag geht es weiter, dass es viel zu sehen und zu erzählen 🙂 gibt Standardmäßig und ohne Telegram durcheinander zu bringen, könnten wir Benachrichtigungen an Slack senden, Splunk, E-Mail…
Wir bearbeiten die Profildatei '/etc/crowdsec/profiles.yaml.’ Und wir kommentieren diese nicht mehr 2 Linien:
Benachrichtigungen: - http_default
Wir bearbeiten, wie es in '/etc/crowdsec/notifications/http.yaml steht.’ So etwas zu bleiben, Wir müssen berücksichtigen, dass wir die ID der Telegram-Gruppe und des Tokens ändern:
Art: HTTP-Name: http_default log_level: Info-Format: | { "chat_id": "-ID_CHAT_TELEGRAM", "Text": " {{Bereich . -}} {{$Wachsam := . -}} {{Bereich. Entscheidungen -}} {{.Wert}} wird bekommen {{.Art}} für die nächste {{.Dauer}} zum Auslösen {{.Szenario}}.\rn https://www.shodan.io/host/{{.Wert}} {{Ende -}} {{Ende -}} " } URL (Englisch): https://api.telegram.org/botTOKEN/sendMessage Methode: POST-Kopfzeilen: Inhaltstyp: "application/json"
Wie gewöhnlich, alle Änderungen, die Sie vornehmen müssen, um den Crowdsec-Dienst neu zu starten:
sudo systemctl restart crowdsec
Et voilà!! Telegrammnachrichten kommen sofort an!
Kommen, An einem weiteren Tag geht es weiter, Das geht in die Hölle, Wir lassen viel zu sehen übrig, Wir müssen über mehr Befehle sprechen, API, über ihr Dashboard oder ihre Webkonsole, von der ich Ihnen gesagt habe, dass wir sie sehen würden, Aber bitte… Das ist sehr lang: Wir 🙂 müssen alle unsere Agenten dazu bringen, miteinander zu reden, (wenn es von Interesse sein sollte), Der Teil der Integration in unsere Perimeter-Firewalls… Siehe den Prometheus-Teil, Grafana…
Brunnen, Ich hoffe, es ist eine interessante Lösung, dass ich sicher bin, dass viele von uns Dienste ohne diesen Schutz im Internet veröffentlicht haben. Oder warum nicht, Implementieren Sie es auf den internen Rechnern unserer Organisation, zwischen ihnen bilden sie ein Netz und schützen sich gegenseitig…
Brunnen, Was für eine große Umarmung!