9 .Htaccess-Einträge Für Eine Bessere Wordpress-Sicherheit + Bonus Tipp

9 .htaccess-Einträge für eine bessere WordPress-Sicherheit + Bonus Tipp

Die Sicher­heit von Word­Press-Seit­en wird von vie­len Web­seit­en-Betreibern ver­nach­läs­sigt. Bei der Stan­dard-Word­Press-Instal­la­tion gibt es eine ganze Rei­he von möglichen Schwach­stellen. Die meis­ten Word­Press-Instal­la­tion­stu­to­ri­als erk­lären einen schnellen, ein­fachen Weg, Word­Press in 5 Minuten zu instal­lieren. Aber sie befassen sich nicht mit der Sicher­heit.

Zum Beispiel zählt das Durch­suchen von Verze­ich­nis­sen und Dateien als ern­sthafte Sicher­heit­slücke.

In dem Artikel zeige ich Dir 10 Code­schnipsel für die .htac­cess-Datei, die helfen die Sicher­heit Dein­er Word­Press-Seite zu verbessern. Bevor wir losle­gen, lass Dir kurz erk­lären was die .htac­cess-Datei ist.

Was ist die .htaccess-Datei?

Die .htac­cess-Datei bietet auf Apache-Serv­er eine optionale Kon­fig­u­ra­tions­möglichkeit. Diese kann in jedem Ord­ner auf einem Web­serv­er abgelegt wer­den. Damit hast Du ver­schieden­ste Möglichkeit­en: IPs block­ieren, ein Verze­ich­nis mit einem Pass­wort schützen, eine Datei oder einen Ord­ner für den öffentlichen Zugriff sper­ren, etc.

Bevor du Dateien, wie die .htac­cess verän­der­st, mache immer eine Daten­sicherung bzw. Kopie von der Datei.

.htac­cess-Dateien sind ver­stecke Dateien und in manchen FTP-Pro­gram­men nicht sicht­bar. Schaue deshalb in die Ein­stel­lung Deines FTP-Pro­gramm nach. Meist heißt die Ein­stel­lung “ver­steck­te Dateien anzeigen erzwin­gen”.

Nicht jed­er Web­hoster, ger­ade bei gün­sti­gen Paketen erlaubt die Erstel­lung und Bear­beitung ein­er .htac­cess-Datei. Schaue da entwed­er nach einem Upgrade deines Web­host­ing-Paketes oder denke über einen Wech­sel zu einem Web­hoster für Word­Press nach.

WordPress-Sicherheit mit 9 einfache Codeschnipsel erhöhen

  1. Direc­to­ry Brows­ing ver­hin­dern
  2. Zugriff auf den Ord­ner wp-includes unterbinden
  3. Zugriff auf wp-config.php und .htac­cess unterbinden
  4. Image-Hotlink­ing unterbinden
  5. Umleitung zu ein­er Wartungs­seite
  6. Eigene Fehler­seit­en
  7. Zugriff auf wp-admin für nur bes­timmte IP-Adressen ges­tat­ten
  8. Bes­timmte Date­itypen erlauben im Ord­ner wp-con­tent
  9. Böse Bots block­ieren
  10. Bonus: Zugriff auf wp-admin durch Serv­er schützen

Directory Browsing verhindern

Directory Browsing Verhindern
Direc­to­ry Brows­ing ver­hin­dern

Dies ist eine der am meis­ten unter­minierten Sicher­heit­slücke in ein­er Word­Press-Seite. Stan­dard­mäßig ermöglicht der Apache-Web­serv­er das Durch­suchen von Verze­ich­nis­sen. Das bedeutet, dass alle Dateien und Ord­ner inner­halb des Root-Verze­ich­niss­es (manch­mal auch Home-Verze­ich­nis genan­nt) des Web­servers ein­se­hbar und für einen Besuch­er zugänglich sind.

Eine schnelle Suche via Google fördert 39.000.000 Ergeb­nisse zu Tage.

Das willst Du nicht zu den 39 Mil­lio­nen gehören, denn Du willst nicht, dass jemand durch deine Medi­en-Uploads oder deine Theme- oder Plu­g­in-Dateien brow­st.

Code­schnipsel zum Deak­tivieren des Direc­to­ry Brows­ing:

# Blockiere directory browsingOptions -Indexes

Zugriff auf den Ordner wp-includes unterbinden

Der Ord­ner wp-includes enthält nur die Dateien, die unbe­d­ingt notwendig sind, um die Kern­ver­sion von Word­Press zu betreiben. Denke daran, dass sich das Stan­dard-Theme immer noch im wp-con­tent/theme-Verze­ich­nis befind­et. Daher sollte kein Besuch­er (ein­schließlich dir) Zugriff auf den Inhalt des wp-include Ord­ners benöti­gen. Du kannst den Zugriff mit fol­gen­dem Code­schnipsel deak­tivieren:

# Blockiere den Zugriff auf den Ordner wp-includes und darin liegenden Dateien<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^wp-admin/includes/ - [F,L]RewriteRule !^wp-includes/ - [S=3]RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]RewriteRule ^wp-includes/theme-compat/ - [F,L]</IfModule>

Zugriff auf wp-config.php und .htaccess unterbinden

Die wp-config.php-Datei enthält die sen­si­bel­sten Zugangs­dat­en dein­er Word­Press-Seite. Sie enthält unter anderem den Daten­bankna­men und die Zugangs­dat­en sowie ver­schiedene andere kri­tis­che Dat­en. Du willst unter keinen Umstän­den, dass andere Leute in diese Datei schauen. Und natür­lich willst Du den öffentlichen Zugriff auf die Quelle all dieser Sicher­heit deak­tivieren — die .htac­cess Datei selb­st.

Du kannst den Zugriff auf die wp-config.php mit fol­gen­dem Code deak­tivieren:

# Verbietet den Zugriff auf die wp-config.php-Datei<files wp-config.php>order allow,denydeny from all</files>

Um den Zugriff auf alle .htac­cess-Dateien zu ver­weigern (denke daran, dass einige im wp-admin und anderen Ord­nern liegen kön­nen), benutze dieses Code Snip­pet:

# Verbietet den Zugriff auf alle .htaccess-Dateien<files ~ "^.*\.([Hh][Tt][Aa])">order allow,denydeny from allsatisfy all</files>

Image-Hotlinking unterbinden

Bilder dein­er Word­Press-Web­seite kön­nen auf frem­den Web­seit­en einge­bun­den wer­den. Das nen­nt man Image-Hotlink­ing. Das ver­braucht deinen Traf­fic bei deinem Web­hoster und bei manchen ist dieser lim­iert, auch kann es auch die Per­for­mance belas­ten. Das schlimm­ste daran, Du merkst nichts und bekommst auch keine Anerken­nung dafür. Dafür gibt es einen coolen Hack, mit dem Du das unterbinden kannst und eine lange Nase zeigst. Dieses Code­schnipsel eli­m­iniert dieses Prob­lem und sendet dieses Bild, wenn ein Hotlink erkan­nt wird.

Bildersatz Bei Hotlinking
Bilder­satz bei Hotlink­ing
# Verhindert Hotlinking. Die URL in der letzten Zeile kannst du mit jeder anderen Datei ersetzen.RewriteEngine onRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?deinedomain.de [NC]RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

Umleitung zu einer Wartungsseite

Wenn Du den Web­hoster wech­selst oder Wartungsar­beit­en durch­führst, ist es immer empfehlenswert, eine sta­tis­che “Wartungsarbeiten”-Seite zu erstellen, um deine Besuch­er darüber zu informieren, dass die Web­site ein Upgrade oder eine Wartung durch­läuft. So ver­hin­der­st Du auch das etwaige Sicher­heit­slück­en bei den Wartungsar­beit­en von Angreifern aus­genutzt wer­den kön­nen.

Erstelle ein­fach eine HTML-Datei und lade sie in das Basis-Word­Press Instal­la­tionsverze­ich­nis hoch. Füge das fol­gende Snip­pet in Deine .htac­cess Datei ein. Sobald der Vor­gang been­det ist, stelle sich­er, dass Du diese Zeilen löschst oder auskom­men­tierst, um zum Nor­mal­be­trieb zurück­zukehren. Du kannst auskom­men­tieren, indem Du ein ‘#’ an den Anfang jed­er Zeile anhängst. In der Zeile 4 kannst Deine IP-Adresse ein­tra­gen, damit weit­er­hin vollen Zugriff hast.

# Umleitung von Besuchern auf deine-wartungsseite.htmlRewriteEngine onRewriteCond %{REQUEST_URI} !/deine-wartungsseite.html$RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123RewriteRule $ /deine-wartungsseite.html [R=302,L] 

Eigene Fehlerseiten

Eigene Fehlerseiten
Eigene Fehler­seit­en

Du kannst mit der .htac­ces-Datei nutzer­fre­undliche Fehler­seit­en ein­richt­en. Ok, kein Sicher­heit­stipp, jedoch sehr gut für Dein Nutzer. Ver­wende die Fehler­typen 403, 404 and 500. Für die Typen 404 und 403 kannst in Word­Press Seit­en dafür erstellen. Für den Fehler­typ soll­test eine unab­hänige HTML-Datei erstellen. Dann ein­fach fol­gen­den Code in deine .hac­cess-Datei ein­fü­gen:

# Eigene Fehler­seit­en für Fehler 403, 404 and 500Error­Doc­u­ment 404 /fehler-404.htmlError­Doc­u­ment 403 /fehler-403.htmlError­Doc­u­ment 500 /fehler-500.html

Eine tolle Erk­lärung zu den Fehler­typen bekommst Du hier: https://de.wikipedia.org/wiki/HTTP-Statuscode

Zugriff auf wp-admin für nur bestimmte IP-Adressen gestatten

Der Ord­ner wp-admin enthält die Dateien, die zum Aus­führen des Word­Press-Dash­boards erforder­lich sind. In den meis­ten Fällen benöti­gen Deine Besuch­er keinen Zugriff auf das Word­Press-Dash­board. Eine gute Sicher­heits­maß­nahme ist es, nur eini­gen aus­gewählten IP-Adressen den Zugriff auf den wp-admin-Ord­ner zu ermöglichen. Du kannst die IPs der Per­so­n­en zulassen, die Zugriff auf das Word­Press-Dash­board benöti­gen — Redak­teure, Con­trib­u­tors und andere Admins. Dieses Code­schnipsel erlaubt nur fes­ten IPs den Zugriff auf den wp-admin-Ord­ner und ver­weigert dem Rest der Welt den Zugriff.

# Den Login und Zugriff auf wp-admin mittels IP-Adressen limitieren<Limit GET POST PUT>order deny,allowdeny from allallow from 302.143.54.102allow from IP_ADDRESS_2</Limit>

Stelle sich­er, dass Du eine neue .htac­cess-Datei erstellst und diese in den wp-admin-Ord­ner ein­fügst und nicht in das Basis-Instal­la­tionsverze­ich­nis. Wenn es let­zteres ist, wird nie­mand außer Dir in der Lage sein, Deine Seite zu besuchen — nicht ein­mal Such­maschi­nen! Das willst Du sich­er nicht.

Lei­der gibt es ein paar Fall­stricke:

  • Wenn Dein Seite die Neuan­mel­dung von Benutzern erlaubt oder fördert, wäre es fast unmöglich, die Anzahl der Benutzer zu ver­fol­gen.
  • Per­so­n­en mit dynamis­chen IP-Adressen  (meist ADSL-Bre­it­band­be­nutzer, die PPP oder PPPoE-Pro­tokolle ver­wen­den) haben ihre IPs jedes Mal geän­dert, wenn sie sich aus- und wieder ein­loggen bei ihrem ISP. Natür­lich wäre es unprak­tisch, all diese IPs zu ver­fol­gen und in die htac­cess-Datei einzu­tra­gen.
  • Mobiles Bre­it­band: Wenn Du mobiles Inter­net ver­wen­d­est, hängt Deine IP-Adresse vom aktuellen Mobil­funkmast ab, mit dem Du ver­bun­den sind. Angenom­men, Du bist auf Reisen — Deine IP ändert sich ständig mit jedem Kilo­me­ter. Auch hier ist es fast unmöglich, den Überblick über die htac­cess-Datei zu behal­ten.
  • Öffentliche Wi-Fi-Hotspots: Die Ver­wen­dung von Anmelde­in­for­ma­tio­nen, wenn Du über einen öffentlichen Wi-Fi-Hotspot mit dem Inter­net ver­bun­den sind, ist ein großes Tabu, da ein Kind mit ein­er winzi­gen Soft­ware jedes von Ihnen eingegebene Zeichen extrahieren kann. Ganz zu schweigen davon, dass jed­er Wi-Fi-Hotspot eine ein­deutige IP-Adresse hat.

Glück­licher­weise kön­nen alle diese Nachteile (außer dem ersten) durch die Ver­wen­dung eines VPNs behoben wer­den. Wenn Du dein VPN so ein­stellst, dass es sich nur mit ein­er einzi­gen IP-Adresse verbindet, dann kannst Du es ein­fach zu Dein­er htac­cess-Datei hinzufü­gen, und alle Deine Prob­leme sind gelöst.

Bestimmte Dateitypen erlauben im Ordner wp-content

Wie Du sicherhlich weißt, enthält der wp-con­tent-Ord­ner die Themes, Plu­g­ins und alle Medi­en-Uploads. Du möcht­est sich­er nicht, dass andere Per­so­n­en uneingeschränkt darauf zugreifen kön­nen. Zusät­zlich zum Deak­tivieren des Durch­suchens von Verze­ich­nis­sen kannst Du auch den Zugriff auf alle Date­itypen ver­weigern, mit Aus­nahme einiger weniger. Im Wesentlichen kannst Du selek­tiv Dateien wie JPG, PDF, DOCX, CSS, JS usw. freis­chal­ten und den Rest ver­weigern. Füge dazu diesen Code­schnipsel in Deine .htac­cess-Datei ein:

# Verhindere den Dateizugriff bis auf die folgenden Ausnahmen Order deny,allowDeny from all<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">Allow from all</Files>

Du mußt eine neue .htac­cess-Datei mit dem Code erstellen und diese in den Ord­ner wp-con­tent ein­fü­gen. Lege diese nicht in das Basis-Instal­la­tionsverze­ich­nis — son­st funk­tion­iert sie nicht. Sie kön­nen auch einen beliebi­gen Date­ityp in die Liste aufnehmen, indem Du ein “|” nach “rar” ein­fügst. Die obige Liste enthält die notwendi­gen Dateien — XML, CSS und JavaScript, gängige Bild- und Doku­menten­for­mate und schließlich die am häu­fig­sten ver­wen­de­ten Archiv­for­mate.

Böse Bots blockieren

Schlechte Bots haben ver­schiedene Gründe, die einen suchen Sicher­heit­slück­en. Die anderen suchen automa­tisiert E‑Mailadressen und manch ander­er klaut direkt den ganzen Con­tent.

Diese bösen Bots lassen sich direkt über Serverebene aussper­ren. Dazu benötigt man nur die IP-Adressen und schon war es das.

Der Code:

# Ersetze IP_ADDRESS2_* mit der IP-Adresse die blockiert werden sollen <Limit GET POST>order allow,denydeny from IP_ADDRESSE_1deny from IP_ADDRESSE_2allow from all</Limit>

Eine aktuelle Liste mit bekan­nten Bad Bots bekommt man unter anderem hier: https://ip-bannliste.de/aktuelle-bannliste.html

Bonus: Zugriff auf wp-admin durch Server schützen

Zugriff Auf Wp-Admin Durch Server Schützen
Zugriff auf wp-admin durch Serv­er schützen

Es 2 Dinge, die eine Word­Press-Seite schwach machen. Zum einen der freie Zugriff auf die Login­seite wp-login.php und damit den Zugang zum Word­Press-Back­end wp-admin. Das ermöglicht Angreifern automa­tisierte Attack­en auf diese Seite zu machen. Lei­der ist eine ungeschützte wp-login-Seite keine Sel­tenheit.

Dann gibt es die weni­gen Seit­en­be­treiber, die Word­Press-Sicher­heit­splu­g­ins instal­lieren, um u.a. diese Schwach­stelle zu schützen. Das Prob­lem hier­bei ist, das die Last von Word­Press getra­gen wer­den muss und es extrem auf die Per­for­mance geht. Auch ist dieser Schutz nicht 100%ig gewährleis­tet, wenn ein automa­tisiert Angriff erfol­gt.

Dabei geht es ganz ein­fach mit Mit­teln des Apache-Servers. Die Login-Seite und den Back­end-Bere­ich lassen sich mit einem ser­ver­seit­i­gen Pass­wort absich­ern.

Wichtig: Das ist nur bei Web­seit­en, die keinen Kun­den-Login, Mit­glieds­bere­ich oder der­gle­ichen haben. Auch kann es je nach ver­wen­de­ten Plu­g­ins oder Theme zu Prob­le­men kom­men. Hier muss man genau testen.

Als erstes muss eine “.htpasswd”-Datei erstellt wer­den. In dieser ste­hen die Benutzer­na­men und die ver­schlüs­sel­ten Pass­wörter. Den Inhalt kannst auf dieser Seite ganz schnell erstellen: https://htpasswdgenerator.de/

Zum Beispiel sieht dann der Benutzer­name “benutzer” und das Pass­wort “geheimes­pass­wort” so aus:

benutzer:$1$g|zfInXe$vAfpCoXdRf5nHYocBLj2H.

Die Datei .htpass­wd spe­ich­erst Du dann in einem beliebi­gen Verze­ich­nis ab.

Die .htac­cess-Datei ergänzt du dann fol­gen­den Code. Du musst noch den Pfad zu der .htpass­wd anpassen.

<Files wp-login.php>AuthType BasicAuthName "Passwortgeschützter Bereich"AuthUserFile /pfad/zur/datei/.htpasswdRequire valid-user</Files>

Ein großes Danke an Daniel Ruf( daniel-ruf.de ), Weben­twick­ler und Experte für Soft­waresicher­heit. Er hat­te noch ein paar Ergänzung zu dem Artikel.

Autor: Tim Ehling
Der Autor: Tim Ehling

Seit 2000 beschäftige ich mich mit Webentwicklung und seit 2006 mit WordPress. Neben Webentwicklung und Wartung mache ich auch Schulungen in WordPress.
Ich optimiere Webseiten und Social Media Kanäle, so das Kunden und auch die Suchmaschinen zufrieden sind.

  • Webentwicklung
  • Update-Service für WordPress
  • WordPress-Schulungen
  • Social-Media Checkups
  • Suchmaschinenoptimierung(SEO)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert