5 Tipps für mehr Sicherheit bei WordPress
WordPress: Sicherheit von Anfang an
Die Absicherung von WordPress fängt bereits bei der Installation an. So müssen WordPress-Nutzer schon beim Anpassen der Konfigurationsdatei (wp-config.php) Sicherheitsschlüssel auf der dafür eingerichteten Website generieren. Dabei sollte man sich die Mühe machen, sichere Schlüssel (Secret Keys) zu erzeugen und in die wp-config.php einzutragen – sie spielen später eine wichtige Rolle bei der Verschlüsselung der Login-Daten in den Cookies.
Auch während des Installationsprozesses lässt sich das Präfix für die Datenbanktabellen ändern. Standardmäßig steht hier „wp_“. Daraus wird später in der Datenbank zum Beispiel „wp_posts“ oder „wp_comments“. Wer das „wp_“ zu etwas Individuellem ändert – etwa „projektname_“ oder „ihr_name_“ –, macht seine WordPress-Anwendung zu einem schwerer zu fassenden Ziel für Angreifer. Auch für den Benutzernamen und das Passwort, das man beim Installationsvorgang für den Admin-Account eingeben muss, sollten sich WordPress-Installation etwas Individuelles überlegen, etwa den Vor- oder Spitzname. Aber auf keinen Fall sollten sie „admin“, „demo“, „test“, „wordpress“, „webmaster“ oder Ähnliches verwenden. Denn Brute-Force-Attacken sind unter anderem auf genau solche Nutzernamen spezialisiert. Bei der Wahl eines sicheren Passworts unterstützt Sie WordPress. Das von Ihnen angegebene Passwort wird in vier Sicherheitsstufen eingeteilt: sehr schwach, schwach, mittel und stark.
Falsche Anmeldeversuche begrenzen
Auch mit Hilfe von Erweiterungen, die die Anzahl ungültiger Anmeldeversuche innerhalb eines festgelegten Zeitraums verhindern, lässt sich die Sicherheit einer WordPress-Installation erhöhen. Ein Beispiel eines solchen Plugins ist „Limit Login Attempts“.
Brute-Force-Angriffe probieren mit Hilfe purer Rechnerkraft so lange alle möglichen Kombinationen aus, bis sie die richtigen Nutzernamen und Passworte erraten haben. Eine Beschränkung der möglichen Login-Versuche pro Zeiteinheit in Verbindung mit einer Zwangspause für Anmeldungen macht es diesen Angreifern wesentlich schwerer.
Mit Sicherheit unterwegs bloggen
Wer oft von unterwegs aus schreibt, vielleicht sogar von wechselnden Rechnern aus, sollte dies nicht über den Administrator-Account tun. Sicherer ist es, einen Account mit Redakteur- oder Autoren-Rechten zu erstellen und mit diesem die Inhalte einzustellen.
Angreifer, die unterwegs genutzte Accounts hacken, erlangen somit keine administrativen Rechte, die zum Beispiel für die De- und Installation von Plugins und Themes notwendig sind. Sie können lediglich auf die Inhalte zugreifen. Bei regelmäßigen Backups kommt es so schlimmstenfalls zu einem minimalen Verlust. Viel ärgerlicher wäre es, wenn der Angreifer über die Admin-Rechte die WordPress-Installation in eine Viren- und Spam-Schleuder verwandeln würde.
WordPress: Plugins und Themes sicher einsetzen
WordPress-Plugins sollten generell nur mit Bedacht zum Einsatz kommen und nicht nach dem Motto „viel hilft viel“. Das hat zwei Gründe:
- Je größer die Anzahl der Plugins, desto wahrscheinlicher kommen sich diese untereinander in die Quere und/oder verlangsamen das System.
- Die allermeisten Plugins stammen von Drittanbietern. Viele dieser Autoren sind erfahrene Programmierer. Aber da es vergleichsweise einfach ist, ein Plugin zu entwickeln, erstellen auch viele ambitionierte Feierabend-Programmierer die Erweiterungen. Dabei kann ein Sicherheitsrisiko entstehen, denn nicht alle verstehen es, ihre Plugins auch tatsächlich sicher zu machen.
Alle eingesetzten Plugins sollten deshalb auch aus dem offiziellen Verzeichnis von WordPress stammen. Hier muss sich jeder Autor registrieren, der ein Plugin zur Verfügung stellen möchte. Ist irgendetwas an der Erweiterung nicht in Ordnung, wird das früher oder später jemandem in der großen Community auffallen und entsprechend auf der WordPress-Website kommentiert.
Auch die Anzahl der Downloads, die Zahl und Qualität der Bewertungen sowie die letzten zehn Foren-Beiträge auf der Übersichtsseite eines Plugins geben Anhaltspunkte für die Qualität eines Plugins und machen auf eventuelle Fehler oder Sicherheitslücken aufmerksam. Analog verhält es sich übrigens mit den Themes. Wer kostenlose Themes testen möchte, sollte sich diese ebenfalls aus dem offiziellen Verzeichnis holen.
Auf dem Laufenden bleiben
Neue Updates für WordPress, Plugins und Themes sollte man der Sicherheit zuliebe immer möglichst zeitnah einspielen. Und natürlich sollten Betreiber einer WordPress-Website sicherheitsrelevante Nachrichten verfolgen. Hierfür eignen sich vor allem der deutsche oder der englische WordPress-News-Aggregator, um jederzeit gut gerüstet zu sein und notfalls schnell reagieren zu können.
Weitere Sicherheitsmaßnahme: Admin-Bereich absichern
Die fünf genannten Maßnahmen sind mehr als ausreichend und bieten einen guten Schutz gegen diverse Angriffe. Doch gibt es noch weitere Möglichkeiten. Zum Beispiel lässt sich die Login-Datei (wp-login.php) serverseitig absichern. Beim Apache-Webserver erstellt man dazu eine .htaccess- und .htpasswd-Datei, etwa mit dem Generator von All-Inkl. Komfortabler ist ein Plugin, das die WordPress-Installation mit einer so genannten Zwei-Wege-Authentifizierung nachrüstet.
Hier gibt es beispielsweise Clef oder auch Google Authenticator. Das Prinzip dahinter dürfte vielen bekannt sein: Neben den üblichen Zugangsdaten gibt man beim Einloggen auch noch einen Code ein, den ein Dienst oder eine App erzeugt. Angreifer müssen somit nicht nur die Zugangsdaten der WordPress-Installation kennen, sondern auch die des externen Dienstes. Logischerweise hilft ein solcher Dienst nur, wenn man verschiedene Passwörter verwendet.
Fazit
WordPress-Anwendungen lassen sich schon mit wenigen, schnellen Schritten viel sicherer machen. Das Fundament ist die sichere Installation: der Einbau der Sicherheitsschlüssel, die Wahl eines individuellen Nutzernamens und eines sicheren Passworts sowie ein individuelles Präfix für die Datenbank-Tabellen.
Mit einer Erweiterung wie „Limit Login Attempts“ begrenzt man zudem die ungültigen Anmeldeversuche und hält so automatische Angreifer auf Abstand. Blogger, die viel unterwegs sind, sollten sich einen separaten Redakteurs- oder Autoren-Account zulegen. Wer sich dann auch noch zu neuen Sicherheitsaspekten auf dem Laufenden hält, sorgt dafür, dass die Sicherheit seiner WordPress-Installation auch künftig gewährleistet bleibt.
Zudem gibt es noch viele weitere Maßnahmen, um die Sicherheit bei WordPress zu erhöhen. Dazu gehören zum Beispiel der serverseitige Passwortschutz für die Login-Datei oder Plugins, die die WordPress-Installation um eine Zwei-Wege-Authentifizierung erweitern.
Das sind aber gerade einmal ein paar Basics. Da kann und sollte man noch wesentlich mehr tun um seine Webseite zu schützen.
Hallo Andreas,
„Da kann und sollte man noch wesentlich mehr tun um seine Webseite zu schützen.“
Ja, man kann sich auch einen Aluhut aufsetzen ;-)
Das Plugin Limit Login Attempts hat ja schon seit über zwei Jahren kein Update mehr bekommen. Und im Support Board wird ja schon über Sicherheitslücken im Plugin orakelt. Ist es trotzdem noch empfehlenswert?
Ich habe es mich nicht getraut einzusetzen und habe stattdessen folgendes Plugin benutzt: Login LockDown … Bisher hat es seinen Dienst gut verrichtet. Gibt es weitere Erfahrungen dazu?
Hallo Jan,
der Artikel ist vom Juni. Mittlerweile empfehle ich auch eher Login LockDown. Das kann sich aber wieder mal ändern, da auch Login LockDown eine Zeit lang mehr als 2 Jahre nicht aktualisiert wurde. Deswegen bin ich dann vor ca. 1 Jahr übergegangen, Limit Login Attempts zu empfehlen.
Danke dir für die Info, Vlad! Wirklich schade, dass so wichtigen Plugins nicht regelmäßiger gewartet werden.
Die Wahl des Nutzernamens ist nicht wirklich wichtig, der darf durchaus auch „admin“ lauten. Jeder durchschnittlich begabte User kann den (Admin) Nutzernamen einer WordPress-Seite innerhalb von 15 Sekunden herausfinden.
Man muss einfach nur ein „deinewebseite.de/?author=1“ in das Adressfeld der WordPress-Seite eingeben, eventuell die Nummer noch auf 2 erhöhen und schon wird der Admin-Benutzername in der Adressleiste des Browsers angezeigt. Dann braucht es nur noch das Passwort, um die Seite zu hacken.
Hallo Andreas,
„Man muss einfach nur ein „deinewebseite.de/?author=1″ in das Adressfeld der WordPress-Seite eingeben, eventuell die Nummer noch auf 2 erhöhen und schon wird der Admin-Benutzername in der Adressleiste des Browsers angezeigt. Dann braucht es nur noch das Passwort, um die Seite zu hacken.“
Genau! Und genau darum geht es auch. Keine der o.g. Maßnahmen liefert die absolute Sicherheit … die ist in der Praxis gar nicht möglich. Es geht lediglich darum, dass man es dem Angreifer schwerer macht.
Security through obscurity hat noch niemandem geholfen. Verschleierung erhöht die Sicherheit eben nicht, das sollte mittlerweile bei sämtlichen Entwicklern angekommen sein.
Hallo Andreas,
da hast Du schon Recht.
Trotzdem bleibt es eine Tatsache das Bots immer erst den Admin Administrator user durchtesten, sieht man immer schön in den Sucuri logs.
Wer die absolute Sicherheit haben will, muß halt den Netzstecker ziehen :)
Auch wenn für mich persönlich diesmal nichts Neues dabei war, so finde ich solche Artikel immer wieder sehr gut. Es gibt immer Menschen die mit WordPress gerade anfangen, sich noch nicht auskennen und denen kann man ja diesen Artikel einfach weiterempfehlen, denn er ist für Jeden verständlich geschrieben.
bisher nutze ich Limit Login Attempts und bin damit recht zufrieden, allerding habe ich die Sperrzeiten um einiges verlängert, damit mein Postfach nicht mehr vor Meldungen gescheiterter Anmeldeversuche überqillit
Man kann ja eigentlich nicht oft genug darüber schreiben, mit welchen Maßnahmen ein WordPress-Blog vor Angreifern geschützt werden kann. Daher danke Vlad. :-)
Und besser 2-3 Lösungen umsetzen, als gar keine.
Die von Dir angeprochene „Zwei-Wege-Authentifizierung müsste doch eigentlich das Plugin „Limit Login Attempts“ überflüssig machen, oder täusche ich mich da?
Den „author“-Link (0-9) leite ich per .htacess auf meine Sitemap um.
Kürzlich habe ich meinen Blog neu aufgesetzt und sofort die Chance genutzt, zusätzlich den Präfix in der Datenbank zu ändern und nicht wie üblich „wp_“ zu verwenden.
Also ich kann auch nur definitv zustimmen. Habe meinen Blog mit den wichtigen Limit Attemps geschützt, dazu noch die wp-config verlagert und die Datenbank (Präfix) richtig eingerichtet.
Ich denke, man kann aber auch zu tode sichern, was auf die Performance extrem sich auswirkt.
Mittlerweile habe ich über 1000 WP’s installiert und noch keiner ist gehackt worden.
Aber die Angriffe sind schon extrem, habe diese auf nem kleinen „unscheinbaren“ Blog mal verfolgt.
Ja, diese Tipps sind gut und umfassen die Mindestmaßnahmen, die man ergreifen sollte, und sie sind für Normalbenutzer leicht durchzuführen.
Allerdings wäre es doch besser, Angreifer gar nicht erst bis zu WordPress durchkommen zu lassen. Bei einem selbst gehosteten Blog, das man alleine betreibt, kann man beispielsweise den Zugriff auf das Login auf die eigene IP-Adresse beschränken. In die Datei .htacess im Falle eines Apache-HTTP-Servers kann man eintragen (ich hoffe, der Code wird nicht zerschossen):
Order deny,allow
Deny from all
Allow from xx.xxx.
Wobei die x-Zeichen die ersten beiden Kolonnen der IP-Adresse(n), die man vom Internet-Service-Provider zugewiesen bekommt, darstellen sollen.
Order deny,allow
Deny from all
Allow from xx.xxx.
[öffnende spitze Klammer]Files ~ ^(.*)?wp-login\.php(.*)$[schließende spitze Klammer]
Order deny,allow
Deny from all
Allow from xx.xxx.
[öffnende spitze Klammer]/Files[schließende spitze Klammer]
Wichtig ist sicher auch die Aktivierung von automatischen Backups, beispielsweie mit dem Plugin UpdraftPlus, dass diesen Service sogar kostenlos ermöglicht. Dadurch kann man sich eine Menge Zeit und Ärger ersparen!