Kurze Antwort: ja
Die Antwort auf diese Frage ist ein eindeutiges Ja und es ist völlig unverantwortlich , etwas anderes zu sagen .
Lange Antwort: ein reales Beispiel
Gestatten Sie mir, ein sehr reales Beispiel von meinem sehr realen Server zu liefern, bei dem das Verschieben wp-config.php
außerhalb des Webstamms speziell das Erfassen seines Inhalts verhinderte .
Der Fehler:
Werfen Sie einen Blick auf diese Beschreibung eines Fehlers in Plesk (behoben in 11.0.9 MU # 27):
Plesk setzt die Weiterleitung von Subdomains zurück, nachdem das Abonnement mit dem Hosting-Plan synchronisiert wurde (117199)
Klingt harmlos, oder?
Nun, hier ist, was ich getan habe, um diesen Fehler auszulösen:
- Richten Sie eine Subdomain ein, um zu einer anderen URL umzuleiten (z . B.
site.staging.server.com
zu site-staging.ssl.server.com
).
- Der Serviceplan des Abonnements wurde geändert (z. B. die PHP-Konfiguration).
Als ich dies getan habe, hat Plesk die Subdomain auf die Standardeinstellungen zurückgesetzt: Inhalte von werden bereitgestellt ~/httpdocs/
, ohne dass Interpreter (z. B. PHP) aktiv sind.
Und ich habe es nicht bemerkt. Für Wochen.
Das Ergebnis:
- Mit
wp-config.php
im Webroot /wp-config.php
hätte eine Aufforderung die WordPress-Konfigurationsdatei heruntergeladen.
- Bei
wp-config.php
außerhalb des Webstamms eine Aufforderung zum /wp-config.php
Herunterladen einer völlig harmlosen Datei. Die echte wp-config.php
Datei konnte nicht heruntergeladen werden.
Daher ist es offensichtlich, dass das Verschieben wp-config.php
außerhalb des Webstamms echte Sicherheitsvorteile in der realen Welt bietet .
So bewegen Sie sich wp-config.php
an einen beliebigen Ort auf Ihrem Server
WordPress sucht automatisch in einem Verzeichnis über Ihrer WordPress-Installation nach Ihrer wp-config.php
Datei. Wenn Sie diese also dort verschoben haben, sind Sie fertig!
Aber was ist, wenn Sie es woanders hingelegt haben? Einfach. Erstellen Sie eine neue wp-config.php
im WordPress-Verzeichnis mit dem folgenden Code:
<?php
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Location of your WordPress configuration. */
require_once(ABSPATH . '../phpdocs/wp-config.php');
(Stellen Sie sicher, dass Sie den obigen Pfad in den tatsächlichen Pfad Ihrer verschobenen wp-config.php
Datei ändern .)
Wenn Sie auf ein Problem mit open_basedir
stoßen, fügen Sie einfach den neuen Pfad zur open_basedir
Direktive in Ihrer PHP-Konfiguration hinzu:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
Das ist es!
Argumente auseinandernehmen
Jedes Argument gegen das Verschieben wp-config.php
außerhalb der Webwurzel hängt von falschen Annahmen ab.
Argument 1: Wenn PHP deaktiviert ist, sind sie bereits in
Die einzige Möglichkeit, wie jemand den Inhalt von [ wp-config.php
] sieht, besteht darin, den PHP-Interpreter Ihres Servers zu umgehen. In diesem Fall haben Sie bereits Probleme: Er hat direkten Zugriff auf Ihren Server.
FALSE : Das oben beschriebene Szenario ist das Ergebnis einer Fehlkonfiguration und kein Eingriff.
Argument 2: Versehentliches Deaktivieren von PHP ist selten und daher unbedeutend
Wenn ein Angreifer genügend Zugriff hat, um den PHP-Handler zu ändern, sind Sie bereits geschraubt. Nach meiner Erfahrung sind versehentliche Änderungen sehr selten, und in diesem Fall wäre es einfach, das Kennwort zu ändern.
FALSE : Das oben beschriebene Szenario ist das Ergebnis eines Fehlers in einer allgemeinen Serversoftware, der sich auf eine allgemeine Serverkonfiguration auswirkt. Dies ist kaum "selten" (und außerdem bedeutet Sicherheit, sich über das seltene Szenario Gedanken zu machen).
WTF : Das Ändern des Passworts nach einem Eindringen hilft kaum, wenn während des Eindringens vertrauliche Informationen erfasst wurden. Glauben wir wirklich immer noch, dass WordPress nur für gelegentliches Bloggen verwendet wird und dass Angreifer nur an einer Verunstaltung interessiert sind? Sorgen wir uns darum, unseren Server zu schützen und nicht nur wiederherzustellen, nachdem jemand hereingekommen ist.
Argument 3: Den Zugang zu verweigern wp-config.php
ist gut genug
Sie können den Zugriff auf die Datei über Ihre virtuelle Hostkonfiguration .htaccess
einschränken oder
- den Zugriff von außen auf die Datei auf die gleiche Weise wie beim Verschieben außerhalb des Dokumentstamms einschränken.
FALSCH : Stellen Sie sich vor Ihrem Server Standardwert für einen virtuellen Host ist: keine PHP, keine .htaccess
, allow from all
(kaum ungewöhnlich in einer Produktionsumgebung). Wenn Ihre Konfiguration während eines Routinevorgangs auf irgendeine Weise zurückgesetzt wird , z. B. durch ein Panel-Update, wird der Standardzustand wiederhergestellt, und Sie werden freigelegt.
Wenn Ihr Sicherheitsmodell versagt, wenn die Einstellungen versehentlich auf die Standardeinstellungen zurückgesetzt werden, benötigen Sie mehr Sicherheit.
WTF : Warum würde jemand speziell weniger Sicherheitsebenen empfehlen? Teure Autos haben nicht nur Schlösser. Sie haben auch Alarme, Wegfahrsperren und GPS-Tracker. Wenn es sich lohnt, etwas zu schützen, machen Sie es richtig.
Argument 4: Unbefugter Zugriff wp-config.php
ist keine große Sache
Die Datenbankinformationen sind wirklich die einzigen vertraulichen Inhalte in [ wp-config.php
].
FALSE : Die Authentifizierungsschlüssel und Salt können für eine beliebige Anzahl potenzieller Hijacking-Angriffe verwendet werden.
WTF : Auch wenn Datenbankanmeldeinformationen das einzige sind wp-config.php
, sollten Sie Angst davor haben, dass ein Angreifer sie in die Hände bekommt.
Argument 5: Durch das Verschieben wp-config.php
außerhalb des Webstamms wird ein Server weniger sicher
Sie müssen WordPress weiterhin Zugriff auf [ wp-config.php
] gewähren , sodass Sie open_basedir
das Verzeichnis über dem Dokumentstamm einschließen müssen.
FALSE : Angenommen, es wp-config.php
ist in httpdocs/
, verschieben Sie es einfach auf ../phpdocs/
und legen Sie fest open_basedir
, dass nur httpdocs/
und eingeschlossen werden phpdocs/
. Zum Beispiel:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
(Denken Sie daran, immer anzugeben /tmp/
, oder Ihr Benutzerverzeichnis tmp/
, falls Sie eines haben.)
Fazit: Konfigurationsdateien sollten immer immer immer außerhalb des Web - Root befindet
Wenn Ihnen die Sicherheit am Herzen liegt, werden Sie wp-config.php
außerhalb Ihres Webstamms verschoben .