Wissen

WordPress Blog gegen Hacker absichern – Anleitung

Kleine HowTo, wie man seinen WordPress Blog sicherer machen kann

WordPress ist ein sehr beliebtes Tool wenn es darum geht eine eigene Webseite zu betreiben. Derzeit setzen 2/3 der vorhandenen Blog-Seiten auf das WordPress-System auf und das System steht damit nicht nur bei den Usern an Platz 1 der Beliebtheit, sondern auch bei den Hackern, welche immer wieder versuchen in laufende Systeme einzudringen. Denn je höher die Verbreitung eines Systems ist, um so mehr Sicherheitslücken kann man ausnutzen. Um die WordPress Sicherheit zu erhöhen und den Angreifern das Eindringen zu erschweren, gibt es ein paar Punkte, welche man im Vorfeld beachten kann. Wie man dies sehr einfach erreichen kann möchte ich Euch hier in diesem Beitrag beschreiben. Dabei gehe ich auch auf die WordPress Sicherheit Basics ein, die eigentlich eh schon klar sein sollten.

 

wordpress

 

WordPress Sicherheit Basics

1. Backup – die Lebensversicherung für Deinen Blog
Hier möchte ich nicht näher auf die unterschiedlichen Backup-Varianten eingehen, denn deren gibt es viele! Entweder man zieht sich über das Backend selbst ein Backend über ein Plugin oder löst die Backup-Problematik über den Server auf welchem die Installation läuft. Was gibt es zu beachten? Achtet bitte darauf, dass das Backup nicht lokal auf dem System gespeichert wird oder gar im aktiven WordPress-Verzeichnis. Backups gehören sich immer auf einen ausgelagerten Speicherbereich. Zudem sollte man immer ein paar Versionen vor halten um im Notfall Veränderungen analysieren zu können. Zudem könnte es sein, dass der Angreifer schon länger den Webspace im Zugriff hat und man eine ältere Sicherung benötigt wird.

2. Update WordPress Installation und Updates von Plugins und Themes
Wirklich viele Angriffe erfolgen über Plugins welche nicht auf den aktuellen Stand gebracht werden. Daher ist es ratsam sich entweder daran zu gewöhnen, regelmäßig in das Backend zu blicken, ob Updates für das WordPress Core System, ein Plugin oder ein Theme vorhanden ist oder sich ein Plugin zu installieren, welches eine Meldung per Email verschickt wenn Updates vorhanden sind. Grundsätzlich sollte man schon bei der Installation von Plugins oder Themes darauf achten, dass diese noch lebendig sind. Was verstehe ich darunter? Wer ein Plugin oder Theme installiert, sollte unbedingt darauf achten, dass das Ad-On für seinen Blog regelmäßig Updates erfährt. Zudem sollten die gewählten Produkte eine hohe Downloadzahl und positive Bewertungen aufweisen. Ist dies der Fall kann man wahrscheinlich eher davon ausgehen, dass die PlugIns und Themes vom Entwickler gepflegt werden und eventuell auftretende Sicherheitslücken schnell geschlossen werden. Der Griff zu Premium-Themes oder Premium-Plugins kann ebenfalls ein weiterer Vorteil sein, da hinter diesen Produkten oft ein ganzes Team steht, das sich aktiv um die Pflege des Produktes kümmert.

3. Admin-User und Passwörter
Richtet man WordPress ein, so wird einem ganz automatisch die Einrichtung eines Admin-Users mit dem Namen „admin“ vorgeschlagen. Im Normalfall wird dieser User auch gesetzt und dies erleichtert Hackern den Angriff, denn dadurch ist der Name schon einmal bekannt und man muss nur noch viele Passwörter testen. Auch die User-ID 1, welche der Administrator-Account besitzt ist für einige Angriffsmethoden nicht sehr optimal! Daher meine Empfehlung an Euch: Richtet Euch einen zweiten Admin-Benutzer ein, übertragt an diesen alle Rechte (evt. bei Plugins darauf achten!) und vergebt an diesen ein sicheres Passwort! Dieses sollte möglichst viele Zeichen und Sonderzeichen enthalten und vor allem in keinem Wörterbuch zu finden sein, welche oft als Basis für einen Bruteforce Angriff verwendet werden. Wer seinen Schutz noch weiter erhöhen möchte, nutzt diesen User nur für administrative Aufgaben und verzichtet darauf mit diesen User Beiträge zu schreiben. Denn über die Beiträge kann man ansonsten Rückschlüsse ziehen, wer ein Admin im Blog sein könnte und schon hat man wieder den Usernamen für den LogIn.

4. WP-Datenbank schützen
Einige Angriffsmethoden zielen auch direkt auf die Datenbank ab. Bei der Einrichtung von WordPress wird auch hier im Normalfall das Standard-Tabellen-Präfix „WP_“ gesetzt. Dieses sollte man besser auch ein unbekanntes Prefix ändern und so den Angreifern den Zugriff erschweren. Und das geht so!
Schritt 1: Tabellenprefix in einer MySQL – Umgebung mit Hilfe von PHPMyAdmin ändern

Schritt 2: Anpassung der internen Tabellenstruktur – dafür führt ihr folgende Befehle aus:

UPDATE neuerprefix_options SET option_name = REPLACE(option_name, ‚wp_‘, 'neuerprefix_‘);
UPDATE neuerprefix_usermeta SET meta_key = REPLACE(meta_key, ‚wp_‘, 'neuerprefix_‘);

–> einfach unter SQL eingeben!

Schritt 3: wp-config.php im Root der WordPress installation ändern!
Hier ersetzt ihr folgenden Eintrag:

$table_prefix  = ‚wp_‘;

…durch diesen:

$table_prefix  = 'neuerprefix_‘;

Damit hätten wir nun auch eine etwas sichere Tabellenstruktur!

 

5. WordPress Security Keys setzen
In der „wp-config.php“ gibt es einen Punkt „Authentication Unique Keys“ bzw. Sicherheitsschlüssel in der deutschen Variante!
Hier findet man einige Parameter, die es zu füllen gibt!

define(‚AUTH_KEY‘,         ‚put your unique phrase here‘);
define(‚SECURE_AUTH_KEY‘,  ‚put your unique phrase here‘);
define(‚LOGGED_IN_KEY‘,    ‚put your unique phrase here‘);
define(‚NONCE_KEY‘,        ‚put your unique phrase here‘);
define(‚AUTH_SALT‘,        ‚put your unique phrase here‘);
define(‚SECURE_AUTH_SALT‘, ‚put your unique phrase here‘);
define(‚LOGGED_IN_SALT‘,   ‚put your unique phrase here‘);
define(‚NONCE_SALT‘,       ‚put your unique phrase here‘);

Ihr könnt dafür einfach den automatischen Key Generator von WordPress nutzen!

Muss man sich diese Keys merken? Nein, die Keys dienen nur zur Verschlüsselung von Anmeldedaten in den abgelegten User-Cookies!

 

6. Theme und Plugin Editor deaktivieren
Wenn man nicht oft Plugins oder Themes bearbeitet, kann man die Bearbeitung auch über die Konfiguration in der wp-config.php deaktivieren. Diese Einstellung ist eher für statische Seiten geeignet.

define( ‚DISALLOW_FILE_EDIT‘, true );

 

7. WordPress Version nicht veröffentlichen
Wenn man ein WordPress System betreibt sollte man vermeiden, diese Information öffentlich zugänglich zu machen! Erstens sollte man darauf achten, dass die Bezeichnung WordPress nicht direkt im Theme hinterlegt ist und zweitens, dass die Information nicht über den HEADER ausgeliefert wird. Dies kann man verhindern, wenn man die funktions.php um eine Zeile erweitert! Der Schutz ist nur bedingt wirksam, da Angriffe über Botnetze einfach ihr Programm durch fahren. Egal bei welcher WordPress-Version.

<!–?php  remove_action(‘wp_head’, ’wp_generator’); ?–>

 

 

8. Modifikationen in der .htaccess Datei
Über die .htaccess Datei im Root der WordPress Installation lassen sich einige Dinge Regeln und diverse Bereiche gesondert schützen. Wer dies möchte braucht die .htaccess Datei nur mit folgenden Zeilen ergänzen! Aber ACHTUNG!! In diesem File gibt es Bereiche welche eigenständig von Scripten überschrieben werden können! In diese Bereiche dürft ihr keine eigenen Regeln ablegen, da diese ansonsten überschrieben werden. Diese Bereiche sind im Normalfall wie folgt gekennzeichnet:

# BEGIN WordPress
Inhalt der Regeln
# END WordPress

Nicht alle der kommenden Regeln machen für alle Installationen Sinn. Aber ich werde zu jedem Punkt ein paar Worte dazu schreiben, damit ihr abschätzen könnt, ob der Eintrag für Euren Blog sinnig ist.

–> Das .htaccess File wird geschützt
Über folgende Regel lässt sich das Konfigurationsfile vor externen Zugriff schützen:

# HTACCESS SCHUTZ
<Files ~ „^.*\.([Hh][Tt][Aa])“>
order allow,deny
deny from all
satisfy all
</Files>

 

–> wp-config.php vor Zugriff schützen
In der wp-config hat normalerweise niemand etwas zu suchen. Daher könnte man den Zugriff auch sperren. Sollte dann z.B. das PHP Modul ausfallen, ist das File immer noch geschützt.

# Schutz des wp-config.php
<files wp-config.php>
Order deny,allow
Deny from all
</files>

 

–> Kein Directory Browsing
Falls keine index.php in einem Verzeichnis abgelegt ist, wird der Pfadinhalt angezeigt. Vergleichbar mit dem Dateiexplorer von Windows. Zwar befinden sich normalerweise immer leere index.php Files in den Verzeichnissen. Aber sicher ist sicher!

# Deaktivierung des Directory Browsing
Options All -Indexes

 

–> XML-RPC Schnittstelle deaktivieren
Über diese Schnittstelle kann man seinen WordPress Blog mit externen Programmen verwalten. Solche Schnittstellen bietet natürlich auch immer eine Angriffsbasis für Hacker. D.h. benötigt man keinen Zugriff auf seinen Blog mittels zusätzlicher Software, kann man den Zugriff auf diese Schnittstelle auch hart unterbinden.

# XML-RPC Schnittstelle über wp-config.php deaktivieren
add_filter( ‚xmlrpc_enabled‘, ‚__return_false‘ );

 

Alternativ über .htaccess Zugriff nicht erlauben!

# XML-RPC Schnittstelle über .htaccess absichern
<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

 

ALLGEMEIN!
Das deaktivieren dieser Schnittstelle hat auch diverse Nachteile, wie z.B. Deaktivierung des Zugriffes von externen Tools oder das ausbleiben von Trackbacks.

Oder den Zugriff nur auf bestimmte Clients beschränken!
Hier wird gescheckt, welches System versucht die XML-RPC Schnittstelle zu nutzen. Kommt man z.B. mit einem Windows Live Writer und möchte man einen Beitrag veröffentlichen, so wird man durchgereicht. Dies bietet natürlich auch nur einen bedingten Schutz, da Angreifer bei Bedarf auch in der Lage sind „Browsertypen“ zu simulieren! 😉 Das Modul stenvif.c muss auf dem Apache Server installiert sein – dies ist jedoch im Normalfall auch der Fall!

# XML-RPC Schnittstelle über .htaccess absichern – teilweiser Zugriff
<IfModule mod_setenvif.c>
  <Files xmlrpc.php>
    BrowserMatch „Poster“ allowed
    BrowserMatch „WordPress“ allowed
    BrowserMatch „Windows Live Writer“ allowed
    BrowserMatch „wp-iphone“ allowed
    BrowserMatch „wp-android“ allowed

    Order Deny,Allow
    Deny from All
    Allow from env=allowed
  </Files>
</IfModule>

 

–> Über .htaccess den WP-Login schützen
Dieser Schritt bringt natürlich nicht nur Vorteile mit sich, denn die Anmeldung wird nicht nur für Admins erschwert sondern auch für alle beteiligten am Blog. Deshalb sollte man diese Methode sorgfältig abwägen! Nichts desto trotz möchte ich Euch hier ein paar Wege zeigen um den Login abzusichern.

Schutz wenn über einen Dynamischen DNS kommt.
Trotz wechselnder IP Adresse, kann man sich bei diversen Anbietern eine dynamische Domain sichern. Bringt man nun seinen Router bei sich mit dieser Domain am Blog zu melden, kann man am Blog eine Regel schalten, dass der Zugriff erlaubt wird. Dieses Verfahren ist schon ziemlich tricky und nur für Experten geeignet!

Die Regel dafür lautet:

# Schutz wp-login.php über dynamischen Domain-Namen
<Files wp-login.php>
   Order deny,allow
   Deny from all
   Allow from [dynamische.adresse]</Files>

 

Schutz über zusätzliche Username / Passwortabfrage:
Hier möchte ich an dieser Stelle nicht genauer darauf eingehen, da das Thema durchaus etwas aufwendiger ist! Aber zum Thema .htaccess / .htpasswd Schutz von Verzeichnissen habe ich vor kurzer Zeit erst eine universelle Anleitung geschrieben und dort im Detail beschrieben, wie man diese Schutzart realisieren kann.

–> Hier gehts zur Anleitung: HTACCESS und HTPASSWD – Verzeichnisschutz / Dateischutz

Grundsätzlich würde ich Euch hier den Dateischutz empfehlen und diesen auf den wp-login.php zu legen.
Die .htaccess Datei legt ihr dafür in das wp-admin Verzeichnis!

 

 

Alternativ dazu:
Eine Kombination aus den beiden Systemen! Kommt ihr über die richtige Adresse, so taucht gar kein Schutz auf. Über die falsche IP, bzw. den falschen Domainnamen wird der zusätzliche Passwortschutz gezogen!

#Schutz wp-login.php über dynamischen Domain-Namen mit Backup über lokale Anmeldung
<Files wp-login.php>
   Order deny,allow
   Deny from all
   AuthName „Restricted Admin-Area“
   AuthType Basic
   AuthUserFile ~/.htpasswd
   Require valid-user
   Allow from [dynamische.adresse]
</Files>

 

ACHTUNG!
Für folgende Änderungen muss sich das .htaccess File im entsprechenden Verzeichnis befinden!

–> Zugriff für WP-Content Verzeichnis limitieren
Über folgende Regel könnt ihr bestimmen, welche Files aus dem „wp-content“ Verzeichnis abgerufen werden können! Hier muss die Definition auf jeden Fall stimmen, sonst gibts massive Probleme! Hier muss sich das .htaccess File im wp-content Ordner befinden!

# Nur bestimmte Files ausliefern
Order deny,allow
Deny from all
<Files ~ “.(xml|css|jpeg|png|gif|js)$”>
Allow from all
</Files>

–> WP-Admin nur über bestimmte IP zugänglich machen
Diese Regel sollte man natürlich nur einpflegen, wenn die Administration immer vom gleichen PC erfolgt, welcher sich mit einer statischen IP im Internet befindet! Hier muss die .htaccess Datei im WP-ADMIN Verzeichnis liegen. Die XX.XX.XX.XX.XX müsst ihr mit Eurer IP ersetzen!

# Nur bestimmte IPs haben Zugriff auf den WP Admin Bereich
order deny,allow
allow from xx.xx.xx.xx
deny from all

 

9. Datei-Rechte (chmod) richtig setzen
Wird WordPress installiert, werden bei der Installation auch die richtigen Datei-Rechte gesetzt. Im Normalfall sollte sich an den Rechten nichts geändert haben. Es kann jedoch sein, dass die Rechte vom Anwender aufgebohrt worden sind um diverse Vereinfachungen zu realisieren. Jetzt kann man natürlich drüber streiten, was sinnige Veränderungen sind. Möchte man sein Theme über das Backend verwalten, sind dort mehr Rechte notwendig als das Theme benötigt um nur angezeigt werden zu können.

Grundsätzlich könnte man folgende Rechte anwenden:
Alle Verzeichnisse: 755 oder 750
Alle WP-Files: 644 bzw. 640
wp-config.php 600
.htaccess 665
Theme Files kann man auf 644 setzen, wenn diese nicht bearbeitet werden müssen

 

10. Tools zur Erhöhung der Sicherheit
Wer die oben genannten Veränderungen zumindest zum Teil durchgeführt hat, benötigt im Prinzip schon fast keines der hier genannten Tools. Wer sich mit dem vielen Code oben etwas unsicher fühlt kann jedoch auch zu einem der kommenden Plugins greifen, welches den einen oder anderen Schritt ganz automatisiert erledigt. Man sollte sich halt darüber bewusst sein, das jedes Plugin wieder ein Angriffspunkt sein könnte und die Serverlast und die Servergeschwindigkeit weiter nach unten zieht.

Antivirus – checked den Blog auf Exploits, Malware und Spam Injektion.
Secure WordPress – führt einige Veränderungen zur Erhöhung der Sicherheit am Blog aus
BulletProof Security – meiner Meinung nach eines der besten Tools, wenn man sich nicht wirklich mit dem Thema auseinander setzen möchte. Bietet viele Optionen zur Erhöhung der Sicherheit
WP Security Scan – kleines Tool, welches einem schnell ein paar Mögliche Sicherheitslücken aufzeigt
Limit Login Attempts – beschränkt die Anmeldeversuche – bedingt nützlich, da ein Bot-Netzwerk sehr oft verschiedene IPs verwendet um einen Angriff zu fahren
AskApache Password Protect – dieses Tool setzt den zusätzlichen Passwort Schutz für den Admin Bereich
WP Update Notifier – Benachrichtigt Euch, wenn Updates im Blog zu machen sind

 

So, das war es dann auch schon von meiner Seite! Hoffe ich konnte Euch etwas weiterhelfen die Sicherheit im WordPress Blog zu erhöhen und ich hoffe nicht zu viele Tippfehler im Code gemacht zu haben! Viel Spaß bei der Umsetzung und der Absicherung des Blogs gegen externe Angriffe und Hacker!

Tags

Related Articles

Kommentar verfassen

Close

Send this to a friend