WordPress ist das meistgenutzte CMS weltweit — und damit auch das meistangegriffene. Die gute Nachricht: die meisten Angriffe sind automatisiert und lassen sich mit einfachen Maßnahmen abwehren.
1. Login-URL verstecken
Der Standardpfad /wp-login.php wird von Bots kontinuierlich mit Brute-Force-Versuchen bombardiert. Plugin WPS Hide Login ändert den Pfad auf einen selbst gewählten:
# WP-CLI: Plugin installieren und Pfad setzen
wp plugin install wps-hide-login --activate
wp option update whl_page "geheim"
# → Login jetzt unter /geheim erreichbar
# /wp-login.php → 404
2. XML-RPC deaktivieren
XML-RPC ermöglicht u.a. unbegrenzte Login-Versuche in einem Request. Falls keine Drittanbieter-Apps (z.B. Jetpack) genutzt werden: deaktivieren.
// functions.php
add_filter("xmlrpc_enabled", "__return_false");
// nginx: direkt auf 404
location = /xmlrpc.php { deny all; return 404; }
3. Versionsnummer entfernen
WP fügt standardmäßig ?ver=X.Y.Z an CSS/JS-Dateien an und gibt die Version im Meta-Tag aus. Angreifer nutzen diese Info zur gezielten Exploit-Suche.
// functions.php
remove_action("wp_head", "wp_generator");
add_filter("the_generator", "__return_empty_string");
function strip_ver($src) { return remove_query_arg("ver", $src); }
add_filter("style_loader_src", "strip_ver", 9999);
add_filter("script_loader_src", "strip_ver", 9999);
4. User-Enumeration verhindern
/?author=1 gibt standardmäßig den Login-Namen des ersten Nutzers preis. Blockieren:
// functions.php
add_action("init", function() {
if (isset($_GET["author"]) && !is_user_logged_in()) {
wp_redirect(home_url("/"), 301); exit;
}
});
add_action("template_redirect", function() {
if (is_author()) { wp_redirect(home_url("/"), 301); exit; }
});
5. Security Headers
add_action("send_headers", function() {
header("X-Frame-Options: SAMEORIGIN");
header("X-Content-Type-Options: nosniff");
header("Referrer-Policy: strict-origin-when-cross-origin");
header("Permissions-Policy: geolocation=(), camera=()");
header_remove("X-Powered-By");
});
6. Datei-Editor deaktivieren
// wp-config.php
define("DISALLOW_FILE_EDIT", true);
7. Sensitive Dateien via nginx sperren
location ~* /(wp-config\.php|readme\.html|license\.txt) {
deny all; return 404;
}
location ~* /s/uploads/.*\.php$ {
deny all; return 404;
}
location ~* /inc/[^/]+\.php$ {
deny all; return 404;
}
Empfohlene Plugins
| Plugin | Zweck |
|---|---|
| Wordfence Security | WAF, Brute-Force-Schutz, Malware-Scan |
| WPS Hide Login | Login-URL ändern |
| Antispam Bee | Kommentar-Spam ohne CAPTCHA |
| Rank Math | SEO ohne Bloat |