WordPress mit Cloudflare
OK, es nervt. Seit längerem wird meine WordPress-Seite regelmäßig aus aller Welt „angegriffen“, obwohl meine Reichweite nun wirklich sehr beschränkt ist. Zwar läuft eine WordPress-Firewall-Extension, aber diese hat mir mehrfach am Tag Mails geschickt, dass Benutzer oder Bots versucht haben, sich als Admin anzumelden.
Da mich dies genervt hat und meine Seite durch Cloudflare veröffentlicht ist, habe ich hierfür eine WAF (Web Application Firewall) eingerichtet, die alle diese Requests blockiert. Kaboom – jetzt ist Ruhe im Karton 😀.
Warum überhaupt WAF-Regeln?
Kleine Zahlenspielerei zum Einstieg: Meine Seite bekommt täglich mehrere hundert Requests, die verdächtig nach Brute-Force, Exploits oder anderen unschönen Dingen aussehen. Das ist ungefähr so, als würde jeden Tag eine Busladung ungebetener Gäste versuchen, bei dir einzubrechen. Und das lästig – nicht nur für mich, sondern auch für meinen Server.
Cloudflare WAF (Web Application Firewall) ist hier mein Bodyguard. Mit einer gezielten Regeln (Custom Rules) kann ich die meisten Angriffe direkt an der Haustür abfangen, bevor sie überhaupt meine WordPress-Installation erreichen.
Was wird geblockt?
Die üblichen Verdächtigen sind:
- /wp-login.php – Klassiker für Brute-Force-Angriffe.
- /wp-admin/ – Adminbereich, den wirklich nur ich brauche.
- /xmlrpc.php – Wird gerne für DDoS und andere Attacken missbraucht.
- /wp-config.php, /install.php, /upgrade.php – Dateien, die niemand außer mir anfassen sollte.
- /wp-json/ – Schnittstelle für die REST API, auch ein beliebtes Ziel.
Und weil ich keine Lust habe, mich selbst auszusperren, lasse ich meine eigene IP natürlich durch – ich bin ja nicht blöd 🤪.
So sieht die Regel konkret aus
Hier ein Beispiel für eine Cloudflare WAF-Regel, wie ich sie verwende:
(
starts_with(http.request.uri.path, "/wp-login.php")
or starts_with(http.request.uri.path, "/wp-admin/")
or starts_with(http.request.uri.path, "/xmlrpc")
or starts_with(http.request.uri.path, "//xmlrpc")
or starts_with(http.request.uri.path, "/wp-config.php")
or starts_with(http.request.uri.path, "/install.php")
or starts_with(http.request.uri.path, "/upgrade.php")
or starts_with(http.request.uri.path, "/wp-json/")
)
and ip.src ne xxx.xxx.xxx.xxx
Was passiert hier?
- Alle Requests auf die genannten Pfade werden geblockt – außer sie kommen von meiner eigenen IP (hier als Beispiel: xxx.xxx.xxx.xxx).
- Das Ganze läuft direkt auf Cloudflare, also noch bevor die Anfrage überhaupt auf meinen Server trifft. Spart Ressourcen und Nerven!
Wie setze ich das um?
- Cloudflare Dashboard öffnen
Gehe zu „Security“ → „Security rules“. - Neue Regel erstellen
Ausdruck wie oben eingeben, eigene IP anpassen. - Aktion wählen
„Block“ auswählen – nicht „Challenge“, sonst musst du dauernd Captchas lösen. - Regel speichern und testen
Kurz selbst testen (z.B. mit VPN), dass du nicht ausgesperrt bist.
Praktische Hinweise aus dem Alltag
- Regelmäßige Kontrolle: Schau alle paar Wochen mal ins Log, ob sich die Angriffs-Muster ändern.
- Eigene IP im Blick behalten: Falls du einen neuen Internetanschluss bekommst, IP-Adresse anpassen – sonst stehst du selbst vor verschlossener Tür.
- Performance: Cloudflare blockt Angriffe, bevor sie deinen Server belasten. Gerade bei günstigen Hosting-Paketen kann das einen riesigen Unterschied machen!
- Kosten: Die beschriebenen Regeln funktionieren schon im kostenlosen Cloudflare-Plan.
Fazit
Mit ein bisschen Konfiguration und gesundem Misstrauen kannst du dir viel Stress sparen. Cloudflare WAF erledigt den Großteil der Arbeit – und du kannst dich wieder wichtigeren Dingen widmen und musst dir keine Sorgen mehr machen.