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

PluginZweck
Wordfence SecurityWAF, Brute-Force-Schutz, Malware-Scan
WPS Hide LoginLogin-URL ändern
Antispam BeeKommentar-Spam ohne CAPTCHA
Rank MathSEO ohne Bloat