. .

WordPress: Brute-Force-Attacken: Admin-Interface per ModRewrite-Engine verbieten


Laut diesem heise online Artikel fanden seit einigen Monaten vermehrt Brute-Force-Attacken auf WordPress-Installationen statt. Anscheinend um dadurch einen etwas größer angelegten Distributed Denial of Service-Angriff (DDoS) durchführen zu können.

Da ich vor einiger Zeit leider auch feststellen musste, dass Brute-Force-Attacken auf die eigene WordPress-Installation durchgeführt wurden, entschloss ich mich, das Admin-Interface per ModRewrite-Engine zu verbieten.

Im Wurzelverzeichnis der WordPress-Installation befindet sich bereits unter Umständen eine .htaccess-Datei. Wenn nicht, diese einfach anlegen. (Selbstverständlich kann auch der <VirtualHost>-Bereich in der Apache-Config direkt angepasst werden – usw.)
Um den Zugriff auf das Admin-Interface zu verweigern, reichen am Anfang der .htaccess-Datei folgende Zeilen zur Konfiguration (am Anfang, damit andere, spätere RewriteRules nicht das gewünschte Verhalten beeinflussen):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    ####################################################################
    # comment out next two lines to allow access to login and admin
    # interface

    RewriteRule ^wp-login.php*   -   [F,R=403]
    RewriteRule ^wp-admin*       -   [F,R=403]

    ####################################################################
    # comment out next four lines to redirect login and admin interface
    # NOT to ssl

    #RewriteCond %{HTTPS} off
    #RewriteRule ^wp-login.php*      https://%{HTTP_HOST}%{REQUEST_URI}  [R=301,L] 
    #RewriteCond %{HTTPS} off
    #RewriteRule ^wp-admin*          https://%{HTTP_HOST}%{REQUEST_URI}  [R=301,L]

</IfModule>


Die erste RewriteRule verbietet den Zugriff auf den Login-Mechanismus, die zweite den Zugriff auf den Administrationsbereich.
Ist Apache so eingerichtet, dass Änderungen per .htacess-Dateien erlaubt sind (und mod_rewrite installiert ist), sollte nun auf Anhieb beim Aufruf der Administrationsanmeldemaske der im Bild angezeigte HTTP-Statuscode zurückkommen.

Ich habe mich absichtlich nicht für den Code 404 entschieden, da das bei Aufrufen durch Suchmaschinenindizierer noch schlechter ankommt.

Sollte man nun Zugriff auf das Admin-Interface benötigen, reicht es, in der .htaccess-Datei die beiden ersten Zeilen mit RewriteRules auszukommentieren (über ssh oder (s)ftp z.B.).

Das Verbieten des Aufrufs macht allerdings nur dann Sinn, wenn man nicht dauerhaft auf das Administrationsmenü angewiesen ist. Daher möchte ich noch auf das WordPress-Plugin Limit Login Attempts hinweisen. Auch die Plugins Better WP Security und Block Bad Queries (BBQ) sind meiner Meinung nach sehr nützliche Tools.
Noch wichtiger ist aber, dass die WordPress-Installationen sowie die Plugins nach Möglichkeit immer auf dem neuesten Stand sind.

Außerdem sollte man sicher gehen, dass der User, unter dem Apache läuft, nicht unnötig schreibenden Zugriff auf die Dateien unterhalb des DocumentRoots hat. Die .htaccess-Dateien sollten ohnehin nicht von diesem User veränderbar sein.


Hinterlasse eine Antwort

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

Du kannst 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>