Sicherheit in Wordpress (Teil 4)
Da ich letzte Woche nicht dazu gekommen bin, den vierten Teil der Sicherheit in Wordpress – Reihe zu veröffentlichen, gibt es diesen nun diese Woche und mit vielen Tipps und Tricks. Dieser Teil dreht sich komplett um die .htaccess-Datei und ist überschrieben mit “Sicherheit durch .htaccess”.
1. Absichern der .htaccess
Die .htaccess-Datei ist ein sehr mächtiges Werkzeug zum manipulieren von URL’s, Website-Einstellungen und dergleichen, doch was ist mit der .htaccess-Datei selber? Wie kann man diese selber absichern. Dazu muss in der .htacces selber der folgende Code-Schnipsel eingetragen werden:
<Files .htaccess>
order allow,deny
deny from all
</Files>
Dieser verhindert den externen Zugriff auf die .htaccess selber.
2. Ordneransicht deaktivieren
Durch einen Aufruf wie http://www.example.com/wp-content/plugins/ kann ein ungebetener Angreifer ganz einfach alle verwendeten Plugins ausspionieren und gezielt Sicherheitslücken ausnutzen. Dies ist aber nur möglich solange die Ordneransicht aktiviert ist. Um die Ordneransicht aus zu schalten fügen Sie ganz einfach die folgende, recht harmlos klingende Zeile in ihre .htaccess-Datei ein:
Options -Indexes
3. wp-config.php absichern
Die Konfigurationsdatei jeder Software ist immer ein beliebtes Angriffsziel, der Grund hierfür ist, dass die Datei oft die Zugangsdaten zur Datenbank oder andere Sicherheitsrelevante Einstellungen besitzt. Ähnlich wie die .htaccess-Datei können Sie diese vor externen Zugriff über die folgenden Zeilen Code in ihrer .htaccess-Datei schützen:
<Files wp-config.php>
order allow,deny
deny from all
</Files>
4. Useragents und IP’s aussperren
Ist die IP oder der USER_AGENT eines Angreifers bekannt so kann auch dieser direkt ausgesperrt werden. Dies hilft aber nur begrenzt, da es ein leichtes sein sollte für den Angreifer seinen USER_AGENT oder die IP zu ändern.
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} example.*
RewriteRule .* - [F,L]
5. Verzeichnisse /wp-includes und /wp-content schützen
In /wp-includes und /wp-content liegen oft relevante Dateien für den Wordpress-Blog und aus diesem Grund sollen nicht alle von außerhalb erreichbar sein, deshalb kann hier auch in einem bestimmten Rahmen der zugriff eingeschränkt werden.
Order Allow,Deny
Deny from all
<Files ~ "js/tinymce/*.$">
Allow from all
</Files>
<Files ~ "\.(css|jpe?g|png|gif|js)$">
Allow from all
</Files>
Je nach Wordpress-Installation und verwendeten Plugins müssen diese Zeilen separate angepasst werden. In diesem Fall wird der WYSIWYG-Editor TinyMCE und die Dateien JPEG, CSS, PNG, GIF und JavaScript zugelassen.
6. Externer Zugriff auf PHP-Dateien unterbinden
Eine weitere bewährte Methode zur Aussperrung von Angreifern ist das verhindern des externen Zugriffs auf PHP-Dateien, welcher wie folgt verhindert wird:
RewriteCond %{QUERY_STRING} !error
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(wp-includes|wp-content)/(.+)\.php\ HTTP/
RewriteRule .* - [F]
7. Zusätzlicher Passwortschutz für den Administrationsbereich
Für den Administrationsbereich kann man durch eine einfache Apache-Funktion einen weiteren Schutz aufbauen. Durch eine Apache-seitige Passwortabfrage. Diese Funktion stellen einige Serveradministrationspanels wie Confix, CPanel, Plesk oder andere Skripte als Standardfunktion zur Verfügung, aber man kann dies auch durch das Anlegen eine .htpasswd-Datei und dem generieren des Inhalts über diverse Generatorskripte (z.B. ein ganz einfaches Script ist http://www.phpbb.de/diverses/htpasswd.php) realisieren.
8. Bösartige Querystrings filtern
Oftmals wird über URL-Injections versucht in bestehenden Skripts ein Skript eines Angreifers auszuführen. Dies kann ganz einfach verhindert werden, indem bei der Parameterübergabe keine Strings zugelassen werden, welche mit http:, ftp: oder https: anfangen.
<ifmodule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC]
RewriteRule .* - [F,L]
</ifmodule>
9. IP-Filterung für den Administrationsbereich
Sollte wiederholt von einer bestimmten IP ein Angriff auf ihre Website oder ihren Blog durchgeführt werden, so kann die IP wie folgt ausgesperrt werden:
Order deny,allow
Allow from xxx.xxx.xxx.xxx
Deny from all
Die xxx müssen natürlich durch eine gültige IP ersetzt werden und hilfreich ist diese Methode auch um nicht gebetene Gäste fern zu halten
.
Welche Meinung besitzen Sie zu diesem Thema?