Benutzer-Enumeration ist eine Technik, mit der Angreifer gültige Benutzernamen auf deiner WordPress-Seite ermitteln. Sobald sie Benutzernamen haben, können sie gezielte Brute-Force-Angriffe starten.
Vektor 1: Autoren-Archive (?author=N)
Standardmäßig leitet ?author=1 zu /author/admin/ weiter und verrät den Benutzernamen. Blockiere dies:
function block_author_enumeration() {
if (is_admin()) return;
if (isset($_REQUEST['author']) && is_numeric($_REQUEST['author'])) {
wp_redirect(home_url(), 301);
exit;
}
}
add_action('init', 'block_author_enumeration');
Vektor 2: REST-API-Benutzer-Endpunkt
Der /wp-json/wp/v2/users-Endpunkt listet alle Benutzer. Deaktiviere ihn für nicht-authentifizierte Anfragen:
add_filter('rest_endpoints', function($endpoints) {
if (!is_user_logged_in()) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P[\d]+)']);
}
}
return $endpoints;
});
Vektor 3: Login-Fehlermeldungen
WordPress zeigt unterschiedliche Fehlermeldungen für ungültige Benutzernamen vs. falsche Passwörter. Vereinheitliche sie:
add_filter('login_errors', function() {
return 'Ungültiger Benutzername oder Passwort.';
});
Vektor 4: oEmbed-Discovery
remove_action('wp_head', 'wp_oembed_add_discovery_links');
Mit InspectWP überprüfen
Nach der Implementierung dieser Maßnahmen führe einen neuen InspectWP-Scan durch. Der Sicherheitsbereich sollte die Benutzer-Enumeration als nicht mehr möglich anzeigen.