WordPress ist ein fantastisches System um Webseiten, Blogs oder sogar komplexe Portale umzusetzen. Mittlerweile nutzen >30% aller Webseiten weltweit das CMS und dies bringt natürlich zwangsläufig auch das Thema „Sicherheit“ immer mehr in der Vordergrund.
Der Grund ist recht einfach – Sicherheitslücken und Schlupflöcher auszunutzen lohnt sich für den „Standard Hacker“ eben nur im größeren Stil und hier gehört WordPress mittlerweile zu 100% zu den potentiellen Zielen und wird immer häufiger Ziel von gezielten Attacken.
Angriffsziele sind dabei WordPress als grundsätzliches CMS, aber natürlich auch vor allen Dingen die verschiedensten Plugins die nachweislich das größte Sicherheitsproblem darstellen.
Grund genug das Nutzer immer auch auf die Sicherheit ihrer WordPress-Installation achten sollten. Einfach nur WordPress installieren und mit dem Bloggen loslegen, das ging früher vielleicht einmal, heute heißt es dagegen, nach der Installation erst einmal alles abzusichern. Wer nicht gehackt werden will, sollte also von Anfang an darauf achten, sonst ist die Gefahr sehr groß einmal Opfer eines „Hacks“ zu werden. Viele scheuen dabei den Aufwand, doch Sicherheit geht vor, dass weiß jeder der schon einmal Ziel oder Opfer war.
Doch wie kann WordPress nun wirklich effektiv geschützt werden?
Es gibt diverse Optionen die die WordPress Sicherheit grundsätzlich erhöhen doch die .htaccess sollte immer den Anfang machen denn diese kleine Datei ist extrem nützlich, um bestimmte Bereiche abzusichern.
WordPress Sicherheit mit .htaccess
Als Standard beinhaltet die .htaccess nur so etwas wie „#BEGIN WordPress…“. Um die Performance einer Website zu verbessern, kann sie nun mit allerhand nützlichen Snippets gefüllt werden.
Gerade bezüglich der Performanceoptimierung wird hier gerne einiges an „Code“ hinzugefügt. WordPress optimierte htaccess Dateien finden sich mittlerweile massenhaft im Web und natürlich werden auch überall „die perfekten Lösungen“ angepriesen.
Mehr dazu auf unserer Seite unter fastWP WordPress htaccess
Wichtige Sicherheitsaspekte sind hier entsprechend eingefügt und auch das Thema Performance wir beachtet. Daher eine gute und solide Lösung für den Start.
Egal was ihr nun final für eure Webseite verwendet – das Kredo lautet „Nicht einfach alles kopieren, sondern von Fall zu Fall selbst entscheiden“.
Das gilt zumindest bei den folgenden sicherheitsrelevanten Zusätzen die wir euch nun in unserer eigenen WordPress htaccess bereitstellen. Die oben verlinkte .htaccess kann ruhig direkt so kopiert und genutzt werden, sie beschleunigt WordPress nämlich deutlich. Doch beim Thema Sicherheit, ist nicht unbedingt jeder Befehl für jeden Blog auch notwendig.
Dateien vor Zugriff schützen
Als erstes gilt es mal wichtige Dateien vor fremden Zugriff zu schützen. Die „wp-config.php“ und die „.htaccess“ wären solche wichtigen Dateien, die ihr mit folgendem Befehl absichern könnt. Ganz simpel und direkt über die .htaccess selbst.
<Files wp-config.php>
order allow,deny
deny from all
</Files>
<Files .htaccess>
order allow,deny
deny from all
</Files>
<files readme.html>
Order Allow,Deny
Deny from all
</Files>
Ordneransicht verbieten
Als nächstes sollte das Durchsuchen der Ordner verboten werden, was ebenfalls ziemlich simpel ist und mit dem unteren Code schnell erledigt ist. Der Code schaltet das sogenannte directory browsing komplett ab.
Options All -Indexes
WP-Content schützen
Doch es gibt immer noch Schlupflöcher, durch die potenzielle Angreifer Zugriff erhalten könnten. Auch im Ordner „wp-content“ kann dies geschehen, weshalb selbiger ebenfalls eine .htacess Datei erhalten sollte. Die müsst ihr allerdings komplett selbst erstellen. Einfach einen Editor öffnen, ein leeres Dokument als .htaccess speichern und hochladen. Hat es funktioniert, könnt ihr selbige nun mit Inhalten füllen, doch Vorsicht, im Ordner wp-content macht nur wenig Code auch wirklich Sinn. Hier ist das Problem nämlich ganz einfach, dass auch Plugins etc. auf Dateien zugreifen dürfen. Mit dem folgenden Befehl wird der Zugriff im Ordner „wp-content“ allerdings stark eingeschränkt. Nur noch auf Bilder, xml, sowie CSS-Dateien darf zugegriffen werden, alle anderen Anfragen werden geblockt. Das kann unter Umständen Probleme verursachen, je nachdem welche Erweiterungen ihr innerhalb von WordPress nutzt.
order deny,allow
deny from all
<files ~ „.(xml|css|jpe?g|png|gif|js)$“>
allow from all
</files>
XXS Security, nosniff und mehr
Es gibt noch ein paar kleine Tags die für mehr Sicherheit sorgen können und ebenfalls via .htaccess integriert werden. Zum Beispiel, um einfache XXS-Attacken abzuwehren, Clickjacking zu verhindern und ähnliches. Fügt einfach folgendes Snippet in eure .htaccess hinzu, mehr ist gar nicht notwendig. Ein kleiner Rundumschutz, um auf Nummer sicher zu gehen.
<ifModule mod_headers.c>
Header set X-XSS-Protection „1; mode=block“
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options: „nosniff”
</ifModule>
WP-Include Dateien blocken
Eine weitere Möglichkeit, die Sicherheit von WordPress deutlich zu erhöhen, ist das Blocken der wp-includes. Das geht relativ einfach über die .htaccess und gehört deshalb auch zum Standard. Eine kleine aber feine Stufe der WordPress Security, die offiziell empfohlen, von Nutzern aber häufig vergessen oder unterschätzt wird. Dabei ist der Code im Grunde winzig und kann daher auch schnell mit in die eigene .htaccess aufgenommen werden.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
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>
Schutz vor Script Injections
Die GET- und POST-Anfragen werden meist sorgfältig geschützt, doch was ist mit den GLOBALS und _REQUEST-Variablen? Die werden meistens nicht gesondert behandelt, weshalb folgender Befehl in der .htaccess für mehr Sicherheit sorgt. Dieser blockt Script Injections und Versuche, die entsprechenden Variablen zu verändern.
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
6G Firewall & BBQ Plugin
Den ultimativen Schutz gewährt die sogenannte 6G Firewall von Jeff Starr. Die Blockliste, die komplett auf .htaccess-Ebene funktioniert, ist eine äußerst effektive Firewall. So blocken die Einträge schadhafte Aufrufe und Anfragen schon bevor sie euren WordPress Blog erreichen. Da die 6G Firewall außerdem komplett an WordPress angepasst wurde, funktioniert sie in der Regel auch vollkommen problemlos mit sämtlichen Plugins und Themes. Wem der Code zu undurchsichtig oder kompliziert ist, der kann auch das Plugin BBQ verwenden, welches die 6G Firewall über ein WordPress Plugin integriert. Das ist dann zwar etwas weniger performant, aber fast ebenso sicher.
Weniger ist immer mehr
Die Wahrheit ist nun: Es gibt durchaus noch einige kleine Snippets, die behaupten euch vor Eindringlingen etc. zu schützen. Doch wir warnen euch hier ausdrücklich davor, eure Website mit irgendwelchen Codes zuzumüllen, die am Ende dann sowieso nur einen kleinen bzw. nur sehr geringen Mehrwert liefern.
Weniger ist mehr, das gilt auch für die .htaccess. Eigentlich gilt selbiges für so ziemlich alle Bereiche im Web, doch gerade Dateien die vom Server ständig kontrolliert und abgearbeitet werden müssen, sollten nicht unbedingt überladen daherkommen.
Nicht zu vergessen ist auch, dass die .htaccess neben den oberen Codes, bereits Caching etc. verwaltet, demnach bereits eine Hülle und Fülle an Inhalten liefert. Also übertreibt es nicht, bleibt immer minimalistisch und wählt nur das für euch relevante aus. Dann kriecht euer Server auch nicht auf dem Boden herum, sondern bleibt schnell und sicher, ist vor Angreifern geschützt und arbeitet seine Aufgaben zügig und effektiv ab.