Gastbeitrag: Tipps und Codebeispiele für mehr Sicherheit

Die .htaccess für WordPress: ein Alleskönner

Share on Facebook0Tweet about this on Twitter8Share on Google+0Share on LinkedIn0Email this to someone

Die .htaccess hat sich mittlerweile auf jeder aktiven Webseite etabliert und ist in vielen Fällen absolut sinnvoll. Welche Fälle das im Einzelnen sind, zeige ich euch anhand von Beispielen für WordPress. Diese stelle ich euch auf einem Apache Webserver zur Verfügung.

htaccess

Bevor ihr startet, empfehle ich euch eine kurze Sicherung, um im „Notfall“ zum alten Stand zurückkehren zu können.

Wie sieht der typische Aufbau einer .htaccess in WordPress aus?

Gehen wir einmal davon aus, die Datei liegt bereits in eurer Standardinstallation
im Hauptverzeichnis und ihr könnt aktiv Änderungen durchführen.

Bei den meisten Usern sieht die .htaccess am Anfang so aus:

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

Hier die Erklärung zu den einzelnen Zeilen:

  1. Dient lediglich als Kommentar und zeigt auf, dass diese Einträge für WordPress genutzt werden.
  2. Das mod_rewrite Modul wird an der Stelle geladen, falls es installiert ist (Voraussetzung).
  3. Der Server aktiviert die Rewrite-Funktion zum Umschreiben von URLs.
  4. Fügt ein simples / ein nachdem eine URL z. B. umgeschrieben wurde.
  5. Sofern die index.php angesprochen wird, passiert nichts weiter (um Schleifen abzufangen, [L] bricht eine Abarbeitung weiterer Regeln ab).
  6. Prüft, ob es die angesprochene Datei gibt (sonst greift die untere RewriteRule).
  7. Prüft ebenfalls, ob es den angesprochenen Ordner gibt (auch hier greift dann die untere RewriteRule).
  8. Falls eine der beiden Regeln in 6 oder 7 greift, wird der Eintrag index.php in die Adresszeile geschrieben.
  9. Das aktivierte mod_rewrite Modul in Zeile 2 deaktiviert ihr nun wieder.
  10. Und final noch einmal ein Kommentar, der ignoriert werden kann.

So, nun kennt ihr die Grundfunktion der WordPress .htaccess. Sehen wir uns die Beispiele an.

Praktische sicherheitsrelevante Beispiele für die .htaccess in WordPress

Eine Auflistung der Inhalte des Verzeichnisses verhindern:

Wenn eure Dateien und Ordner offen liegen, ist dies ein gefundenes Fressen für zahlreiche User, die euch schaden möchten. So können auch entsprechende Dateien über Google gefunden werden, die zum Beispiel aktuell eine Schwachstelle besitzen. „Prevent Directory Listings“ sollte demnach in jede .htaccess hinein, um sicherer gegen Angriffe zu sein:

# Prevent Directory Listings
Options -Indexes

Den Login-Bereich zusätzlich mit einer Benutzer- und Passwortabfrage sichern:

Es ist zwar ein erhöhter Aufwand sich in der Benutzerabfrage sowie im WordPress-Login anzumelden, hat aber den Vorteil, dass Bruteforce-Attacken schon an der „Gartentür“ abgewehrt werden. Die Bots haben es somit doppelt so schwer und wenden sich meist schon nach einem Versuch ab.

# Auth protect wp-login.php
<Files wp-login.php>
 AuthName "Restricted Admin-Area"
 AuthType Basic
 AuthUserFile ~/.htpasswd
 Require valid-user
</Files>
# Deny access to important files
<FilesMatch "(\.htaccess|\.htpasswd)">
 Order deny,allow
 Deny from all
</FilesMatch>

Zusätzlich ist es notwendig, hier eine weitere Datei anzulegen, die im selben Verzeichnis liegen darf. Die Datei nennt ihr .htpasswd und füllt diese mit einem Benutzer und einem verschlüsselten Passwort. Dazu kann ich folgenden Generator empfehlen: MD5 .htpasswd

Wenn ihr die unten generierte Zeile im Generator nun in die .htpasswd legt und abspeichert, taucht das nächste Mal eine zusätzliche Benutzer- und Passwortabfrage auf.

zweiter-login

Ihr könnt natürlich auch mehrere User in die .htpasswd eintragen. Dabei gilt: Nur ein User pro Zeile. Das hat den Vorteil, dass jeder Redakteur oder Admin sich mit seinen Login-Daten einloggen kann.

Nur gewisse IP-Adressen durchlassen:

Mit diesem Auszug habt ihr die Möglichkeit, bei einer festen IP-Adresse (oft bereits schon in Firmen vorhanden) eine Benutzersperre für unbefugte einzurichten. So könnt nur ihr mit eurer eingetragenen aktiven IP-Adresse auf die Seite oder ins Backend. Habt ihr keine feste IP-Adresse, würdet ihr euch selber aussperren bei einem IP-Wechsel über Nacht.

Order deny,allow
Deny from All
Allow from xxx.xxx.xxx.xx1
Allow from yyy.yyy.yyy.yy2

So erlaubt ihr nur den IP-Adressen  xxx.xxx.xxx.xx1 und yyy.yyy.yyy.yy2 den Durchgang zum Inhalt.

Vorsicht: Wird dieser Eintrag im Hauptverzeichnis von WordPress abgelegt, kann kein User mehr auf eure Seite, außer ihr selbst. Daher erstellt ihr am besten eine neue .htaccess im Unterordner /wp-admin/ mit dem Inhalt.

Nur gewisse IP-Adressen sperren:

Order deny,allow
Allow from All
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx.xxy

Ähnlicher Aufbau wie oben, nur, dass ihr nun explizit IP-Adressen angeben könnt, die gesperrt werden sollen.

„Nice to have“ in der .htaccess von WordPress

Hotlinking eurer kostbaren Bilder verbieten + Weiterleitung:

Warum ist hotlinking schlecht? Wenn andere User eure Bilder einfach hotlinken, verursacht dies unnötige Performance-Einbußen auf eurem Webspace. Das mag am Anfang vielleicht nicht so viel sein, aber es sammelt sich. Im Worst Case wird das Bild weit verbreitet und ihr habt zwar die Performance  und den Traffic abgegeben, aber aktive User habt ihr keine erhalten.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?meine-domain.de [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ www.domain-test.de/link-zum.bild.jpg [NC,R,L]

Der Auszug wird in der 3. Zeile entsprechend eurer Domain angepasst, verlinkt nun ein User auf seinem Portal direkt euer Bild, erscheint bei ihm nur noch ein fehlerhaftes Bilddokument.

.htaccess bietet viele Optionen

Ihr seht also, die .htaccess ist ein mächtiges Werkzeug, das euch viele Möglichkeiten gibt, das Verhalten eurer WordPress-Seite zu kontrollieren. Ihr solltet jedoch nicht einfach nur Änderungen durchführen, sondern diese am besten danach auch prüfen.

PS: Falls ihr euch beim Lesen gefragt habt, warum ein „Punkt“ vor dem Dateinamen steht, dies ist eine Hinterlassenschaft aus dem Unix-Bereich und versteckt die Datei unter bestimmten Umständen.

Weitere Codes für die .htaccess findet ihr auf dieser Seite bei Github.


Artur Kern

Artur Kern

Hallo, ich bin Artur und arbeite seit 2011 im Kundenservice beim Webhoster Mittwald in Espelkamp. Mit WordPress befasse ich mich natürlich beruflich, nutze es aber auch für meine privaten Blog-Projekte.
Artur Kern

Letzte Artikel von Artur Kern (Alle anzeigen)

Share on Facebook0Tweet about this on Twitter8Share on Google+0Share on LinkedIn0Email this to someone
Kommentare zu "Die .htaccess für WordPress: ein Alleskönner"
  1. Thomas Wagner | Onlinemarketing Leipzig schrieb am 16. März 2015, um 10:46 Uhr:

    Hallo Artur,

    Hotlinking ist zwar doof, aber in der Bildersuche auch nicht mehr auftauchen ist auch doof.. 😉
    Hier solltest Du unbedingt ReWriteConditions für wichtige Bots hinzufügen. Zum Beispiel Google:
    RewriteCond %{HTTP_REFERER} !.*google.*$ [NC]
    RewriteCond %{HTTP_USER_AGENT} !.*google.*$ [NC]

    1. Artur Kern schrieb am 18. März 2015, um 11:43 Uhr:

      Hallo Thomas,

      danke dir für deine Rückmeldung.

      Du hast natürlich vollkommen Recht, es ist auch zu empfehlen das Gleiche für andere für einen selber relevante Suchmaschinen zu machen.

      Grüße
      Artur

  2. Dominik schrieb am 16. März 2015, um 11:18 Uhr:

    Hahaha haben wir euch mit unserem Artikel gestern Abend noch auf dieses Thema gebracht (klick auf Name) oder einfach krasser Zufall? 😀
    Toller Beitrag, wie immer, liebes Pressengers Team 🙂

    Liebe Grüße!

  3. Steffi schrieb am 18. März 2015, um 07:53 Uhr:

    Umso tragischer, dass T-Online .htaccess angeblich aus Sicherheitsgründen für seine Webserver gesperrt hat.
    Ständig hatte ich Probleme und hätte hier auf deren vorgefertige CMS zurück greifen müssen.

    Solch eine Bevormundung seinen Kunden gegenüber ist einfach nur unzeitgemäß und wie man sieht völlig deplatziert.

  4. Matthias schrieb am 19. März 2015, um 09:48 Uhr:

    Guter Artikel – wie gewohnt von Pressengers.
    Ich wollte das aussperren von externen Seiten schon umsetzen. Habe nämlich das Problem, dass Bilder von mir von einem Anbieter direkt in eBay eingebunden werden.
    Nach dem Kommentar von Thomas lasse ich das jetzt.
    Ich werde das Bild per Hand austauschen und dem eBay Shop ein „This picture was stolen“ Bild liefern.

    Grüße
    Matthias

  5. Patrick schrieb am 5. August 2015, um 15:34 Uhr:

    Hi zusammen!
    Ich habe folgendes Problem.

    Meine htaccess in meinem WordPress schreib in unregelmäßigen Abständen einfach ein „s“ (ja ihr hört richtig) in die aktuelle htacces hinein. Produziert somit einen 500 Fehler und die Seite ist down.

    Wenn ich dann die htacess per Web-FTP umbenenne, generiert sich ja eine neue und alles läuft wieder.
    Habe schon alle plugins kontrolliert und upgedatet etc.
    Auch die Permalink habe ich nochmal neu abgespeichert, da dies bei einigen auch eine Fehlerquelle gewesen war. Selbst mein Provider Domainfactory wußte auch nicht weiter.

    Habt ihr solch ein Problem schon mal gehabt oder weißt einen neuen Lösungsansatz?

    Gruß Patrick

    1. Sebastian schrieb am 23. Oktober 2015, um 13:31 Uhr:

      Ich habe ebenfalls dieses Problem mit der htaccess – zudem funktioniert die Anleitung wie oben beschrieben nicht. 🙁

      Freu mich auf Hilfe

  6. Can Agca schrieb am 14. August 2016, um 18:47 Uhr:

    Hallo, ich bin gerade dabei meine Pagespeed zu optimieren und wollte deswegen die htaccess Datei meiner WordPress Seite optimieren. Leider weiß ich nicht wo diese zu finden ist?? Auch wenn der Eintrag hier etwas älter ist, würde ich mich sehr freuen, wenn mir jemand sagen könnte wo diese zu finden ist.
    Vg
    Can

    1. Katharina schrieb am 16. August 2016, um 09:48 Uhr:

      Hallo Can,

      die htaccess findest du im Hauptverzeichnes deiner WordPress-Installation. Du musst dich also über FTP mit dem Server verbinden und dort den Ordner öffnen, in dem das WordPress deiner Seite liegt.

      Viele Grüße,
      Katharina

Schreibe einen Kommentar

Pressengers lebt von der Wordpress Community, beteilige dich mit einem Kommentar!
Deine E-Mail Adresse wird nicht veröffentlicht.

Achtung: Mit dem Absenden eines Kommentars erklärst du dich damit einverstanden, dass alle eingegebenen Daten und deine IP-Adresse zum Zweck der Spamvermeidung durch das Programm Akismet in den USA überprüft und gespeichert werden. Weitere Informationen zu Akismet und Möglichkeiten des Widerrufs..