WordPress betreibt über 40% aller Websites weltweit, was es zum bevorzugten Ziel automatisierter Angriffe macht. Die gute Nachricht: Die meisten erfolgreichen WordPress-Hacks nutzen bekannte, leicht vermeidbare Schwachstellen aus. Diese Checkliste führt dich durch jede Sicherheitsebene, von der Transportverschlüsselung bis zur Server-Härtung. Arbeite sie systematisch durch, und deine Seite wird deutlich schwerer angreifbar sein als die große Mehrheit der WordPress-Installationen.
WordPress-Absicherung mit SSL und HTTPS
HTTPS verschlüsselt alle Daten zwischen dem Browser deiner Besucher und deinem Server. Ohne SSL werden Anmeldedaten, Formulareinreichungen und Session-Cookies im Klartext übertragen, was sie in öffentlichen Netzwerken trivial abfangbar macht.
- Gültiges SSL-Zertifikat installieren: Die meisten Hosting-Anbieter bieten kostenlose Let's-Encrypt-Zertifikate an, die sich alle 90 Tage automatisch erneuern. Falls dein Hoster kein Let's Encrypt unterstützt, bietet Cloudflare im kostenlosen Tarif ein gemeinsames SSL-Zertifikat. Es gibt keinen Grund mehr, ohne HTTPS zu arbeiten.
- Gesamten HTTP-Traffic per 301-Redirect auf HTTPS umleiten: Richte eine permanente Weiterleitung ein, damit jede Anfrage an
http://automatisch aufhttps://umgeleitet wird. Für Apache fügt man dies in die.htaccessein:
Für Nginx einen Server-Block, der weiterleitet:RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; } - Alle Mixed-Content-Warnungen beheben: Nach der Umstellung auf HTTPS prüfe, ob noch Bilder, Skripte oder Stylesheets über HTTP geladen werden. Die Browser-Konsole markiert diese als "Mixed Content"-Warnungen. Aktualisiere fest codierte
http://-URLs in deiner Datenbank mit einem Werkzeug wie Better Search Replace. - HSTS-Header aktivieren: HTTP Strict Transport Security weist den Browser an, deine Domain immer über HTTPS aufzurufen, selbst wenn der Nutzer manuell
http://eingibt. Setze den Header mit einem max-age von mindestens sechs Monaten (15768000 Sekunden). AktiviereincludeSubDomainsnur, wenn alle deine Subdomains ebenfalls HTTPS unterstützen.
HTTP-Sicherheitsheader für WordPress konfigurieren
Sicherheitsheader sind Anweisungen, die dein Server an den Browser sendet. Sie kosten keine Performance, bieten aber erheblichen Schutz gegen gängige Angriffsarten wie Clickjacking, MIME-Type-Verwechslung und Cross-Site-Scripting.
- X-Frame-Options: SAMEORIGIN: Verhindert, dass deine Seiten in iframes auf fremden Domains eingebettet werden. Das blockiert Clickjacking-Angriffe, bei denen ein Angreifer unsichtbare Elemente über deine Seite legt, um Nutzer zu täuschen.
- X-Content-Type-Options: nosniff: Verhindert, dass Browser den MIME-Typ einer Datei erraten. Ohne diesen Header könnte ein Browser eine Textdatei als JavaScript ausführen, wenn der Inhalt wie Code aussieht.
- Referrer-Policy: strict-origin-when-cross-origin: Kontrolliert, wie viele URL-Informationen beim Navigieren zu externen Seiten mitgesendet werden. Das verhindert, dass sensible URL-Parameter (wie Passwort-Reset-Tokens) an Drittanbieter-Server weitergegeben werden.
- Permissions-Policy: Beschränkt den Zugriff auf Browser-Funktionen wie Kamera, Mikrofon, Geolokalisierung und Payment-APIs für eingebettete Inhalte. Selbst wenn du diese Funktionen nicht nutzt, verhindert die Policy, dass eingeschleuste Skripte sie missbrauchen.
- Content-Security-Policy (CSP): Der mächtigste Sicherheitsheader, aber auch der komplexeste. CSP definiert, welche Quellen Skripte, Styles, Bilder und andere Ressourcen laden dürfen. Beginne mit
Content-Security-Policy-Report-Only, um Verstöße zu überwachen, ohne deine Seite zu beschädigen. Ein minimaler Ausgangspunkt:Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;
Du kannst diese Header in deiner .htaccess-Datei (Apache), deiner Nginx-Konfiguration oder über ein WordPress-Sicherheitsplugin setzen. Bei Cloudflare lassen sich die meisten auch unter Security > Settings konfigurieren.
WordPress-Core-Härtung: Wichtige Sicherheitsmaßnahmen
WordPress selbst wird gut gewartet und regelmäßig gepatcht, aber die Standardkonfiguration lässt einige Türen offen, die du bewusst schließen solltest.
- WordPress Core, Plugins und Themes konsequent aktuell halten: Die Mehrzahl der WordPress-Hacks nutzt bekannte Schwachstellen in veralteter Software aus. Aktiviere automatische Minor-Updates (sind standardmäßig an) und prüfe mindestens wöchentlich auf große Updates. Erwäge, automatische Plugin-Updates für vertrauenswürdige Plugins zu aktivieren.
- Ungenutzte Plugins und Themes vollständig deinstallieren: Ein deaktiviertes Plugin entfernt nicht seinen Code vom Server. Angreifer können Schwachstellen auch in deaktivierten Plugins ausnutzen. Lösche alles, was du nicht aktiv nutzt, und behalte nur ein Standard-Theme als Fallback.
- XML-RPC deaktivieren: Die XML-RPC-Schnittstelle (
/xmlrpc.php) wurde für Remote-Publishing und Pingbacks entwickelt. Heute wird sie hauptsächlich für Brute-Force-Amplification-Angriffe und DDoS missbraucht. Sofern du sie nicht für Jetpack oder die WordPress-Mobile-App benötigst, deaktiviere sie komplett. Blockierung auf Server-Ebene:# Apache .htaccess <Files xmlrpc.php> Order Deny,Allow Deny from all </Files> - REST-API-Benutzer-Endpunkt einschränken: Standardmäßig gibt
/wp-json/wp/v2/usersBenutzernamen für jeden preis. Damit können Angreifer trivial gültige Login-Namen ermitteln. Beschränke diesen Endpunkt auf authentifizierte Anfragen, entweder mit einem Plugin oder einem eigenen Code-Snippet. - Benutzer-Enumeration über Autoren-Archive blockieren: Auch ohne REST API können Angreifer Benutzernamen ermitteln, indem sie
/?author=1,/?author=2usw. aufrufen. Blockiere dies durch Umleitung der Autoren-Archiv-Anfragen oder deaktiviere sie vollständig, wenn deine Seite sie nicht benötigt. - WordPress-Versionsnummer entfernen: WordPress gibt seine Version in einem Meta-Tag und in den URLs von Core-CSS/JS-Dateien aus. Das Entfernen der Version zwingt Angreifer zum Ausprobieren, anstatt einfach bekannte Schwachstellen für deine exakte Version nachzuschlagen.
- Debug-Log absichern oder löschen: Wenn
WP_DEBUG_LOGaktiviert ist, schreibt WordPress Fehler in/wp-content/debug.log. Diese Datei kann Datenbankabfragen, Dateipfade, Plugin-Fehler und andere für Angreifer nützliche Informationen enthalten. Lass Debug-Logging auf Produktivsystemen niemals aktiviert, und wenn die Datei existiert, lösche sie oder blockiere den Zugriff. - Starke, einzigartige Passwörter und Zwei-Faktor-Authentifizierung verwenden: Jedes WordPress-Konto sollte ein Passwort mit mindestens 16 Zeichen haben, das einzigartig für diese Seite ist. Füge Zwei-Faktor-Authentifizierung (2FA) mit einem Plugin wie WP 2FA oder Wordfence Login Security hinzu. Diese einzelne Maßnahme blockiert praktisch alle Brute-Force-Angriffe.
- Login-Versuche begrenzen: WordPress erlaubt standardmäßig unbegrenzte Anmeldeversuche. Verwende ein Plugin wie Limit Login Attempts Reloaded, um IP-Adressen nach einigen fehlgeschlagenen Versuchen zu sperren, oder nutze eine Web Application Firewall (WAF) mit eingebautem Brute-Force-Schutz.
- Standard-Datenbank-Tabellenpräfix ändern: WordPress verwendet
wp_als Standard-Präfix. Eine Änderung zu einem einzigartigen Wert bei der Installation erschwert automatisierte SQL-Injection-Angriffe leicht. Falls deine Seite bereits live ist, kannst du es nachträglich ändern, aber sichere vorher deine Datenbank.
WordPress-Dateiberechtigungen und Server-Sicherheit
Dateiberechtigungen bestimmen, wer Dateien auf deinem Server lesen, schreiben und ausführen darf. Falsche Berechtigungen gehören zu den häufigsten Sicherheitsfehlern.
- Korrekte Dateiberechtigungen setzen: Verwende 644 für Dateien und 755 für Verzeichnisse. Die
wp-config.phpsollte auf 600 oder 640 gesetzt sein. Verwende niemals 777, da dies jedem vollen Lese-, Schreib- und Ausführungszugriff gibt. - wp-config.php vor Webzugriff schützen: Diese Datei enthält deine Datenbank-Zugangsdaten, Authentifizierungsschlüssel und Salts. Für Apache in der
.htaccess:
Einige Sicherheitsleitfäden empfehlen,<Files wp-config.php> Order Allow,Deny Deny from all </Files>wp-config.phpein Verzeichnis über den Web-Root zu verschieben. Das funktioniert bei den meisten Setups, kann aber bei manchen Hosting-Anbietern Probleme verursachen. - Den eingebauten Datei-Editor deaktivieren: WordPress enthält einen Datei-Editor im Admin-Panel, mit dem Administratoren Theme- und Plugin-Dateien direkt bearbeiten können. Wenn ein Angreifer Admin-Zugang erlangt, kann er über diesen Editor Schadcode in jede PHP-Datei einschleusen. Deaktiviere ihn mit dieser Zeile in der
wp-config.php:define('DISALLOW_FILE_EDIT', true); - Zugriff auf sensible Dateien blockieren: Dateien wie
readme.html,license.txtundwp-config-sample.phpverraten Informationen über deine WordPress-Version und Konfiguration. Blockiere den öffentlichen Zugriff über deine Server-Konfiguration. - Verzeichnisauflistung deaktivieren: Wenn Directory Listing aktiviert ist, kann jeder deinen
/wp-content/uploads/-Ordner durchbrowsen und jede hochgeladene Datei sehen. Deaktiviere dies mitOptions -Indexesin deiner.htaccess.
WordPress-Backup-Strategie und Wiederherstellungsplanung
Kein Sicherheitskonzept ist vollständig ohne eine zuverlässige Backup-Strategie. Im schlimmsten Fall ist ein aktuelles Backup der Unterschied zwischen einer kleinen Unannehmlichkeit und einem Totalverlust.
- Tägliche Backups automatisieren: Verwende ein Plugin wie UpdraftPlus, BlogVault oder BackWPup, um automatische Backups nach Zeitplan auszuführen. Sichere mindestens täglich. Seiten mit hohem Traffic oder WooCommerce-Shops sollten Echtzeit-Backups in Betracht ziehen.
- Backups extern speichern: Bewahre Kopien auf einem externen Dienst wie Amazon S3, Google Cloud Storage oder Dropbox auf. Wenn dein Server kompromittiert wird, können lokale Backups ebenfalls betroffen sein.
- Den Wiederherstellungsprozess testen: Ein Backup, das du nie getestet hast, ist ein Backup, dem du nicht vertrauen kannst. Stelle dein Backup mindestens einmal pro Quartal in einer Staging-Umgebung wieder her, um zu bestätigen, dass es funktioniert.
- Mehrere Backup-Generationen vorhalten: Behalte mindestens 30 Tage täglicher Backups. Manche Infektionen bleiben wochenlang unentdeckt, daher brauchst du die Möglichkeit, auf einen bekannt sauberen Zustand zurückzurollen.
Laufende WordPress-Sicherheitsüberwachung
Sicherheit ist kein einmaliges Projekt. Regelmäßig werden neue Schwachstellen entdeckt, und die Konfiguration deiner Seite kann sich mit der Zeit verändern, wenn Plugins hinzugefügt oder Einstellungen geändert werden.
- Ein Sicherheitsplugin installieren: Wordfence, Sucuri oder NinjaFirewall bieten Echtzeit-Schutz mit Firewall-Regeln, Malware-Scanning und Login-Sicherheit. Wähle eines (nicht mehrere, da sie sich gegenseitig stören können) und konfiguriere die Benachrichtigungen.
- Automatische InspectWP-Scans einrichten: Plane regelmäßige Scans, um deine Sicherheitslage über die Zeit zu überwachen. InspectWP benachrichtigt dich über neue Probleme wie fehlende Header, exponierte Debug-Logs oder Versionsnummer-Leaks, sobald sie auftreten.
- Update-Benachrichtigungen aktivieren: Stelle sicher, dass WordPress dir E-Mail-Benachrichtigungen sendet, wenn Core-, Plugin- oder Theme-Updates verfügbar sind. Sicherheitspatches müssen oft innerhalb von Stunden nach der Veröffentlichung eingespielt werden.
- Benutzerkonten regelmäßig überprüfen: Entferne inaktive Konten, besonders solche mit Administrator- oder Redakteur-Rollen. Prüfe deine Benutzerliste mindestens monatlich und entziehe sofort den Zugriff für alle, die ihn nicht mehr benötigen.
- Zugriffsprotokolle überwachen: Prüfe deine Server-Logs auf ungewöhnliche Muster, wie wiederholte Anfragen an
/wp-login.php,/xmlrpc.phpoder Pfade, die nicht existieren. Viele Sicherheitsplugins bieten eine vereinfachte Log-Ansicht.
WordPress-Sicherheit mit InspectWP überprüfen
Führe einen umfassenden InspectWP-Scan durch, um alle sicherheitsrelevanten Punkte auf einmal zu prüfen. Der Sicherheitsbereich deckt SSL-Konfiguration, HTTP-Sicherheitsheader, WordPress-Versionsanzeige, REST-API-Benutzer-Enumeration, Debug-Log-Zugänglichkeit und vieles mehr ab. Richte automatische Scans ein, um Benachrichtigungen zu erhalten, sobald sich deine Sicherheitslage ändert, damit du neue Probleme beheben kannst, bevor sie ausgenutzt werden.