0%
Fortgeschritten 25 Minuten Server

CrowdSec - Server vor Angriffen schützen

Schütze deinen Server mit CrowdSec. Automatische Blockierung von Angreifern aus der ganzen Welt.

CrowdSec - Server vor Angriffen schützen
Fortgeschritten
🐧 Debian 12 🐧 Ubuntu Server

🎯 Was du lernst

CrowdSec installieren
Firewall-Bouncer konfigurieren
Community Blocklists aktivieren
Dashboard einrichten
Angriffe erkennen und blockieren

🌐 Empfohlener VPS-Anbieter

Für dieses Tutorial benötigst du einen VPS. Unsere Empfehlung:

netcup - ab 1€/Monat, Deutschland, DSGVO-konform

Mehr erfahren →

* Affiliate-Link.

📑 Inhaltsverzeichnis

Anleitung

1. Was ist CrowdSec und wofür braucht man es?

CrowdSec ist eine Open-Source-Sicherheitslösung, die deinen Server automatisch vor Angreifern schützt. Es ist wie ein digitaler Wachhund, der rund um die Uhr deinen Server beobachtet und bei Gefahr zuschlägt.

2. Warum CrowdSec nutzen?

3. Was schützt CrowdSec?


4. VPS empfohlen

Für CrowdSec und einen sicheren Server benötigst du einen VPS. Unsere Empfehlung:


5. CrowdSec installieren

Die Installation ist einfach. Verbinde dich per SSH mit deinem Server:

# CrowdSec installieren
curl -s https://install.crowdsec.net | sudo sh

Folge den Anweisungen auf dem Bildschirm. Die Standard-Einstellungen sind für die meisten Server geeignet.

6. Pakete installieren

# Nach der Installation: CrowdSec und Firewall-Bouncer installieren
sudo apt update
sudo apt install crowdsec crowdsec-firewall-bouncer-iptables -y

7. Nginx und SSH Log-Analyse aktivieren

CrowdSec analysiert automatisch deine Logs. Prüfe, ob die richtigen Parser aktiviert sind:

# installierte Parser anzeigen
sudo cscli collections list

Es sollten folgende Collections aktiviert sein:

Falls etwas fehlt:

# Parser nachinstallieren
sudo cscli collections install crowdsecurity/nginx crowdsecurity/sshd
sudo systemctl reload crowdsec

8. Firewall-Bouncer konfigurieren

Der Bouncer blockiert Angreifer automatisch über iptables:

# Bouncer-Status prüfen
sudo systemctl status crowdsec-firewall-bouncer

9. Prüfen, ob IPs blockiert werden

# Aktive Blockierungen anzeigen
sudo cscli decisions list

10. Beispiel-Ausgabe:

+----+------------------+---------------+------+-----------+--------+
| ID |      IP         |    SCENARIO   | TYPE | DURATION | ACTION |
+----+------------------+---------------+------+-----------+--------+
|  1 | 45.33.32.156    | ssh-bf        | ban  | 3h       | ban    |
|  2 | 192.99.144.85   | http-crawl... | ban  | 12h      | ban    |
|  3 | 103.21.244.15   | ssh-slow-bf   | ban  | 6h       | ban    |
+----+------------------+---------------+------+-----------+--------+

Erklärung:


11. Community Blocklists aktivieren

CrowdSec kann Blocklists von Millionen Servern weltweit nutzen:

# Hub durchsuchen
sudo cscli hub list

12. Bouncer für Community-Blocklisten konfigurieren

Bearbeite die Bouncer-Konfiguration:

sudo nano /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml

Stelle sicher, dass api_key korrekt ist:

api_key: DEIN_API_KEY

Den API-Key bekommst du mit:

sudo cscli bouncers list

13. Community-Blocklists abrufen

CrowdSec holt automatisch Blocklisten von der Community. Prüfe die Konfiguration:

# Konfiguration anzeigen
sudo cscli config show

14. Dashboard einrichten (Basis)

Für ein einfaches Dashboard kannst du eine HTML-Seite erstellen:

# Dashboard-Verzeichnis erstellen
sudo mkdir -p /var/www/crowdsec

15. Automatisches Dashboard-Script

Erstelle ein Script für automatische Updates:

sudo nano /etc/crowdsec/update-dashboard.sh

Füge folgendes Script ein:

#!/bin/bash
OUTPUT="/var/www/crowdsec/index.html"

# Blockierte IPs zählen
BLOCKED=$(sudo cscli decisions list 2>/dev/null | grep -c "ban" || echo 0)
if [ -z "$BLOCKED" ]; then BLOCKED=0; fi

TIMESTAMP=$(date '+%Y-%m-%d %H:%M')

cat > $OUTPUT << EOF
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CrowdSec Dashboard</title>
    <meta http-equiv="refresh" content="3600">
    <style>
        body { font-family: -apple-system, BlinkMacSystemFont, sans-serif; background: #0d1117; color: #c9d1d9; padding: 20px; }
        .container { max-width: 1200px; margin: 0 auto; }
        h1 { color: #58a6ff; border-bottom: 1px solid #30363d; padding-bottom: 10px; }
        .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin: 20px 0; }
        .card { background: #161b22; border: 1px solid #30363d; border-radius: 6px; padding: 20px; }
        .card h3 { color: #8b949e; margin-top: 0; }
        .card .value { font-size: 36px; font-weight: bold; color: #f85149; }
        .card.green .value { color: #3fb950; }
        .updated { text-align: center; color: #8b949e; margin-top: 20px; }
    </style>
</head>
<body>
    <div class="container">
        <h1>CrowdSec Dashboard</h1>
        <div class="stats">
            <div class="card">
                <h3>Geblockte IPs</h3>
                <div class="value">$BLOCKED</div>
            </div>
            <div class="card green">
                <h3>Status</h3>
                <div class="value">Aktiv</div>
            </div>
        </div>
        <div class="updated">Letzte Aktualisierung: $TIMESTAMP</div>
    </div>
</body>
</html>
EOF

Script ausführbar machen:

sudo chmod +x /etc/crowdsec/update-dashboard.sh

16. Cronjob einrichten

sudo crontab -e

Füge hinzu (stündliche Aktualisierung):

0 * * * * /etc/crowdsec/update-dashboard.sh >> /var/log/crowdsec-dashboard.log 2>&1

17. Dashboard über Nginx bereitstellen

Erstelle eine Nginx-Konfiguration:

sudo nano /etc/nginx/sites-available/crowdsec

Füge hinzu:

server {
    listen 8444 ssl;
    server_name deine-domain.de;

    ssl_certificate /etc/letsencrypt/live/deine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/deine-domain.de/privkey.pem;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location / {
        root /var/www/crowdsec;
        index index.html;
    }
}

Aktivieren:

sudo ln -s /etc/nginx/sites-available/crowdsec /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Zugang:


18. Wichtige Befehle

19. Blockierungen anzeigen

# Alle aktuellen Blockierungen
sudo cscli decisions list

20. IP entsperren

# Bestimmte IP entsperren
sudo cscli decisions delete -i 45.33.32.156

# Alle Blockierungen aufheben
sudo cscli decisions delete --all

21. Logs anzeigen

# CrowdSec Logs
sudo journalctl -u crowdsec -f

# Nur Alarme anzeigen
sudo cscli alerts list

22. Bouncer-Status

# Alle Bouncer anzeigen
sudo cscli bouncers list

# Metriken
sudo cscli metrics

23. Wie Angreifer blockiert werden

24. Typische Angriffe, die CrowdSec erkennt

SSH Brute-Force (ssh-bf):

SSH Slow Brute-Force (ssh-slow-bf):

Web-Crawling (http-crawl-non_statics):

SQL-Injection (http-sqli-probing):

Path Traversal (http-path-traversal-probing):

25. Angriffe in Echtzeit verfolgen

# Live-Logs verfolgen
sudo journalctl -u crowdsec -f

# Oder mit cscli
sudo cscli alerts list -w

26. CrowdSec Console (Optional)

Für ein professionelles Dashboard kannst du die CrowdSec Console nutzen:

  1. Registriere dich unter https://app.crowdsec.net
  2. Füge deinen Server hinzu
  3. Erhalte erweiterte Analysen und Benachrichtigungen

Die Console bietet:


27. Best Practices

28. Regelmäßige Prüfungen

# Wöchentlicher Check
sudo cscli metrics

29. Whitelist eigene IP

Falls du dich nicht selbst aussperren möchtest:

# Eigene IP whitelisten
sudo cscli decisions add -i 192.168.1.100 --type whitelist

30. Updates

# CrowdSec und Parser aktualisieren
sudo cscli hub update
sudo cscli hub upgrade
sudo systemctl reload crowdsec

31. Zusammenfassung

Was du heute gelernt hast:


Geschafft! 🎉

Dein Server ist jetzt vor Angriffen geschützt. Hast du Fragen?

Schreib uns auf Instagram

Das könnte dich auch interessieren

✅ Geschafft!

Du hast dieses Tutorial abgeschlossen. Hast du Fragen oder Probleme?

Schreib uns auf Instagram

Alle Tutorials ansehen