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

9 .htac­cess-Ein­trä­ge für eine bes­se­re Word­Press-Sicher­heit + Bonus Tipp

Die Sicher­heit von Word­Press-Sei­ten wird von vie­len Web­sei­ten-Betrei­bern ver­nach­läs­sigt. Bei der Stan­dard-Word­Press-Instal­la­ti­on gibt es eine gan­ze Rei­he von mög­li­chen Schwach­stel­len. Die meis­ten Word­Press-Instal­la­ti­ons­tu­to­ri­als erklä­ren einen schnel­len, ein­fa­chen Weg, Word­Press in 5 Minu­ten zu instal­lie­ren. Aber sie befas­sen sich nicht mit der Sicher­heit.

Zum Bei­spiel zählt das Durch­su­chen von Ver­zeich­nis­sen und Datei­en als ernst­haf­te Sicher­heits­lü­cke.

In dem Arti­kel zei­ge ich Dir 10 Code­schnip­sel für die .htac­cess-Datei, die hel­fen die Sicher­heit Dei­ner Word­Press-Sei­te zu ver­bes­sern. Bevor wir los­le­gen, lass Dir kurz erklä­ren was die .htac­cess-Datei ist.

Was ist die .htac­cess-Datei?

Die .htac­cess-Datei bie­tet auf Apa­che-Ser­ver eine optio­na­le Kon­fi­gu­ra­ti­ons­mög­lich­keit. Die­se kann in jedem Ord­ner auf einem Web­ser­ver abge­legt wer­den. Damit hast Du ver­schie­dens­te Mög­lich­kei­ten: IPs blo­ckie­ren, ein Ver­zeich­nis mit einem Pass­wort schüt­zen, eine Datei oder einen Ord­ner für den öffent­li­chen Zugriff sper­ren, etc.

Bevor du Datei­en, wie die .htac­cess ver­än­derst, mache immer eine Daten­si­che­rung bzw. Kopie von der Datei.

.htac­cess-Datei­en sind ver­ste­cke Datei­en und in man­chen FTP-Pro­gram­men nicht sicht­bar. Schaue des­halb in die Ein­stel­lung Dei­nes FTP-Pro­gramm nach. Meist heißt die Ein­stel­lung “ver­steck­te Datei­en anzei­gen erzwin­gen”.

Nicht jeder Web­hos­ter, gera­de bei güns­ti­gen Pake­ten erlaubt die Erstel­lung und Bear­bei­tung einer .htac­cess-Datei. Schaue da ent­we­der nach einem Upgrade dei­nes Web­hos­ting-Pake­tes oder den­ke über einen Wech­sel zu einem Web­hos­ter für Word­Press nach.

Word­Press-Sicher­heit mit 9 ein­fa­che Code­schnip­sel erhö­hen

  1. Direc­to­ry Brow­sing ver­hin­dern
  2. Zugriff auf den Ord­ner wp-includes unter­bin­den
  3. Zugriff auf wp-config.php und .htac­cess unter­bin­den
  4. Image-Hot­lin­king unter­bin­den
  5. Umlei­tung zu einer War­tungs­sei­te
  6. Eige­ne Feh­ler­sei­ten
  7. Zugriff auf wp-admin für nur bestimm­te IP-Adres­sen gestat­ten
  8. Bestimm­te Datei­ty­pen erlau­ben im Ord­ner wp-con­tent
  9. Böse Bots blo­ckie­ren
  10. Bonus: Zugriff auf wp-admin durch Ser­ver schüt­zen

Direc­to­ry Brow­sing ver­hin­dern

Directory Browsing Verhindern
Direc­to­ry Brow­sing ver­hin­dern

Dies ist eine der am meis­ten unter­mi­nier­ten Sicher­heits­lü­cke in einer Word­Press-Sei­te. Stan­dard­mä­ßig ermög­licht der Apa­che-Web­ser­ver das Durch­su­chen von Ver­zeich­nis­sen. Das bedeu­tet, dass alle Datei­en und Ord­ner inner­halb des Root-Ver­zeich­nis­ses (manch­mal auch Home-Ver­zeich­nis genannt) des Web­ser­vers ein­seh­bar und für einen Besu­cher zugäng­lich sind.

Eine schnel­le Suche via Goog­le för­dert 39.000.000 Ergeb­nis­se zu Tage.

Das willst Du nicht zu den 39 Mil­lio­nen gehö­ren, denn Du willst nicht, dass jemand durch dei­ne Medi­en-Uploads oder dei­ne The­me- oder Plug­in-Datei­en browst.

Code­schnip­sel zum Deak­ti­vie­ren des Direc­to­ry Brow­sing:

# Blockiere directory browsingOptions -Indexes

Zugriff auf den Ord­ner wp-includes unter­bin­den

Der Ord­ner wp-includes ent­hält nur die Datei­en, die unbe­dingt not­wen­dig sind, um die Kern­ver­si­on von Word­Press zu betrei­ben. Den­ke dar­an, dass sich das Stan­dard-The­me immer noch im wp-con­ten­t/­the­me-Ver­zeich­nis befin­det. Daher soll­te kein Besu­cher (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­schnip­sel deak­ti­vie­ren:

# 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 .htac­cess unter­bin­den

Die wp-config.php-Datei ent­hält die sen­si­bels­ten Zugangs­da­ten dei­ner Word­Press-Sei­te. Sie ent­hält unter ande­rem den Daten­bank­na­men und die Zugangs­da­ten sowie ver­schie­de­ne ande­re kri­ti­sche Daten. Du willst unter kei­nen Umstän­den, dass ande­re Leu­te in die­se Datei schau­en. Und natür­lich willst Du den öffent­li­chen Zugriff auf die Quel­le all die­ser Sicher­heit deak­ti­vie­ren - die .htac­cess Datei selbst.

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

# 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-Datei­en zu ver­wei­gern (den­ke dar­an, dass eini­ge im wp-admin und ande­ren Ord­nern lie­gen kön­nen), benut­ze die­ses Code Snip­pet:

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

Image-Hot­lin­king unter­bin­den

Bil­der dei­ner Word­Press-Web­sei­te kön­nen auf frem­den Web­sei­ten ein­ge­bun­den wer­den. Das nennt man Image-Hot­lin­king. Das ver­braucht dei­nen Traf­fic bei dei­nem Web­hos­ter und bei man­chen ist die­ser limiert, auch kann es auch die Per­for­mance belas­ten. Das schlimms­te dar­an, Du merkst nichts und bekommst auch kei­ne Aner­ken­nung dafür. Dafür gibt es einen coo­len Hack, mit dem Du das unter­bin­den kannst und eine lan­ge Nase zeigst. Die­ses Code­schnip­sel eli­mi­niert die­ses Pro­blem und sen­det die­ses Bild, wenn ein Hot­link erkannt wird.

Bildersatz Bei Hotlinking
Bil­der­satz bei Hot­lin­king
# 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]

Umlei­tung zu einer War­tungs­sei­te

Wenn Du den Web­hos­ter wech­selst oder War­tungs­ar­bei­ten durch­führst, ist es immer emp­feh­lens­wert, eine sta­ti­sche “Wartungsarbeiten”-Seite zu erstel­len, um dei­ne Besu­cher dar­über zu infor­mie­ren, dass die Web­site ein Upgrade oder eine War­tung durch­läuft. So ver­hin­derst Du auch das etwa­ige Sicher­heits­lü­cken bei den War­tungs­ar­bei­ten von Angrei­fern aus­ge­nutzt wer­den kön­nen.

Erstel­le ein­fach eine HTML-Datei und lade sie in das Basis-Word­Press Instal­la­ti­ons­ver­zeich­nis hoch. Füge das fol­gen­de Snip­pet in Dei­ne .htac­cess Datei ein. Sobald der Vor­gang been­det ist, stel­le sicher, dass Du die­se Zei­len löschst oder aus­kom­men­tierst, um zum Nor­mal­be­trieb zurück­zu­keh­ren. Du kannst aus­kom­men­tie­ren, indem Du ein ‘#’ an den Anfang jeder Zei­le anhängst. In der Zei­le 4 kannst Dei­ne IP-Adres­se ein­tra­gen, damit wei­ter­hin vol­len 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] 

Eige­ne Feh­ler­sei­ten

Eigene Fehlerseiten
Eige­ne Feh­ler­sei­ten

Du kannst mit der .htac­ces-Datei nut­zer­freund­li­che Feh­ler­sei­ten ein­rich­ten. Ok, kein Sicher­heits­tipp, jedoch sehr gut für Dein Nut­zer. Ver­wen­de die Feh­ler­ty­pen 403, 404 and 500. Für die Typen 404 und 403 kannst in Word­Press Sei­ten dafür erstel­len. Für den Feh­ler­typ soll­test eine unab­hä­ni­ge HTML-Datei erstel­len. Dann ein­fach fol­gen­den Code in dei­ne .hac­cess-Datei ein­fü­gen:

# Eige­ne Feh­ler­sei­ten für Feh­ler 403, 404 and 500Error­Do­cu­ment 404 /fehler-404.htmlError­Do­cu­ment 403 /fehler-403.htmlError­Do­cu­ment 500 /fehler-500.html

Eine tol­le Erklä­rung zu den Feh­ler­ty­pen bekommst Du hier: https://de.wikipedia.org/wiki/HTTP-Statuscode

Zugriff auf wp-admin für nur bestimm­te IP-Adres­sen gestat­ten

Der Ord­ner wp-admin ent­hält die Datei­en, die zum Aus­füh­ren des Word­Press-Dash­boards erfor­der­lich sind. In den meis­ten Fäl­len benö­ti­gen Dei­ne Besu­cher kei­nen Zugriff auf das Word­Press-Dash­board. Eine gute Sicher­heits­maß­nah­me ist es, nur eini­gen aus­ge­wähl­ten IP-Adres­sen den Zugriff auf den wp-admin-Ord­ner zu ermög­li­chen. Du kannst die IPs der Per­so­nen zulas­sen, die Zugriff auf das Word­Press-Dash­board benö­ti­gen - Redak­teu­re, Con­tri­bu­tors und ande­re Admins. Die­ses Code­schnip­sel erlaubt nur fes­ten IPs den Zugriff auf den wp-admin-Ord­ner und ver­wei­gert 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>

Stel­le sicher, dass Du eine neue .htac­cess-Datei erstellst und die­se in den wp-admin-Ord­ner ein­fügst und nicht in das Basis-Instal­la­ti­ons­ver­zeich­nis. Wenn es letz­te­res ist, wird nie­mand außer Dir in der Lage sein, Dei­ne Sei­te zu besu­chen - nicht ein­mal Such­ma­schi­nen! Das willst Du sicher nicht.

Lei­der gibt es ein paar Fall­stri­cke:

  • Wenn Dein Sei­te die Neu­an­mel­dung von Benut­zern erlaubt oder för­dert, wäre es fast unmög­lich, die Anzahl der Benut­zer zu ver­fol­gen.
  • Per­so­nen mit dyna­mi­schen IP-Adres­sen  (meist ADSL-Breit­band­be­nut­zer, die PPP oder PPP­oE-Pro­to­kol­le ver­wen­den) haben ihre IPs jedes Mal geän­dert, wenn sie sich aus- und wie­der ein­log­gen bei ihrem ISP. Natür­lich wäre es unprak­tisch, all die­se IPs zu ver­fol­gen und in die htac­cess-Datei ein­zu­tra­gen.
  • Mobi­les Breit­band: Wenn Du mobi­les Inter­net ver­wen­dest, hängt Dei­ne IP-Adres­se vom aktu­el­len Mobil­funk­mast ab, mit dem Du ver­bun­den sind. Ange­nom­men, Du bist auf Rei­sen - Dei­ne IP ändert sich stän­dig mit jedem Kilo­me­ter. Auch hier ist es fast unmög­lich, den Über­blick über die htac­cess-Datei zu behal­ten.
  • Öffent­li­che Wi-Fi-Hot­spots: Die Ver­wen­dung von Anmel­de­infor­ma­tio­nen, wenn Du über einen öffent­li­chen Wi-Fi-Hot­spot mit dem Inter­net ver­bun­den sind, ist ein gro­ßes Tabu, da ein Kind mit einer win­zi­gen Soft­ware jedes von Ihnen ein­ge­ge­be­ne Zei­chen extra­hie­ren kann. Ganz zu schwei­gen davon, dass jeder Wi-Fi-Hot­spot eine ein­deu­ti­ge IP-Adres­se hat.

Glück­li­cher­wei­se kön­nen alle die­se Nach­tei­le (außer dem ers­ten) durch die Ver­wen­dung eines VPNs beho­ben wer­den. Wenn Du dein VPN so ein­stellst, dass es sich nur mit einer ein­zi­gen IP-Adres­se ver­bin­det, dann kannst Du es ein­fach zu Dei­ner htac­cess-Datei hin­zu­fü­gen, und alle Dei­ne Pro­ble­me sind gelöst.

Bestimm­te Datei­ty­pen erlau­ben im Ord­ner wp-con­tent

Wie Du sicherhlich weißt, ent­hält der wp-con­tent-Ord­ner die The­mes, Plug­ins und alle Medi­en-Uploads. Du möch­test sicher nicht, dass ande­re Per­so­nen unein­ge­schränkt dar­auf zugrei­fen kön­nen. Zusätz­lich zum Deak­ti­vie­ren des Durch­su­chens von Ver­zeich­nis­sen kannst Du auch den Zugriff auf alle Datei­ty­pen ver­wei­gern, mit Aus­nah­me eini­ger weni­ger. Im Wesent­li­chen kannst Du selek­tiv Datei­en wie JPG, PDF, DOCX, CSS, JS usw. frei­schal­ten und den Rest ver­wei­gern. Füge dazu die­sen Code­schnip­sel in Dei­ne .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 erstel­len und die­se in den Ord­ner wp-con­tent ein­fü­gen. Lege die­se nicht in das Basis-Instal­la­ti­ons­ver­zeich­nis - sonst funk­tio­niert sie nicht. Sie kön­nen auch einen belie­bi­gen Datei­typ in die Lis­te auf­neh­men, indem Du ein “|” nach “rar” ein­fügst. Die obi­ge Lis­te ent­hält die not­wen­di­gen Datei­en - XML, CSS und Java­Script, gän­gi­ge Bild- und Doku­men­ten­for­ma­te und schließ­lich die am häu­figs­ten ver­wen­de­ten Archiv­for­ma­te.

Böse Bots blo­ckie­ren

Schlech­te Bots haben ver­schie­de­ne Grün­de, die einen suchen Sicher­heits­lü­cken. Die ande­ren suchen auto­ma­ti­siert E-Mail­adres­sen und manch ande­rer klaut direkt den gan­zen Con­tent.

Die­se bösen Bots las­sen sich direkt über Ser­ver­ebe­ne aus­sper­ren. Dazu benö­tigt man nur die IP-Adres­sen 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 aktu­el­le Lis­te mit bekann­ten Bad Bots bekommt man unter ande­rem hier: https://ip-bannliste.de/aktuelle-bannliste.html

Bonus: Zugriff auf wp-admin durch Ser­ver schüt­zen

Zugriff Auf Wp-Admin Durch Server Schützen
Zugriff auf wp-admin durch Ser­ver schüt­zen

Es 2 Din­ge, die eine Word­Press-Sei­te schwach machen. Zum einen der freie Zugriff auf die Log­in­sei­te wp-login.php und damit den Zugang zum Word­Press-Backend wp-admin. Das ermög­licht Angrei­fern auto­ma­ti­sier­te Atta­cken auf die­se Sei­te zu machen. Lei­der ist eine unge­schütz­te wp-log­in-Sei­te kei­ne Sel­ten­heit.

Dann gibt es die weni­gen Sei­ten­be­trei­ber, die Word­Press-Sicher­heits­plug­ins instal­lie­ren, um u.a. die­se Schwach­stel­le zu schüt­zen. Das Pro­blem 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 die­ser Schutz nicht 100%ig gewähr­leis­tet, wenn ein auto­ma­ti­siert Angriff erfolgt.

Dabei geht es ganz ein­fach mit Mit­teln des Apa­che-Ser­vers. Die Log­in-Sei­te und den Backend-Bereich las­sen sich mit einem ser­ver­sei­ti­gen Pass­wort absi­chern.

Wich­tig: Das ist nur bei Web­sei­ten, die kei­nen Kun­den-Log­in, Mit­glieds­be­reich oder der­glei­chen haben. Auch kann es je nach ver­wen­de­ten Plug­ins oder The­me zu Pro­ble­men kom­men. Hier muss man genau tes­ten.

Als ers­tes muss eine “.htpasswd”-Datei erstellt wer­den. In die­ser ste­hen die Benut­zer­na­men und die ver­schlüs­sel­ten Pass­wör­ter. Den Inhalt kannst auf die­ser Sei­te ganz schnell erstel­len: https://htpasswdgenerator.de/

Zum Bei­spiel sieht dann der Benut­zer­na­me “benut­zer” und das Pass­wort “gehei­me­s­pass­wort” so aus:

benutzer:$1$g|zfInXe$vAfpCoXdRf5nHYocBLj2H.

Die Datei .htpasswd spei­cherst Du dann in einem belie­bi­gen Ver­zeich­nis ab.

Die .htac­cess-Datei ergänzt du dann fol­gen­den Code. Du musst noch den Pfad zu der .htpasswd anpas­sen.

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

Ein gro­ßes Dan­ke an Dani­el Ruf( daniel-ruf.de ), Web­ent­wick­ler und Exper­te für Soft­ware­si­cher­heit. Er hat­te noch ein paar Ergän­zung zu dem Arti­kel.

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