Der gemeine Blogger will in der Regel bloß bloggen was das Zeug hält, das Internet mit frischen Ideen versorgen und dabei vielleicht noch ein bisschen was verdienen. Klar ist aber eines, das Internet ist keine sichere Zone, es gilt Vorkehrungen zu treffen um den eigenen Blog so gut als möglich abzusichern. Es gibt keine hunderprozentige Sicherheit, aber man kann Maßnahmen treffen die das Risiko eines Worst Case Szenarios zumindest signifikant vermindern. Mehr darüber lesen Sie im vorliegendem Artikel.
Zunächst beschäftigt sich der Artikel mit dem Kampf gegen Beitragsspam, um danach einige der zahlreichen Möglichkeiten aufzuzeigen mit denen man WordPress gegen Angriffe abhärten kann. Ich habe mir jene Möglichkeiten herausgesucht welche keine Kompatibilitätsschwierigkeiten hervorrufen sollten, aber dennoch eine gute Sicherheit bieten. Die Intention hinter diesem Artikel ist es dem neuem Blogger den Einstieg in die Bloggingszene so sicher als möglich zu machen und vielleicht den einen oder anderen Tipp zu zeigen, der ihm noch nicht bekannt ist.
Ein Backup der Dateien, sowie der Datenbank ist vor jeder Änderung selbstverständlich Pflicht! Machen Sie also ein Backup Ihrer Dateien, bevor Sie Veränderungen vornehmen. So haben Sie im Notfall immer ein Backup zur Hand.
1.0 Möglichkeiten gegen Webspam:
1.1 Akismet
Die Software WordPress legt bereits selbst einen sehr guten Grundstein gegen Spam, sie wird nämlich mit Akismet ausgeliefert. Bei Akismet handelt es sich um ein Skript, welches Spambeiträge aus Ihren Blogs ausfiltert. Nun gibt es zahlreiche Alternativen welche man an Stelle von Akismet einsetzen kann, ich persönlich bin mit dem Skript aber zufrieden, so dass ich hier bislang noch nicht auf Alternativen ausweichen musste. Es gibt aber durchaus auch kontroverse Meinungen zu diesem Skript, es bleibt Ihnen überlassen ob Sie auf Akismet oder auf eine der vermutlich genauso guten Alternativen setzen. Wie gesagt, ich hatte bislang noch keine Probleme.
1.2 Bot Trap
Um den Spamschutz zusätzlich auszuweiten und bekannte IP Adressen von Spamschleudern schon auszufiltern bevor diese Ihre Seite erreichen, empfiehlt sich der Einsatz von Bot Trap. Bot Trap läuft auf diesem Blog seit dessen Existenz und leistet vom ersten Tag an gute Dienste. Eine aktive Community sorgt dafür dass der Filter immer auf den neuesten Stand gehalten wird, der Administrator muss sich dabei um so gut wie nichts kümmern, denn Bot Trap aktualisiert sich automatisch. Natürlich wird auch ein Logfile angelegt, es empfiehlt sich die extensive Wikiseite zu Bot Trap durchzulesen. Bevor Sie Zugang zum Skript bekommen, müssen Sie sich und Ihren Blog im Forum vorstellen. Eine obligate Angelegenheit, die allerdings schnell von der Hand geht und sich auf jeden Fall lohnt.
1.3 Spider Trap
Recht interessant ist auch das Skript Spider Trap. Spider Trap hindert sogenannte bösartige Webcrawler daran den Inhalt Ihrer Webseite zu klauen, Mailadressen auszulesen oder sonstigen Unfug mit den Daten Ihre Webseite zu treiben. Die Idee dahinter ist so genial wie einfach, denn “gute” Bots akzeptieren die in der robots.txt gesetzen Ausnahmen und indexieren diese Verzeichnisse nicht. Bösartige Bots aber ignorieren diese Datei und geraten dadurch in die aufgestellte Falle. Ruft also ein Bot das ausdrücklich ausgenommene Verzeichnis auf, wird an Stelle der Webseite eine Captcha Abfrage geladen. Der Bot ist ausgesperrt und der Kontent Klau wurde somit bis auf Weiteres verhindert. Auf jeden Fall einen Blick wert.
1.4 Möglichkeiten über die .htaccess Datei
1.4.1 Ausfiltern gefährlicher IP Ranges sowie (wahlweise) der Anonymizer Dienste
Auch über die .htaccess Datei lässt sich vorab ein grober Teil an als gefährlich bekannten IP Adressen ausfiltern. So man das möchte, kann man zunächst einmal die bekanntesten Anonymizer Dienste sowie gefährliche IP Ranges aussperren, indem man in die .htaccess einfach folgende Liste einfügt:
order allow,deny allow from all deny from traffic.website.com deny from anonymouse.org deny from anonymizer.com deny from anonym-surfen.com deny from anonymization.net deny from anonymisierungsdienst.de deny from behidden.com deny from browzar.com deny from callinghome.sourceforge.net deny from the-cloak.com deny from cotse.net deny from findnot.com deny from guardster.com deny from htthost.com deny from http-tunnel.com deny from proxify.com deny from hujiko.com deny from proxy.hujiko.com deny from anon.inf.tu-dresden.de deny from megaproxy.com deny from vip.megaproxy.com deny from metropipe.net deny from mezzy.com deny from buerschgens.de deny from nutzwerk.de deny from safer-surf.de deny from saver-surf.com deny from surfeasy.info deny from steganos.com deny from torproject.org deny from ultimate-anonymity.com deny from hrmovie.com deny from your-freedom.net deny from secure-tunnel.com deny from anonymiser.co.uk deny from anonymsurfen.com deny from anonym.123-mail.eu deny from 123-mail.eu deny from zeroknowledge.com deny from proxy1.ru deny from proxy2.com deny from proxy3.com deny from anonymizer.su deny from 89.111.164.1/24 deny from 89.111.165.1/24 deny from 124.115. #CHINANET deny from 209.163.240.200 #TimeWarnerTC deny from 200.226.246.22 #Internet-Group-Brasil deny from 87.106.41.209 #SCHLUND-CUSTOMERS deny from 88.84.133.139 #1blu-webhosting deny from 212.43.222.166 #Media-CD-Prod-FR deny from 62.103.164.201 #OTEnet-GR deny from 194.182.224.124 #HAMMERUM-FRISKOLE-DK deny from 131.211.183.51 #Universitaet-Utrecht deny from 213.161.195.213 #FRONTIER-1 deny from 24.214.228.204 #KNOLOGY-Holdings deny from 89.207.191. #Ukraine deny from 82.207.103. #Ukraine deny from 201.46.252.117 #Brazi-Comite-Gestor deny from 86.124.229.216 #FIBERLINK deny from 193.138.206.207 #KDIS-Network-NL deny from 212.227.96.133 #speak-friend.com deny from 62.193.229.54 #wpc1507.host7x24.com deny from 88.226.199.38 #TurkTelecom** deny from 87.106.50.8 #s15219491.o deny from 89.111.164.1/24 deny from 89.111.165.1/24 deny from 124.115. #CHINANET deny from 124.115.0.0/24 deny from 209.163.240.200 #TimeWarnerTC deny from 200.226.246.22 #Internet-Group-Brasil deny from 87.106.41.209 #SCHLUND-CUSTOMERS deny from 88.84.133.139 #1blu-webhosting deny from 212.43.222.166 #Media-CD-Prod-FR deny from 62.103.164.201 #OTEnet-GR deny from 194.182.224.124 #HAMMERUM-FRISKOLE-DK deny from 131.211.183.51 #Universitaet-Utrecht deny from 213.161.195.213 #FRONTIER-1 deny from 24.214.228.204 #KNOLOGY-Holdings deny from 89.207.191. #Ukraine deny from 82.207.103. #Ukraine deny from 201.46.252.117 #Brazi-Comite-Gestor deny from 86.124.229.216 #FIBERLINK deny from 193.138.206.207 #KDIS-Network-NL deny from 212.227.96.133 #speak-friend.com deny from 62.193.229.54 #wpc1507.host7x24.com deny from 88.226.199.38 #TurkTelecom** deny from 193.138.206.207 #KDIS-Network-NL deny from 212.227.96.133 #speak-friend.com deny from 62.193.229.54 #wpc1507.host7x24.com deny from 88.226.199.38 #TurkTelecom** deny from 87.106.50.8 #s15219491.onlinehome-server.info deny from 87.106.35.101 #s15207048.onlinehome-server.info deny from 62.81.224.167 #Server Housing Madrid deny from 194.126.175.35 #Neoworld-Ltd deny from 200.226.246.22 #Internet Group do Brasil Ltda deny from 202.67.153.151 #HKNet Company Limited deny from 212.241.214.48 #UK-PIPEX-HOSTING-GERMANY-23 deny from 217.20.116.93 #NETDIRECT-NET deny from 64.7.185.10 #Mercury Network, LLC deny from 82.161.173.137 #DEMON-NL-DSL deny from 82.194.66.100 #Hostalia Internet S.L. deny from 83.170.75.38 #UK2.NET - UK's biggest host deny from 89.110.156.82 #[netclusive] internet broadcasting GmbH deny from 72.29.95.49 #HostDime.com, Inc. deny from 91.121.6.85 #ks3.almacom.net deny from 163.121.75.94 #Cairo Servers deny from 87.106.133.216 #urbanplanet.de deny from 80.86.123.118 #RO-INES-FO-NET-1 deny from 209.40.198.166 #Name Intelligence Inc. deny from 88.226. #TurkTelecom deny from 163.121. #Cairo Servers deny from 189.1.168. #Maxihost-BR deny from 80.89. #Hacks-Server-RU
Ich habe darauf verzichtet Anonymisierungsdienste auszusperren und habe die Liste auf die gefährlichen Hosts beschränkt. Es handelt sich dabei um eine Liste die seit einiger Zeit im Netz kursiert und mit der viele Administratoren recht gute Ergebnisse erzielt haben. Wenn Sie allerdings ohnehin bereits Bot Trap installiert haben, ist eine weitere Blockade über die .htaccess nicht unbedingt von Nöten, dennoch soll diese Liste hier natürlich nicht fehlen.
2.0 WordPress abhärten:
2.1 Schutz der wp-config.php
Die .htaccess Datei ist sehr mächtig, hier können wir weitere Vorkehrungen treffen um unsere WordPress Installation zusätzlich abzuhärten. Zunächst einmal sollte die wp-config.php, welche unter Anderem das Passwort zur Datenbank enthält, von außen gesperrt werden. Hiezu fügt man folgende Codezeilen in die .htaccess ein:
# protect wp-config.php <files wp-config.php> Order deny,allow Deny from all </files>
2.2 Schutz der wp-login.php
Es kann sich auch lohnen die wp-login.php mit einem zusätzlichen Passwortschutz abzusichern, so dass Hacker keine 0 Day Exploits, also gerade bekannt gewordene Lücken, hinsichtlich der wp-login.php ausnutzen können. Wenn man das Glück hat eine statische IP Adresse zu besitzen, sowie einen Hoster der diesen Eingriff erlaubt, ist folgende Lösung sehr praktikabel:
# protect wp-login.php <files wp-login.php> AuthName Admin AuthType Basic AuthUserFile /link/zur/.htpasswd require user Benutzername Order deny,allow Deny from all Allow from xx.xx.xx.xx </files>
In diesem Beispiel wird die Datei wp-login.php zum Einen durch Benutzername und Passwort, zum Zweiten durch die eigene IP Adresse geschützt. Einloggen kann sich nur wer Benutzername und Passwort kennt, sowie über die freigegebene IP Adresse auf den Blog zugreift. Man kann auch ganze IP Ranges freigeben, beispielsweise
Allow from 92.114
würde den Zugriff von der IP Range 92.114.1.1 bis 92.114.255.255 erlauben. Es ist auch möglich mehrere IP Adressen bzw. mehrere IP Ranges zu definieren.
Allow from 92.114.34.1
Allow from 84.223
Das Anlegen von Benutzername und Passwort ist von Hoster zu Hoster verschieden, viele bieten diese Funktion im Admin Panel an. Sollten die Voraussetzungen gegeben sein, dann ist es sicher von Vorteil sich diese von Apache unterstützten Sicherheitsfeatures zu Nutze zu machen. Einfach mal nachfragen.
2.3 Schutz weiterer PHP Dateien vor unberechtigtem Zugriff
Aus dem Cywhale Blog hab ich noch folgende nützliche Tipps, die sehr gut funktionieren. Durch einfügen der folgenden Codezeilen:
# WordPress php Dateien von ausserhalb schuetzen
RewriteCond %{QUERY_STRING} !error
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(wp-includes|wp-content)/(.+)\.php\ HTTP/
RewriteRule .* - [F]
blockiert man den Zugriff auf .php Dateien von außerhalb. “Böse” Querystrings, wie sie oft von automatisierten Bots verwendet werden um externe Skripte einzubinden, filtert man aus indem man:
# Querystrings filtern
<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>
in die .htaccess des Hauptverzeichnises einfügt. Wie immer gilt, Backup der .htaccess und einfach ausprobieren ob die Einstellung funktioniert.
2.4 Absichern des Admin Bereichs
Der Administrationsbereich ist standardmäßig durch eine einfache Passworteingabe geschützt. Diesen Schutz können wir noch verstärken.
2.4.1 Absichern durch Plugins
Das WordPress Plugin Login Lockdown von Bad Neighborhood ermöglicht es die maximale Anzahl der möglichen Login Versuche pro IP Adresse zu beschränken. Wird diese Zahl überschritten, dann wird der betreffende Benutzer für eine frei definierbare Zeit ausgesperrt. Dies verhindert Brute Force Attacken auf den Administrationsaccount, keine dumme Sache also. Vorallem wenn die Abriegelung durch .htaccess bei Ihnen nicht möglich ist, bietet sich dieses Plugin förmlich an.
2.4.2 Absichern durch .htaccess
Der Administrationsbereich von WordPress liegt immer im Unterverzeichnis /wp-admin. Es gibt zwar diverse Hacks, die es ermöglichen das Verzeichnis zu verschieben oder umzubenennen, eine sonderlich praktikable Lösung konnte ich hier allerdings noch nicht finden. Wir sichern daher die /wp-admin einfach über eine neue .htaccess Datei ab.
Dazu erstellen Sie einfach im /wp-admin Unterverzeichnis eine neue .htaccess Datei mit folgendem Inhalt:
AuthUserFile /link/zu/.htpasswd AuthGroupFile /link/zu/.group AuthName Admin AuthType Basic
require user Benutzername
Order deny,allow Deny from all Allow from xx.xx.xx.xx
Hinsichtlich der Ausführungen zur IP-Range kann auf das in 2.2 gesagte verwiesen werden.
2.5 Weitere Tipps
2.5.1 Schützen der WordPress Verzeichnisse
Falls keine Möglichkeit besteht um auf dem Webserver die Indexierung abzuschalten, erstellen Sie im Verzeichnis /wp-content eine neue index.php ohne Inhalt. Wiederholen Sie dies auch für die Ordner /wp-content/plugins, /wp-content/themes, sowie für /wp-content/uploads. Auf diese Weise ist es für einen Angreifer nicht möglich den Verzeichnisinhalt einzusehen, was einen Angriff erschwert.
2.5.2 WordPress Firewall
WordPress Firewall von SEO Egghead ist ein sehr brauchbares Plugin um verdächtige Anfragen auf Ihre Webseite zu unterbinden. Es kann zu Komplikationen führen wenn Sie ein Plugin einsetzen, welches zeitgesteuert automatisierte Backups Ihrer Datenbank anfertigt. Hier müssen Sie dann für die WordPress Firewall Ausnahmen festlegen. Am Besten Sie probieren das Plugin einfach aus.
2.5.3 WordPress Version unterbinden
Installieren Sie das Plugin bs-wp-noversion, dieses Plugin unterbindet die Ausgabe Ihrer WordPress Versionsnummer. Angreifer suchen sich gerne alte Softwareversionen von WordPress aus, wenn Sie aber die Versionsausgabe deaktivieren, tappt der Angreifer im Dunkeln. Sie sollten allerdings auch darauf achten etwaige liesmich.txt bzw. readme.txt aus dem Hauptverzeichnis Ihrer WordPress Version zu löschen, denn auch diese können Rückschlüsse auf die Versionsnummer der WordPress Installation geben. Dieses Plugin entbindet Sie allerdings nicht von der Pflicht Ihre WordPress Version upzudaten, es ist für die Zeitspanne bis zum Update gedacht.
2.5.4 WordPress Admin Benutzer umbenennen
Dieser Schritt erfordert Zugriff auf die mySQL Datenbank Ihres Blogs. Erstellen Sie zuvor ein Backup Ihrer Datenbank! Öffnen Sie, nachdem Sie Ihr Backup erstellt haben, mit Ihrem Datenbankadministrationsprogramm (normalerweise phpmyadmin) die jeweilige WordPress mySQL Datenbank. Suchen Sie die wp_users Tabelle und klicken Sie auf “browse”. Suchen Sie den Benutzer “admin” und klicken Sie auf Edit. In der Reihe user_login ändern Sie “admin” auf Ihren gewollten Benutzernamen und klicken auf “Go”. Fortan können Sie sich mit Ihrem gewählten Benutzernamen einloggen.
2.6 Abschließende Bemerkungen
- Halten Sie Ihre WordPress Installation immer auf dem neuestem Stand
- Halten Sie Ihre Plugins aktuell
- Verwenden Sie so wenig Plugins wie möglich, jedes Plugin kann Sicherheitslücken beeinhalten welche die Integrität Ihrer Webseite beeinträchtigen können.
- Deaktivieren Sie Plugins die Sie nicht mehr benötigen nicht nur, sondern löschen Sie diese vom Server
Lesen Sie die Sicherheitsnews von Blogsecurity. Sollte es wirklich ein mal zu spät sein und Sie sind Opfer eines erfolgreichen Angriffs geworden, so gibt es hier nützliche Tipps was Sie nach einem Angriff tun sollten, um Ihren Blog schnellstmöglich wieder online bringen zu können.
Wenn Sie selbst weitere Sicherheitstipps haben, Ergänzungen anmerken möchten oder sonstige Anmerkungen haben, zögern Sie nicht einen Kommentar zu verfassen.
Viel Spaß beim Bloggen!


Guter und hilfreicher Artikel. Mal schauen was ich davon bei mir alles umsetzen werde wenn mal mehr los ist
.
Danke, freut mich dass er für dich hilfreich war.
lg
Eric
Wow, super Tipps! Da wir eine neue Homepage in WordPress planen, passender Artikel zur passenden Zeit, danke!
Hast du das auch getestet!?
Steht “deny from proxify.com” in deiner .htaccess Datei?
Deine Seite ist nämlich über “proxify.com” aufrufbar!
Gruß, Sebastian