Fail2Ban & UFW: Automatisierte Bot-Abwehr für Hetzner & Netcup Cloud-Server

Wie Sie schädliche Crawler, XML-RPC Brute-Force-Angriffe und Scraper auf Linux-Webservern auf Kernel-Ebene blockieren, um Server-Ressourcen und Crawl-Budget zu schützen.

Auf vielen Webservern im DACH-Raum entfallen 40% bis 70% aller HTTP-Requests nicht auf echte Kunden oder Googlebot, sondern auf automatisierte Hacking-Bots, aggressive Scraper und XML-RPC Brute-Force-Angriffe. Wenn jede dieser Attacken PHP-FPM und MySQL aufweckt, steigen CPU-Last und Stromkosten, während echte Besucher über träge Ladezeiten klagen.

Die Lösung: Blockade bösartiger Anfragen auf Nginx- und Kernel-Ebene über Fail2Ban und UFW (Uncomplicated Firewall), bevor auch nur eine einzige Zeile PHP ausgeführt wird.


1. Nginx-Ebene: XML-RPC & sensible Endpunkte sofort mit 444 abwürgen

In Nginx nutzen wir den speziellen Rückgabecode 444 (No Response). Nginx schließt die TCP-Verbindung sofort, ohne Daten an den Angreifer zurückzusenden:

# /etc/nginx/snippets/bot-blocker.conf

# 1. XML-RPC Angriffe komplett abwürgen
location = /xmlrpc.php {
    access_log /var/log/nginx/blocked_bots.log;
    return 444;
}

# 2. Scannen nach sensiblen Dateien blockieren
location ~* \.(env|git|svn|bak|config|sql)$ {
    access_log /var/log/nginx/blocked_bots.log;
    return 444;
}

# 3. Aggressive KI-Scraper ohne Mehrwert blockieren
if ($http_user_agent ~* (Bytespider|ClaudeBot|Amazonbot|GPTBot)) {
    return 444;
}

Binden Sie diesen Schnipsel in alle Server-Blöcke ein (include snippets/bot-blocker.conf;).


2. Fail2Ban Filter für wiederholte Bot-Angriffe

Erstellen Sie einen spezifischen Fail2Ban-Filter unter /etc/fail2ban/filter.d/nginx-badbots.conf:

# /etc/fail2ban/filter.d/nginx-badbots.conf

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(xmlrpc\.php|\.env|\.git).*" 444
ignoreregex =

3. Fail2Ban Jail aktivieren in /etc/fail2ban/jail.local

# /etc/fail2ban/jail.local

[nginx-badbots]
enabled = true
port = http,https
filter = nginx-badbots
logpath = /var/log/nginx/blocked_bots.log
maxretry = 3
findtime = 600
bantime = 86400 # 24 Stunden IP-Sperre in der Firewall
action = ufw[name=BadBots, port="http,https", protocol=tcp]

Starten Sie Fail2Ban neu:

sudo systemctl restart fail2ban
# Status der aktiven Sperren überprüfen:
sudo fail2ban-client status nginx-badbots

4. Schutz vor Layer-7 DoS über Nginx Rate-Limiting

Schützen Sie Login- und Suchformulare vor automatisierten Überlastungen:

# In /etc/nginx/nginx.conf im http-Block:
limit_req_zone $binary_remote_addr zone=login_limit:10m rate=5r/m;
limit_req_zone $binary_remote_addr zone=search_limit:10m rate=30r/m;

# Im jeweiligen Location-Block (z.B. /login oder /wp-login.php):
location = /wp-login.php {
    limit_req zone=login_limit burst=3 nodelay;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}

5. Vorher-Nachher Systemauslastung

Metrik Ungefilterter Server Mit Nginx 444 + Fail2Ban UFW Jail
PHP-FPM CPU-Auslastung 68% (durch ständige Angriffe) 14% (Nur echte Nutzer)
Monatlicher Traffic durch Bots 85 GB 3,2 GB (-96%)
Gültiges Crawl-Budget für Google Oft verzögert durch Lags Googlebot crawlt 4x schneller

Vollständige Entlastung Ihrer Webserver-Hardware und maximaler Schutz für Ihre geschäftskritische Online-Präsenz.


🔗 Zusammenhängende Systemdiagnosen & Infrastruktur-Geflecht:

Server- und Performance-Engpässe treten selten isoliert auf. Origin-Server-Latenzen, Datenbankstrukturen und Frontend-Metriken greifen direkt ineinander:

🛠️ Engineering Next Step

Benötigen Sie direkte Implementierung auf Ihrem Server?

Eingriffe in Serverkonfigurationen, Datenbank-Indizierung oder JavaScript-Optimierungen auf Produktivsystemen bergen Ausfallrisiken. Wenn Sie eine risikofreie Fehlerbehebung ohne Ausfallzeiten durch einen erfahrenen Systemingenieur bevorzugen, übernehme ich diese Anpassung direkt unter unserem Result-First, Fair-Pay Modell.

Gezielte Fehlerbehebung anfordern →
✓ Zahlung nur bei Erfolg•✓ Kein Ausfallrisiko•✓ Direkte Ausführung durch Ingenieur
Damar Nurvianto - Lead Systems Auditor
💬 Direkter Technischer Desk • WhatsApp
Damar Nurvianto • Lead Systems Auditor

Akutes technisches Problem oder Server-Fehler?

Senden Sie Ihren Terminal-Log, Stack-Trace oder Ihre Server-URL jederzeit — 7 Tage die Woche. Reine asynchrone Text-Diagnose direkt mit Senior Systems Auditor Damar. Keine unerwünschten Telefonanrufe.

Fehler-Log via WhatsApp senden &rarr;Drop Log 24/7 • No Calls