wp-config.php absichern: Sicherheitslücken schließen und die WordPress-Sicherheit erhöhen

Während wp-config.php in vi geöffnet war, ließ sich die im selben Ordner angelegte Swap-Kopie (.swp) direkt über eine Webadresse aufrufen. Das haben wir am 2026-09-13 auf dieser Website selbst festgestellt, und in dieser Kopie standen das Datenbankpasswort und sämtliche Sicherheitsschlüssel.
Für die Sicherheit der wp-config.php gehst du die sechs Prüfungen unten der Reihe nach von oben durch.
1️⃣ Was passiert, wenn die wp-config.php offenliegt
In der wp-config.php stehen Name, Benutzer und Passwort der Datenbank sowie acht Sicherheitsschlüssel, mit denen die Login-Cookies verschlüsselt werden.

Liegt diese Datei offen, kann ein Angreifer sich direkt mit der Datenbank verbinden oder mit den Sicherheitsschlüsseln Login-Sitzungen fälschen und so Admin-Rechte übernehmen.
2️⃣ Dateirechte auf 600 beschränken
WordPress setzt Ordner meist auf 755 und Dateien auf 644, die wp-config.php aber beschränkst du auf 600, sodass nur der Eigentümer sie lesen und schreiben kann. Dieser Befehl lief auf der Testseite testpilotweb.com.
chmod 600 /home/testpilotweb/www/wp-config.php
stat -c '%a %U' /home/testpilotweb/www/wp-config.php
600 testpilotwebAuf Servern, auf denen PHP unter einem anderen Konto als dem Dateieigentümer läuft, kann WordPress die Datei bei 600 nicht lesen, und die Website lädt nicht. Auf testpilotweb.com läuft PHP-FPM unter demselben Konto wie der Eigentümer, deshalb lud die Website auch nach der Änderung normal.
Beim Shared Hosting ohne SSH setzt du denselben Wert über das Rechte-Menü eines FTP-Programms oder des cPanel-Dateimanagers.
3️⃣ Zugriff auf dem Webserver sperren
Kannst du die Rechte nicht ändern oder willst eine zweite Schutzschicht, lässt du den Webserver Anfragen nach wp-config.php ganz ablehnen.
🔲 Apache (.htaccess)
<Files wp-config.php>
Require all denied
</Files>Die in älteren Artikeln häufigen Zeilen [order allow,deny] und [deny from all] sind Syntax von Apache 2.2. Unter Apache 2.4 funktionieren sie nur, wenn das Kompatibilitätsmodul (mod_access_compat) aktiv ist.
🔲 nginx
nginx liest keine .htaccess, deshalb kommt eine [location]-Regel in die Serverkonfiguration; auch diese Website gibt so 403 zurück.
location ~* /wp-config(-sample)?\.php$ {
deny all;
}Den Punkt im regulären Ausdruck maskierst du als [\.]. Bleibt der Punkt unmaskiert, werden auch Beitragsadressen wie [/wp-config-php-grundeinstellungen/] gesperrt; auch auf dieser Website lieferte ein Beitrag wegen genau dieses Fehlers einmal 403.
4️⃣ Swap-Dateien des Editors und Backup-Dateien sperren
Die [.swp]-Kopie, die entsteht, solange eine Datei in vi geöffnet ist, und die vor dem Bearbeiten angelegte [.bak]-Kopie werden nicht als PHP ausgeführt, sondern als reiner Text ausgeliefert.
nginx kappt beide Arten zusammen; [444] ist ein nginx-eigener Code, der die Verbindung ohne Antwort schließt.
location ~ \.sw[opx]$ { return 444; }
location ~* (\.(bak|orig|old|save)|_ori|\.bak\.[0-9]+)$ { return 444; }5️⃣ Eine Ebene über das Web-Root verschieben
WordPress sucht die wp-config.php zuerst im Installationsordner und lädt sie, wenn sie dort fehlt, aus dem Ordner direkt darüber. Schiebst du die Datei eine Ebene aus [public_html] heraus, ist sie über keine Webadresse mehr erreichbar.
Liegt im Ordner darüber allerdings die [wp-settings.php] einer anderen WordPress-Installation, liest WordPress die wp-config.php dort nicht. Prüf nach dem Verschieben sofort, ob Website und Admin-Bereich noch laden.
6️⃣ Dateibearbeitung deaktivieren
Damit schaltest du im WordPress-Dashboard die Menüs ‘Theme-Datei-Editor’ und ‘Plugin-Datei-Editor’ ab. Selbst wenn ein Angreifer Admin-Rechte übernimmt, ist das eine der stärksten Abwehrmaßnahmen dagegen, über den Browser Schadcode einzuschleusen.
define('DISALLOW_FILE_EDIT', true); 7️⃣ wp-config-sample.php löschen
wp-config-sample.php ist eine Beispieldatei für die Installation und kann gelöscht werden, sobald die Installation fertig ist. Sie enthält nichts Sensibles, aber Angreifer suchen sie unter ihrem Standardpfad, also gibt es keinen Grund, sie zu behalten.
Die echten Zeilen der Beispieldatei und was jeder Eintrag bedeutet, findest du im Beitrag wp-config.php Grundeinstellungen zusammengefasst. Behältst du die Datei, sperrt der Teil [(-sample)?] der nginx-Regel oben sie gleich mit.
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.