Werden Sie gerade angegriffen? Hilfe bei der Vorfallsbehandlung

info@angelforce.eu
WordPress

Eine praxisnahe Sicherheits-Checkliste für WordPress

Zwölf Schritte zur WordPress-Härtung in sinnvoller Reihenfolge, von Updates und verwaisten Plugins bis zu 2FA, XML-RPC, Backups, Dateiintegrität und WAF.

Auch verfügbar auf:EnglishTürkçeFrançaisEspañolItalianoPolskiNederlandsEesti

Illustration: Eine praxisnahe Sicherheits-Checkliste für WordPress

Eine WordPress-Website ist nur so stark wie ihr schwächstes Plugin, Konto oder Backup. Der WordPress-Kern erhält regelmäßig Sicherheitsupdates; was Sie hinzufügen und wie Sie die Website betreiben, liegt bei Ihnen. Diese Checkliste umfasst die wichtigsten Maßnahmen, grob in der Reihenfolge, in der wir sie umsetzen würden.

1. Kern, Plugins und Themes aktuell halten

Automatische Hintergrund-Updates für den Kern gibt es seit WordPress 3.7; standardmäßig umfassen sie Minor-Releases. Seit WordPress 5.5 können Sie automatische Updates außerdem für jedes Plugin und Theme im Adminbereich einschalten.

  • Aktivieren Sie automatische Updates für Plugins seriöser Entwickler und prüfen Sie die übrigen wöchentlich.
  • Automatische Updates sind auf WP-Cron angewiesen. Prüfen Sie unter Werkzeuge > Website-Zustand, ob Fehler gemeldet werden, denn bei einem defekten Cron bleiben Updates unbemerkt aus.
  • Stellen Sie sicher, dass Sie Updates zurückrollen können, bevor Sie sich auf automatische Updates verlassen. Das empfiehlt auch die WordPress-Dokumentation.

2. Verwaiste und ungenutzte Plugins entfernen

Der Härtungsleitfaden von WordPress ist eindeutig: Halten Sie Plugins aktuell und löschen Sie die, die Sie nicht nutzen. Deaktivieren reicht nicht, denn der Code bleibt auf dem Server.

Das Plugin-Verzeichnis auf WordPress.org liefert Ihnen zwei Warnzeichen:

  • Einen gelben Hinweis, dass ein Plugin „nicht mit den letzten 3 Hauptversionen von WordPress getestet“ wurde.
  • Einen roten Hinweis, dass ein Plugin geschlossen wurde und nicht mehr heruntergeladen werden kann. Nach 60 Tagen wird der Grund angezeigt, und „Sicherheitsproblem“ ist einer der aufgeführten Gründe.

Ein geschlossenes Plugin erhält über WordPress.org keine Updates mehr. Ersetzen Sie es. Installieren Sie niemals „genullte“ Kopien von Premium-Plugins und installieren Sie nur von WordPress.org oder von Anbietern, denen Sie vertrauen.

3. Administratorkonten prüfen

Listen Sie alle Konten mit der Rolle Administrator auf und entfernen Sie die, die niemand erklären kann. Mit WP-CLI:

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

Geben Sie jeder Person ein eigenes, namentliches Konto, niemals einen gemeinsamen Login admin. Verwenden Sie die niedrigste Rolle, die für die Aufgabe genügt: Die meisten Redakteure brauchen keine Administratorrechte. Verlangen Sie starke, eindeutige Passwörter, idealerweise in einem Passwort-Manager gespeichert.

4. Zwei-Faktor-Authentifizierung aktivieren

Aktivieren Sie 2FA für jeden Administrator. Der WordPress-Kern enthält keine 2FA; Sie brauchen also ein Plugin oder einen Single-Sign-on-Anbieter, der sie erzwingt. Bevorzugen Sie Verfahren wie Sicherheitsschlüssel oder Passkeys, sofern Ihr Plugin sie unterstützt, und bewahren Sie Wiederherstellungscodes sicher auf.

5. Anmeldungen begrenzen und über XML-RPC entscheiden

Die WordPress-Dokumentation nennt wp-login.php und xmlrpc.php als häufige Ziele von Brute-Force-Angriffen. Sie empfiehlt, Anmeldeversuche am Netzwerkrand (WAF oder CDN) oder auf dem Webserver zu begrenzen. Auch ein Sicherheits-Plugin kann Anmeldungen drosseln, läuft aber in PHP; die Variante auf Serverebene hält hoher Last daher besser stand.

Wenn Sie XML-RPC nicht nutzen, deaktivieren Sie es. Manche mobilen Apps und Dienste wie Jetpack brauchen es; prüfen Sie das also vorher. Beachten Sie, dass der Filter xmlrpc_enabled nur Methoden deaktiviert, die eine Authentifizierung erfordern. Pingbacks und andere Methoden ohne Authentifizierung funktionieren weiter. Um XML-RPC vollständig abzuschalten, sperren Sie die Datei auf dem Webserver. Für nginx:

location = /xmlrpc.php {
    deny all;
}

6. Den integrierten Datei-Editor abschalten

Mit dem Theme- und Plugin-Editor im Dashboard kann jeder mit einer Administrator-Sitzung PHP-Code ändern. Deaktivieren Sie ihn in wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

Laut der Dokumentation zu wp-config.php geht DISALLOW_FILE_MODS weiter und blockiert auch die Installation und Aktualisierung von Plugins und Themes über das Dashboard. Verwenden Sie es nur, wenn Sie Änderungen auf anderem Weg ausrollen, etwa über Git oder WP-CLI.

7. Backups außerhalb des Servers und des Web-Roots aufbewahren

Der Härtungsleitfaden empfiehlt regelmäßige Backups von Dateien und Datenbank, mehrere Sicherungsstände und einen vertrauenswürdigen Speicherort. Schützen Sie ihre Integrität durch Verschlüsselung, festgehaltene Hashwerte oder schreibgeschützte Medien.

Daraus folgen zwei praktische Regeln. Ein Backup im Web-Root, etwa eine ZIP-Datei in wp-content, kann jeder herunterladen, der den Namen errät. Ein Backup auf demselben Server kann derselbe Angreifer löschen. Bewahren Sie mindestens eine Kopie dort auf, wo die Zugangsdaten der Website nicht hinreichen, und testen Sie eine vollständige Wiederherstellung.

8. Dateiintegrität prüfen

WP-CLI kann Ihre Dateien mit den offiziellen Prüfsummen von WordPress.org vergleichen, ohne WordPress zu laden:

wp core verify-checksums --include-root
wp plugin verify-checksums --all

Der erste Befehl meldet veränderte Kerndateien, und --include-root warnt vor unerwarteten Dateien im Stammverzeichnis. Der zweite gleicht Plugins mit den Prüfsummen von WordPress.org ab und hilft daher nur bei Plugins, die dort gehostet werden. Suchen Sie außerdem nach PHP-Dateien in wp-content/uploads, wo normalerweise nur Mediendateien liegen sollten.

9. Einen Datenbankbenutzer mit minimalen Rechten verwenden

Geben Sie jeder Website eine eigene Datenbank und einen eigenen Datenbankbenutzer mit Rechten nur auf diese Datenbank. Verbinden Sie sich nie als Root-Benutzer der Datenbank.

Der Härtungsleitfaden weist darauf hin, dass der laufende Betrieb nur SELECT, INSERT, UPDATE und DELETE braucht. Er rät nicht dazu, DROP, ALTER und GRANT zu entziehen, weil Plugins und größere Updates das Schema unter Umständen ändern müssen. Wenn Sie diese Rechte trotzdem entfernen, halten Sie getestete Backups bereit.

10. Dateiberechtigungen setzen

Der Leitfaden empfiehlt als Ausgangspunkt 755 für Verzeichnisse und 644 für Dateien. Kerndateien, wp-admin und wp-includes sollten nur für Ihr Benutzerkonto beschreibbar sein, nicht für den Webserver. wp-content ist die Ausnahme: Dort muss der Webserver für Uploads schreiben können. Für wp-config.php schlägt der Leitfaden 400 oder 440 vor.

find /var/www/example -type d -exec chmod 755 {} \;
find /var/www/example -type f -exec chmod 644 {} \;
chmod 440 /var/www/example/wp-config.php

Passen Sie Pfade und Eigentümer an Ihre Hosting-Umgebung an, bevor Sie diese Befehle ausführen.

11. Security-Header senden

Header wie Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options und Referrer-Policy sorgen für zusätzlichen Schutz im Browser. Setzen Sie sie nach Möglichkeit auf dem Webserver oder im CDN statt über ein Plugin. Beginnen Sie mit einer Content Security Policy im Report-only-Modus, denn Themes und Page-Builder setzen oft auf Inline-Skripte.

12. Eine WAF vorschalten

Die WordPress-Dokumentation beschreibt drei Ebenen: Sicherheits-Plugins, die Anfragen innerhalb von WordPress filtern, eine Firewall auf Serverebene wie ModSecurity und Reverse-Proxy-Dienste, die den Datenverkehr filtern, bevor er Ihren Server erreicht. Je weiter außen gefiltert wird, desto weniger Last erreicht PHP. Eine WAF ersetzt keine Updates. Sie verschafft Ihnen Zeit zwischen der Veröffentlichung einer Schwachstelle und Ihrem Patch.

Die Kurzfassung

BereichMinimum
UpdatesAutomatische Minor-Updates des Kerns aktiv, Plugins wöchentlich geprüft
PluginsKeine geschlossenen, verwaisten oder ungenutzten Plugins installiert
KontenNamentliche Konten, wenige Administratoren, 2FA für alle
AnmeldungBegrenzung auf Server oder Netzwerkrand, XML-RPC gesperrt, wenn ungenutzt
CodeänderungenDISALLOW_FILE_EDIT gesetzt
BackupsAußerhalb des Servers, außerhalb des Web-Roots, Wiederherstellung getestet
IntegritätPrüfsummen verifiziert, kein PHP in Uploads
DatenbankEin Benutzer pro Website, Rechte nur auf die eigene Datenbank
BrowserHSTS und eine getestete CSP
PerimeterWAF oder Reverse Proxy vorgeschaltet

Wo Sie anfangen

Beginnen Sie mit den ersten vier Punkten. Sie kosten wenig Zeit und erfordern keine Änderungen am Hosting. Prüfen Sie dann Ihre aktuellen Header mit unserem Security-Header-Scanner.

Wenn Sie das prüfen lassen möchten: SecAudit scannt WordPress auf Malware und Web-Shells, prüft die Dateiintegrität anhand offizieller Prüfsummen und gleicht installierte Plugins mit bekannten Schwachstellen ab.

So können wir helfen

SecAudit

Unser eigenes Produkt. SecAudit prüft WordPress-Websites auf Malware, verwundbaren Code, geänderte Dateien und bekannte Schwachstellen und macht daraus Berichte mit Zuordnung zu OWASP, DSGVO und NIS2.

Security-Header-Scanner

HTTP-Security-Header, Cookies und TLS-Zertifikat einer Website bewerten, mit einer Lösung für jeden Befund.

Schreiben Sie uns
AngelForce-Team

Geschrieben vom AngelForce-Team: Sicherheitsberater mit CEH-, LPT-Master- und CISA-Zertifizierung, die Systeme von Organisationen in ganz Europa und in der Türkei testen, überwachen und schützen.

Mit KI-Unterstützung auf Grundlage der unten aufgeführten öffentlichen Quellen verfasst und vor der Veröffentlichung vom AngelForce-Team geprüft.

Quellen

  1. developer.wordpress.org/advanced-administration/security/hardening/
  2. developer.wordpress.org/advanced-administration/security/brute-force/
  3. developer.wordpress.org/plugins/wordpress-org/alerts-and-warnings/
  4. developer.wordpress.org/reference/hooks/xmlrpc_enabled/
  5. developer.wordpress.org/cli/commands/core/verify-checksums/
  6. wordpress.org/documentation/article/plugins-themes-auto-updates/

Artikel zum Thema WordPress

Sagen Sie uns, was Sie schützen müssen

Beschreiben Sie Ihre Umgebung und was Sie erreichen möchten. Wir antworten per E-Mail.

Schreiben Sie uns
info@angelforce.eu

AngelForce OÜ · Tallinn, Estland