Illustration mit einem Wordpress-Logo und einem Vorhängeschloss

WordPress einfach härten ohne Plugins

Dieser Blog basiert auf WordPress – vermutlich wenige überraschend. WordPress ist eines der am weitesten verbreiteten Content-Management-Systeme weltweit und erfreut sich großer Beliebtheit, sowohl bei privaten Bloggern als auch bei Unternehmen.

Doch gerade diese Verbreitung macht WordPress auch zu einem bevorzugten Ziel für Hacker und automatisierte Angriffe. Aufgrund der großen Nutzerbasis und der Vielzahl an verfügbaren Plugins und Themes ergeben sich regelmäßig Sicherheitslücken, die ausgenutzt werden können.

Aus diesem Grund ist es besonders wichtig, WordPress-Installationen stets aktuell zu halten, sichere Plugins zu wählen und grundlegende Sicherheitsmaßnahmen umzusetzen, um den Blog vor unerwünschten Zugriffen zu schützen.

Ich möchte hier zeigen, wie man mit einfachen Mitteln das WordPress resilienter gestaltenk kann und das ohne Plugins zubenötigen.

Generelle Einstellungen

  1. Der Standard-Nutzername von WordPress ist geändert.
  2. Das Passwort für den Login ist sicher: min. 16stellig, Groß-, Kleinbuchstaben, Zahlen Sonderzeichen
  3. Die Updates für WordPress, Plugins und Themes werden automatisch durchgeführt.
  4. Nutze die neueste PHP-Version

Anpassungen an der Worpress-eigenen .htaccess

Folgende Zeilen am Anfang der .htaccess erschweren den Angreifern ihr tun:

# Disable Directory Listing
Options -Indexes
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
RewriteRule ^wp-content/uploads/[^/]+\.php$ - [F,L]
# Disable XMLRPC
RewriteRule ^xmlrpc.php - [F,L]
# Disable author scans
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]

REST API und XML-RPC beschränken

Um die REST API und XML-RPC zu beschränken müssen folgende Anpassungen an der functions.php vorgenommen werden:

# REST API einschränken
add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_disabled', 'REST API disabled.', ['status' => 403]);
    }
    return $result;
});

# XML-RPC deaktivieren
add_filter('xmlrpc_enabled', '__return_false');

Versionsausgabe unterdrücken

Die Versionsausgabe des WordPress im HTML-Head kann man wie folgt in der functions.php deaktivieren:

# Versionsausgabe unterdrücken
remove_action('wp_head', 'wp_generator');

Automatische Updates aktivieren

Um die WordPress-Update automatisch durchzuführen, ist folgende Einstellung in der wp-config.php notwendig:

define('WP_AUTO_UPDATE_CORE', true);