CrowdSec - Server vor Angriffen schützen
Schütze deinen Server mit CrowdSec. Automatische Blockierung von Angreifern aus der ganzen Welt.
🎯 Was du lernst
🌐 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?
- Automatische Blockierung: Angreifer werden ohne dein Zutun blockiert
- Community-getrieben: Lernt von Millionen anderen Servern weltweit
- Open-Source: Kostenlos, keine Lizenzgebühren
- Leichtgewichtig: Benötigt wenig Ressourcen
- Vielseitig: Schützt SSH, Nginx, Apache und viele andere Dienste
3. Was schützt CrowdSec?
- 🔐 SSH/SSHd: Brute-Force Angriffe auf SSH-Zugänge
- 🌐 HTTP/HTTPS: Web-Angriffe wie SQL-Injection, XSS, Verzeichnis-Traversals
- 📊 Dienste: Erkennt Angriffe auf fast jeden Dienst
- 🌍 Community: Nutzt Blocklists von Millionen anderen Servern
4. VPS empfohlen
Für CrowdSec und einen sicheren Server benötigst du einen VPS. Unsere Empfehlung:
- netcup - ab 1€/Monat, Deutschland, DSGVO-konform
- Jetzt bei netcup anmelden{:target=“_blank” rel=“noopener noreferrer”}
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:
crowdsecurity/nginx- für Web-Angriffecrowdsecurity/sshd- für SSH-Angriffecrowdsecurity/linux- für System-Angriffe
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:
- ID: Eindeutige ID der Blockierung
- IP: Die blockierte IP-Adresse
- SCENARIO: Art des Angriffs (z.B. ssh-bf = SSH Brute-Force)
- TYPE: ban = temporär blockiert
- DURATION: Wie lange die Blockierung dauert
- ACTION: ban = blockiert
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:
- URL:
https://deine-domain.de:8444/
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):
- Angreifer probieren viele Passwörter
- Wird erkannt nach mehreren fehlgeschlagenen Versuchen
- Blockierung für 3-24 Stunden
SSH Slow Brute-Force (ssh-slow-bf):
- Langsame, unauffällige Angriffe
- Blockierung für 6-48 Stunden
Web-Crawling (http-crawl-non_statics):
- Aggressive Bots, die alle Seiten abrufen
- Blockierung für 12-24 Stunden
SQL-Injection (http-sqli-probing):
- Angriffe auf Datenbanken
- Blockierung für 24-72 Stunden
Path Traversal (http-path-traversal-probing):
- Versuch, versteckte Dateien zu finden
- Blockierung für 24 Stunden
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:
- Registriere dich unter https://app.crowdsec.net
- Füge deinen Server hinzu
- Erhalte erweiterte Analysen und Benachrichtigungen
Die Console bietet:
- 📊 Detaillierte Grafiken und Analysen
- 🔔 E-Mail-Benachrichtigungen bei Angriffen
- 🌍 Weltkarte mit Angriffsherkünften
- 📈 Langzeit-Statistiken
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:
- ✅ Was CrowdSec ist und wofür man es braucht
- ✅ CrowdSec auf dem Server installieren
- ✅ Firewall-Bouncer konfigurieren
- ✅ Nginx und SSH Logs analysieren
- ✅ Community Blocklists aktivieren
- ✅ Dashboard einrichten
- ✅ Wichtige Befehle (cscli)
- ✅ Wie verschiedene Angriffe erkannt und blockiert werden
- ✅ Best Practices
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