Hier hilft die Datei .htaccess mal wieder schnell und unkompliziert aus der Klemme. Hier hat man die Möglichkeit sämtliche Zugriffsrechte zu steuern, also auch Dateien zu schützen, ja sogar ganze Verzeichnisse.

Um nun die wp-config.php zu schützen, wird der .htaccess, welche im Installationsverzeichnis von WordPress liegt und somit im selben Verzeichnis wie auch die wp-config.php, ein neuer Eintrag hinzugefügt.

1
2
3
4
<Files wp-config.php>
        Order Deny,Allow
        Deny from all
</Files>

[info]Der Punkt (.) vor dem Dateinamen .htaccess ist kein persönlicher Fetisch von mir, sondern absolut notwendig !![/info]

Ist diese Regel nun in die .htaccess eingetragen, ist der Zugriff von extern auf die wp-config.php nicht mehr erlaubt.

1
2
3
4
5
6
ppfeufer@prometheus ~ $ wget http://ppfeufer.de/wp-config.php
--2011-01-14 21:22:17--  http://ppfeufer.de/wp-config.php
Auflösen des Hostnamen »blog.ppfeufer.de«....
Verbindungsaufbau zu blog.ppfeufer.de:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 403 Forbidden
2011-01-14 21:22:17 FEHLER 403: Forbidden.

Wie zu sehen ist, bekommt man nun die Antwort 403 Forbidden.

Natürlich könnte wget die Datei nicht so ohne weiteres herunterladen, auch wenn sie nicht geschützt wäre, da wget von sich aus Sciptdateien interpretiert und sich somit eher wie ein Browser verhält. Da wären noch ein paar Optionen notwendig. Dies dient hier lediglich zur Verdeutlichung.

10 Meinungen zu “HowTo: wp-config.php vor unerlaubtem Zugriff schützen

  1. Im wesentlichen ein guter Post, aber mit dem letzten Absatz hab ich ein kleines Problem.
    wget interpretiert nie eine Scriptdatei beim herunterladen. Der Server interpretiert die PHP-Datei und gibt das Ergebnis aus, in diesem Fall nichts.

    Wenn der Server richtig konfiguriert ist, helfen keine Optionen in wget um an den Inhalt der PHP-Datei von außen ranzukommen.

    Eine andere Variante, die wp-config.php gegen Zugriff von außen abzusichern wäre z.B. ein redirect auf die Startseite.

  2. Hallo Frank,

    Richtig, im Fall von PHP-Dateien werden diese vom Server interpretiert. Ist vielleicht etwas unglücklich ausgedrückt diese Passage.

    Wenn der Server richtig konfiguriert ist, helfen keine Optionen in wget um an den Inhalt der PHP-Datei von außen ranzukommen.

    Solche Konfigurationen sind allerdings leider nicht die Regel. Und wenn wget nicht weiterhilft, gibt es anderen Möglichkeiten um an die Datei zu kommen. Ging mir in dem Beispiel auch lediglich um die Antwort die zurückgeliefert wird.

    Mit einem redirect auf die Startseite kannst Du aber eventuell auch WordPress selbst damit erwischen, wenn dieser zu allgemein gehalten ist. Ich habe es nicht getestet, aber wenn Du da ne Regel für die .htaccess hast, immer her damit.

    • Die erste RewriteRule in der .htaccess erledigt das:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /blog/
      RewriteRule ^wp-config\.php$ /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /blog/index.php [L]
      </IfModule>

      # END WordPress

      Wenn man die Permalinks in WordPress neu konfiguriert wird das halt wieder überschrieben, da sollte man drandenken.

  3. Hallo, ich verstehe im Moment nicht warum die wp config so zu schützten wäre? Wenn ich Sie direkt aufrufe wird Sie i.d.R. geparsed und ich sehe nichts, womit runterladen schonmal flach fällt. Wenn ich „Angreifer“ wäre würde ich versuchen eigene Dateien via include auf den Server zu bringen und mir den Inhalt der Datei oder gleich die Datei vom Server aus anzeigen zu lassen und dann würde htaccess ja auch nichts bringen, oder?

    Einzig wenn der PHP Interpreter ausfällt und alle Dateien in Klartext anzeigt, wäre es ein Schutz oder sehe ich das falsch?

    Gruß,

    Andreas

  4. Nun, zunächst einmal steht außer Frage, dass es keinen hundertprozentigen Schutz gibt. Auch müssen wir nicht darüber diskutieren, dass es Mittel und Wege gibt, PHP zu umgehen. Und wie Du schon sagst, PHP kann auch ausfallen und sei es nur durch ein „schief“ gelaufenes Update, wo mal wieder irgendwelche Symlinks nicht passen. Alles schon vorgekommen.

    Daher ist es lediglich eine zusätzliche Schutzmaßnahme, um Zugriffe von außen zu erschweren. Unmöglich ist es dadurch noch lange nicht, aber eben etwas umständlicher. Und da in dieser Datei auch Datenbankinformationen hinterlegt sind, bin ich der Meinung, dass man diese Maßnahme durchaus auch in Betracht ziehen sollte.

  5. Also ich denke auch, lieber einmal zu viel als zu wenig absichern.
    Mir selbst ist es schon untergekommen, dass php nicht mehr wollte, und schon beginnen die Sicherheitslücken und ziehen einen riesigen Aufwand hinter sich her (falls man php nicht sofort wieder zum laufen bringt)

    In jedem Fall danke, auch für die Möglichkeit, die in den Kommentaren aufgezeigt wurde.

    Gruß,
    Martin

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>