CrowdSec – Intelligenter Linux-Server-Schutz vor Botnetzen, Brute-Force-Angriffen und Internet-Scans

Wenn Sie einen Linux-Server mit Nginx, SSH oder WordPress betreiben, kennen Sie wahrscheinlich bereits Fail2Ban. Es ist ein gutes Tool, arbeitet jedoch lokal — es blockiert nur IP-Adressen, die Ihren Server angegriffen haben.

CrowdSec funktioniert völlig anders. Es handelt sich um ein Sicherheitssystem, das auf gemeinsamer IP-Reputation basiert. Wenn tausende Server weltweit eine angreifende IP-Adresse erkennen, kann Ihr Server diese blockieren, bevor überhaupt ein Angriff erfolgt.

Wie funktioniert CrowdSec?

  • analysiert Systemlogs (nginx, ssh, wordpress)
  • erkennt verdächtiges Verhalten
  • tauscht Informationen über angreifende IP-Adressen mit anderen Servern aus
  • blockiert den Datenverkehr auf Firewall-Ebene

Das Ergebnis? Die meisten Bots und Internet-Scanner erreichen Ihren Nginx-Server gar nicht erst.

Installation von CrowdSec auf Debian / Ubuntu

Die Installation von CrowdSec ist sehr einfach und direkt über die Debian-Repositories verfügbar.

Während der Installation führt CrowdSec automatisch folgende Schritte aus:

  • erstellt eine lokale API (LAPI)
  • registriert den Server in der CrowdSec Central API
  • lädt grundlegende Sicherheitsszenarien herunter

Installation des Firewall-Bouncers

CrowdSec erkennt Bedrohungen, benötigt jedoch eine ausführende Komponente — den sogenannten Bouncer, der den Datenverkehr in der Firewall blockiert.

Standardmäßig verwendet der Bouncer nftables und fügt automatisch Regeln zum Blockieren schädlicher IP-Adressen hinzu.

Installation der Sicherheitskollektionen

Kollektionen enthalten Log-Parser sowie Angriffserkennungs-Szenarien.

Laden Sie anschließend die Konfiguration neu:

Konfiguration der Nginx-Logs

Damit CrowdSec den HTTP-Verkehr analysieren kann, müssen die Nginx-Logdateien angegeben werden.

Datei bearbeiten:

Folgende Konfiguration hinzufügen:

Anschließend den Dienst neu starten:

Überprüfung der CrowdSec-Funktion

Dienststatus:

Liste aktiver Sperren:

Systemmetriken:

Endergebnis

Nach einer korrekten CrowdSec-Installation:

  • blockiert der Server automatisch bekannte Botnetze
  • werden WordPress- und SSH-Brute-Force-Angriffe bereits auf Firewall-Ebene gestoppt
  • muss Nginx deutlich weniger schädlichen Traffic verarbeiten
  • werden CPU- und IO-Ressourcen spürbar entlastet

CrowdSec kann als Weiterentwicklung von Fail2Ban betrachtet werden — ein System, das nicht nur lokal reagiert, sondern globale Bedrohungsinformationen nutzt.

Fail2Ban: Wie man Wiederholungstäter erkennt und für eine Woche sperrt (Recidive)


Wenn du Fail2Ban zusammen mit Nginx und WordPress verwendest, wirst du früher oder später eine Sache bemerken: dieselben IP-Adressen kommen immer wieder zurück. Sie werden für einige Minuten oder eine Stunde gebannt, verschwinden … und versuchen kurz darauf erneut /.env, /wp-login.php, /phpmyadmin oder andere bekannte Angriffs-Pfade.

Die Lösung besteht nicht darin, die Filter aggressiver einzustellen. Die Lösung ist recidive — eine zweite Schutzebene in Fail2Ban, die die Bann-Historie analysiert und Wiederholungstäter langfristig blockiert.

Bezug zur vorherigen Konfiguration

Falls du noch keine grundlegende Fail2Ban-Konfiguration für Nginx und WordPress hast, habe ich sie hier beschrieben:

Fail2Ban + Nginx + WordPress – Grundkonfiguration

In diesem Artikel konfigurieren wir Jails wie nginx-exploit, nginx-secure oder sshd. Recidive ersetzt diese Konfiguration nicht — es verstärkt sie.

Wie man Wiederholungstäter in den Logs findet

Zunächst solltest du prüfen, ob das Problem tatsächlich besteht. Wir extrahieren aus den Fail2Ban-Logs die Liste der IP-Adressen, die am häufigsten gebannt wurden:

Beispielausgabe (Adressen teilweise anonymisiert):

Wenn du Zahlen wie 8, 9 oder 13 siehst, bedeutet das, dass diese IPs nach Ablauf des Banns zurückkehren. Eine kurze bantime ist für sie lediglich eine technische Pause.

Warum recidive besser ist als eine längere bantime

  • Du musst nicht jeden für 24 Stunden bannen, nur wegen eines Tippfehlers in der URL.
  • Du erhöhst nicht das Risiko, legitime Nutzer zu blockieren.
  • Die Strafe ist progressiv und betrifft nur wiederkehrende Adressen.

Recidive analysiert /var/log/fail2ban.log und zählt, wie oft eine IP von anderen Jails gebannt wurde. Dadurch werden nur diejenigen „endgültig blockiert“, die bereits mehrfach aufgefallen sind.

Recidive-Konfiguration (5 Bans in 24h = 7 Tage Bann)

Füge folgenden Block in /etc/fail2ban/jail.local ein:

Am Ende der Datei einfügen:

Datei speichern und Fail2Ban neu starten:

Status des Jails prüfen:

Wie man prüft, wer nahe am recidive-Schwellenwert ist

Wenn du IP-Adressen sehen möchtest, die bereits mehrere Bans haben und sich dem recidive-Schwellenwert nähern:

Zusammenfassung

Recidive ist eine der einfachsten und zugleich effektivsten Methoden, um wiederkehrende Scanner und Bots einzudämmen. Statt aggressiv alle zu bannen — blockierst du nur diejenigen, die mehrfach zurückkehren.

In einer Umgebung mit mehreren Domains, Nginx-Reverse-Proxy und WordPress ist es praktisch ein Pflichtbestandteil der Konfiguration: weniger Log-Rauschen, weniger wiederholte Angriffe und weniger manuelle Analyse.

Debian 13 (Trixie) → Proxmox VE 9 – Vereinfachte Installation auf einem reinen Debian-System

Proxmox VE 9 basiert auf Debian 13 (Trixie) und bringt einen neueren Kernel, aktualisierte Versionen von LXC und QEMU sowie einen verbesserten Virtualisierungs-Stack mit. Dieser Leitfaden beschreibt eine vereinfachte und automatisierte Methode zur Installation von Proxmox VE 9 auf einem sauberen Debian-13-System mithilfe von zwei Installationsskripten.

Die Methode folgt demselben Ansatz wie mein früherer Leitfaden zur Installation von Proxmox 8 auf Debian 12, wurde jedoch an Debian 13 und Proxmox VE 9 angepasst.

Voraussetzungen

  • Frische Installation von Debian 13 (Trixie)
  • Root-Zugriff
  • Internetverbindung

Alle Befehle müssen als root ausgeführt werden.

Teil 1 – Systemvorbereitung & Installation des Proxmox-Kernels

Lade das erste Skript herunter:

Dieses Skript:

  • Setzt den Hostnamen und aktualisiert die Datei /etc/hosts
  • Installiert den Proxmox-Archive-Keyring (SHA512-verifiziert)
  • Fügt das Proxmox VE 9 Repository für Debian 13 hinzu
  • Führt ein vollständiges System-Upgrade durch
  • Installiert proxmox-default-kernel
  • Startet das System neu

Inhalt von install-proxmox9-part1.sh

Teil 2 – Installation von Proxmox VE 9

Nach dem Neustart herunterladen und ausführen:

Inhalt von install-proxmox9-part2.sh

Zugriff auf die Weboberfläche

Nach Abschluss des zweiten Skripts öffnen Sie:

Melden Sie sich mit dem Benutzer root und Ihrem Root-Passwort an. Eine Zertifikatswarnung ist bei einer frischen Installation normal.

Fehlerbehebung – 401 Unauthorized (pve-enterprise Repository)

Falls nach der Installation oder bei der Ausführung von apt update folgender Fehler erscheint:

Dies bedeutet, dass das Enterprise-Repository aktiviert ist, aber Ihr System keine gültige Proxmox-Subskription besitzt. In diesem Leitfaden wird das pve-no-subscription-Repository verwendet, daher sollte das Enterprise-Repository deaktiviert werden.

Beheben Sie das Problem mit folgendem Befehl:

Danach sollte die Aktualisierung erfolgreich durchlaufen:

Wenn alles korrekt konfiguriert ist, erscheint die Meldung:

Fazit

Diese Methode bietet eine saubere und kontrollierte Möglichkeit, Proxmox VE 9 direkt auf Debian 13 bereitzustellen, ohne den ISO-Installer zu verwenden. Besonders geeignet ist sie für automatisierte Umgebungen, Labore und individuelle Infrastruktur-Setups.

Fail2Ban + Nginx (WordPress-freundlich): 5 verdächtige Anfragen → 5-Minuten-Sperre (iptables-nft Fix, Tests und IP entsperren)

Diese Anleitung zeigt die vollständige Installation und Konfiguration von Fail2Ban für Nginx und WordPress, um:

  • Scanner und Bots zu blockieren (z. B. Zugriffe auf /.env, /.git, phpmyadmin usw.),
  • den WordPress-Administrator nicht zu blockieren,
  • eine IP nach 5 verdächtigen oder ungültigen Anfragen zu sperren,
  • nur eine kurze Sperre von 5 Minuten anzuwenden (kein Risiko, sich selbst lange auszusperren).

Schritt 1: Fail2Ban installieren

Installieren Sie Fail2Ban:

Aktivieren und starten Sie den Dienst:

Überprüfen Sie den Status:

Schritt 2: nginx-secure Filter erstellen

Erstellen Sie die Filterdatei:

Fügen Sie folgende Konfiguration ein:

Schritt 3: nginx-secure Jail erstellen

Erstellen Sie die Jail-Konfigurationsdatei:

Fügen Sie folgende Konfiguration ein:

Schritt 4: Fail2Ban neu starten

Schritt 5: Firewall überprüfen

Überprüfen Sie, ob die Fail2Ban-Chain existiert:

Externer Test

Führen Sie dies von einer anderen Maschine aus:

Nach 5 Versuchen wird die IP-Adresse für 5 Minuten gesperrt.

Gesperrte IPs anzeigen

IP entsperren

Entsperren Sie Ihre IP manuell:

Zusammenfassung

  • schützt vor Scannern und Exploit-Versuchen,
  • blockiert das WordPress-Admin-Panel nicht,
  • verwendet eine kurze Sperrzeit von 5 Minuten,
  • voll kompatibel mit iptables-nft,
  • einfach zu testen und einfach zu entsperren.

Automatisches Upgrade von Debian 12 → Debian 13 mit optionalem PHP – und nginx-Update

Debian 12 auf Debian 13 Upgrade

Das Upgrade von Debian von Version 12 (bookworm) auf Version 13 (trixie) ist ein Vorgang, der auf Servern und Containern (z. B. Proxmox LXC oder virtuelle Maschinen) reproduzierbar und ohne Überraschungen durchgeführt werden sollte. Unten finden Sie eine einfache Anleitung sowie fertige Befehle zum Herunterladen und Ausführen des Upgrade-Skripts.

Vor dem Upgrade: erstellen Sie ein Backup oder einen Snapshot. In Proxmox ist die beste Option vzdump oder ein Snapshot. Auf Bare-Metal-Systemen sichern Sie mindestens /etc, Anwendungen und Datenbanken.

  • Proxmox LXC / VM: Backup mit vzdump oder Snapshot.
  • Server: Backup von /etc, /var/www, Datenbanken (MySQL/PostgreSQL) und SSL-Zertifikaten.

Download des Skripts:

https://soban.pl/bash/upgrade_to_debian13.sh

1) Backup vor dem Upgrade (Beispiele)

Beispiel für ein Backup in Proxmox (auf dem Proxmox-Host ausführen, CTID/VMID ersetzen):

Beispiel für ein einfaches Dateisystem-Backup auf einem Server (ersetzt keinen vollständigen Snapshot, ist aber besser als nichts):

2) Skript herunterladen (wget / curl)

Am einfachsten verwenden Sie wget. Wenn der Befehl wget trotz installiertem Paket nicht funktioniert, verwenden Sie den vollständigen Pfad /usr/bin/wget.

Variante A (Standard wget):

Variante B (wget mit vollständigem Pfad – hilfreich bei PATH-Problemen):

Variante C (curl):

3) Skripthilfe (Parameter)

Bevor Sie das Upgrade starten, zeigen Sie die verfügbaren Parameter und Beispiele an:

4) Upgrade Debian 12 → Debian 13 (nur System)

Wenn Sie derzeit Debian 12 (bookworm) verwenden und ein System-Upgrade durchführen möchten:

Das Skript erstellt ein Backup von /etc/apt/sources.list, wechselt die Repositories zu trixie, führt apt update und apt full-upgrade aus und anschließend autoremove und autoclean.

5) Automatische Erkennung von PHP/nginx und Update bei Bedarf

Wenn der Container oder die VM einen Webserver verwendet und das Skript automatisch PHP (nginx + fastcgi_pass) erkennen und PHP sowie nginx aktualisieren soll:

6) PHP- und nginx-Upgrade erzwingen (PHP-FPM Socket Fix)

Wenn Sie die Installation oder das Upgrade von PHP erzwingen und die nginx-Konfiguration automatisch auf den richtigen PHP-FPM-Socket umstellen möchten:

Dieser Befehl installiert PHP 8.2 (php-fpm und gängige Module) und ersetzt alte PHP-FPM-Socket-Pfade in der nginx-Konfiguration durch /run/php/php8.2-fpm.sock. Anschließend wird nginx -t ausgeführt und die Dienste werden neu geladen oder neu gestartet.

7) Bereits Debian 13 installiert? Nur PHP/nginx Modus

Wenn das System bereits Debian 13 (trixie) verwendet und Sie nur PHP und nginx aktualisieren möchten, ohne die System-Repositories zu ändern:

8) Testmodus (Dry-Run)

Wenn Sie sehen möchten, was das Skript tun wird, ohne Änderungen vorzunehmen:

9) Diagnose: wget installiert, aber funktioniert nicht

Wenn apt meldet, dass wget installiert ist, aber die Shell command not found anzeigt, liegt meist ein PATH-Problem vor. Verwenden Sie in diesem Fall den vollständigen Pfad /usr/bin/wget.

Zusammenfassung

Diese Lösung ermöglicht ein sicheres Upgrade von Debian 12 → Debian 13 und behebt optional typische PHP/nginx-Probleme nach dem Upgrade. Erstellen Sie immer ein Backup vor dem Upgrade und beginnen Sie mit --help, um die verfügbaren Optionen zu prüfen.

Skript: https://soban.pl/bash/upgrade_to_debian13.sh