Grafik: Photodune / Logo: WordPress / Illustration: Marcel Schrepel

12 WordPress Tipps für PlugIns und Sicherheit

Aktuell bemerke ich in meinem direkten- und indirekten Umfeld wieder vermehrt Angriffe auf WordPress Installationen. Besonders populär sind die WordPress Hacks zur Zeit wegen Websites von deutschen Firmen, die angeblich von Mitgliedern der Terrormiliz-IS gehackt und mit Hass-Propaganda gespickt wurden. Auch ein SEO-Kollege war betroffen, die Website www.stratoxx.de von Marco Janck. Schätzungsweise 20% aller Websites weltweit laufen auf WordPress. Tendenz steigend. Deshalb kann man über WordPress Sicherheit nicht oft genug sprechen.

Da wir selbst sehr viel mit WordPress arbeiten, möchte ich die Gelegenheit heute nutzen, ein paar nützliche Tipps zu geben, wie man seine WordPress Installationen sicherer machen und vor unbefugten Zugriffen und Brute-Force-Attacken schützen kann. Es gibt sicherlich hunderte relevante Tipps, ich konzentriere mich hier jedoch auf die wichtigsten Basics.

Der folgende Beitrag beschäftigt sich ausdrücklich nur mit Möglichkeiten, wie man seine WordPress Website sicherer machen und vor Angreifern schützen kann. Hier werden keine WordPress Probleme oder Probleme mit PlugIns diskutiert. Dazu ist die Bandbreite an Fehlern zu groß.

Die häufigsten WordPress Schwachstellen

In den meisten Fällen sind Standardnutzer wie z.B. „Admin“ und Standardpasswörter bzw. schwache Passwörter die Schwachstelle selbst. Die meisten Brute-Force-Attacken laufen automatisch ab und versuchen sich unter dem Nutzer „Admin“ so lange mit einer Liste von meistgenutzten Passwörtern, z.B. 1234567890, einzuloggen bis die Hacker erfolgreich im Backend sind. Ist das Passwort einmal identifiziert, versuchen es einige Hacker auch noch bei anderen Seiten, die zu einem Unternehmen oder einem Blogger gehören. Untersuchungen haben gezeigt, dass immer noch die meisten Menschen ein und die selben Passwörter verwenden.
Wie sich Hacker die notwendigen Informationen für einen „Einbruch“ beschaffen, das erklärt dieser Beitrag (englisch) hier sehr gut. Aber auch Schwachstellen in Plugins und im Code können Hackern Zugriff zur WordPress Website verschaffen.

Das Schlimme an der ganzen Hacker Geschichte ist, dass die meisten dieser „Hacker“ gar keine Hacker sind. Entsprechende Software und Scripte lassen sich mit Geld erwerben. So kann theoretisch jeder zum Hacker werden.

1. Fantasie Nutzernamen oder kryptische LogIns verwenden

Nutzen Sie auf keinen Fall Standard-Benutzernamen wie „Admin“ oder „Administrator“. Verwenden Sie auch nicht den Namen der Firma oder ein Kürzel Ihres eigenen Namens. Am besten geeignet sind Fantasie-Nutzernamen, die am besten noch mit einer Zahlenkombination versehen sind, z.b. „Leopold$0932“. Achten Sie auch bei Nutzernamen, genau wie bei Kennwörtern, auf Klein. und Großbuchstaben, Sonderzeichen und Zahlen im Namen. Am sichersten sind natürlich Nutzernamen, die genauso gut ein Passwort sein könnten, z.B. „A*qx.hrK28-ePw“.

2. Sichere und unterschiedliche Passwörter für WordPress verwenden

Passwörter sollten immer, und nicht nur bei WordPress, sicher sein. Je mehr Zeichen und umso mehr mehr unterschiedliche Buchstaben, Symbole und Sonderzeichen Sie nutzen, desto „unknackbarer“ wird ein Passwort, z.B. „%23CD?2d3Z&%9/;g2NM6“.

Benutzen Sie auf keinen Fall Standardpasswörter wie „1234567“ oder gar den Nutzernamen als Passwort wie z.B. User: Admin, Passwort: Admin.

Hilfreich dabei ist z.B. dieser Passwort Generator von René Hornig.

Wichtig: Das betrifft übrigens auch alle anderen Passwörter, z.B. das FTP Passwort! Brute-Force-Angriffe laufen nicht nur auf das WP-Login, sondern auch auf jeden anderen Teil einer Website, worüber man sich Zugang verschaffen kann.

Niemals fremden Nutzern oder Entwicklern die eigenen Zugangsdaten geben. Legt dafür immer einen separaten Nutzer an mit entsprechenden Rechten. Nach Möglichkeit vermeidet die Verwendung mehrerer Admin-Accounts.

3. Backups Backups Backups!

Man kann es nicht oft genug sagen: Unbedingt regelmäßig vollständige Backups der WordPress Installation anfertigen, inkl. MYSQL dumb und FTP. Wenn sich nämlich ein Mal ein Hacker Zugriff zur Seite verschaffen sollte und was auch immer anstellt, dann kann man zur Not immer noch die gesamte Website inkl. Datenbanken und Webspace löschen und die Installation dann mit neuen Nutzernamen und Kennwörtern wieder aufspielen. Ein Webhosting Provider der automatisch, regelmäßig und selbstständig Backups von Kundenprojekten anlegt ist übrigens All-Inkl. Auf Zuruf legt Euch All-Inkl ein verfügbares Backup des Webservers sowie der Datenbank auf dem FTP-Server ab.

4. Aktualisierung von WordPress und PlugIns

Immer wieder werden von WordPress selbst aber auch von den PlugIn-Entwicklern Sicherheitslücken geschlossen. WordPress zeigt im Backend verfügbare Aktualisierungen an. Diese sollte man regelmäßig installieren. Der Fall vom „Slider Revolution“ – PlugIn, einem sehr weit verbreiteten PlugIn für die Darstellung von Slides, Fotos und Videos, zeigt, dass so etwas immer wieder vorkommen kann. Im Fall vom Revolution Slider war mit Hilfe einer Local File Inclusion (LFI) Attack möglich, die wp-config.php über den Browser auszulesen und herunterzuladen. In dieser Datei sind unter anderem die Zugänge für die Datenbank gespeichert.

Diese Schwachstelle war so gravierend, dass sogar der größte WordPress-Theme und PlugIn-Anbieter Envato mehrfach E-Mails an Kunden verschickt hat, die das PlugIn gekauft hatten.

Man sollte also immer die „Changelogs“ und verfügbare Updates für WordPress PlugIns im Auge behalten. Denn ein Changelog enthält in der Regel auch immer einen Hinweis, welche Sicherheitslücke geschlossen wurde und gibt somit potenziellen Angreifern Hinweise auf eine Schwachstelle. Wer nicht updated macht sich angreifbar! Generell empfehle ich, nicht benutzte oder nur einmal verwendete PlugIns zu löschen oder zu deaktivieren.

5. Niemals WordPress oder WordPress PlugIns von fragwürdigen Quellen installieren!

WordPress selbst sagt, man solle WordPress niemals von einer anderen Seite als http://wordpress.org herunterladen. Bei PlugIns gilt das Selbe! Die Gefahr, dass man sich durch gecrackte oder modifizierte Theme- oder Plugin-Dateien Schadcode auf der Seite installiert oder etwa Malware ist zu groß. Wenn man Premium PlugIns benutzt, sollte man diese immer original beim Entwickler oder großen Portalen wie Envato erwerben. Wer sich WordPress Templates und PlugIns illegal beschafft und danach Probleme mit der Website hat hat 1. keinerlei Support vom Entwickler und ist 2. auch selbst Schuld.

Viele WordPress User installieren sich für jede Kleinigkeit ein PlugIn und haben dann am Ende 20 – 30 PlugIns laufen. Davon dann noch 20, die so alt sind das es ein Wunder ist das diese überhaupt noch fehlerfrei laufen. Mein Tipp: Nur das nötigste installieren und dann in jedem Fall auf Premium PlugIns zurückgreifen, wo man vom Entwickler auch Support und Updates bekommt.

6. Lese- und Schreibrechte prüfen!

Immer wieder ist man aufgrund einer Fehleranalyse oder PlugIn Installation dazu gezwungen, die Lese- und Schreibrechte von Ordnern auf dem Webserver zu ändern. Nicht selten setzen Leute alle Ordner auf 777, was für Hacker und Schadsoftware eine willkommene Einladung ist. NIEMALS alle Dateien auf 777 setzen. Das ist wie eine offene Wohnungstür.

Eine schöne Übersicht, welche Ordner und Dateien welche Rechte haben sollten, gibt es hier. Es kann sein, dass Ihr dann z.B. das Theme oder css Dateien nicht mehr in WordPress ändern könnt, weil WordPress keine Schreibrechte hat. Das könnt Ihr aber genauso gut via FTP lösen.

Ich empfehle weiterhin, die FTP-Zugangsdaten nicht in der wp-config.php zu hinterlegen, sondern alle Aktualisierungen und Änderungen manuell auszuführen. Damit verhindert man, dass eine evt. gehackte WordPress Installation Dateien ändern oder umschreiben kann.

7. WordPress Security PlugIns

Es gibt etliche gute PlugIns, die WordPress sicherer machen. Bevor man anfängt, sein WordPress zur Festung auszubauen, sollte man auf jeden Fall zuerst ein paar Sicherheitsscans laufen lassen um sicher zu gehen, dass man keine Malware oder Schadcode mit einschließt. Es gibt etliche gute „All-in-One“ – Security PlugIns. Ich nutze z.B. folgendes:

Sucuri Security

Screenshot Sucuri Dashboard

Sucuri Dashboard

Ein kostenloses WordPress PlugIn, dass die WordPress Installation auf Schwachstellen und Malware scannt und die Fehler bei Namen nennt. Das Tool loggt sogar die WordPress LogIns mit und man kann sich bei jeder Änderung, und sei es nur ein Bild-Upload per E-Mail informieren lassen, was gemacht wurde, mit welchem Account und von welcher IP Adresse. Auf jeden Fall ein Super Plugin, um einen Überblick über mögliche Fehler und Lücken zu bekommen.

Link zum WordPress PlugIn

8. WordPress LogIn Bereich verstecken / Hintertüren abschließen

Brute-Force-Attacken laufen ja so ab, dass der Angreifer teilweise mit tausenden aufeinander folgenden LogIns versucht, Zugang zum WordPress Backend zu bekommen. Mit den folgenden zwei nützlichen PlugIns begrenzt man die Anzahl der möglichen LogIn Versuche oder ändert sogar die Art des Zugangs auf Pincode-Ebene. Wer ganz sicher gehen will, dem empfehle ich direkt Punkt 9.

Screenshot WordPress LogIn Lockdown

Login Lockdown für WordPress – Anzahl der LogIn Versuche beschränken und Angreifer IPs sperren.

1. LogIn Lockdown

Dieses PlugIn limitiert die Anzahl der möglichen LogIn Versuche und sperrt bei zu vielen falschen LogIns die IP-des Nutzers. Sollte also z.B. ein Mitarbeiter nach einer vorgegebenen Anzahl von Versuchen noch immer nicht das richtige Passwort eingegeben haben, wird seine IP automatisch gesperrt und muss im Backend freigeschaltet werden. Man kann auch eine sofortige Sperrung einstellen, wenn jemand versucht sich mit einem Nutzernamen einzuloggen, der nicht existiert.

Link zum WordPress PlugIn

Screenshot WordPress Stealth LogIn Page

WordPress PlugIn: Stealth LogIn Page

2. Stealth Login Page

Mit diesem PlugIn macht Ihr das Einloggen nur noch mit Pincode / Autorisationscode möglich.

Link zum WordPress PlugIn

Die beiden eben genannten PlugIns taugen aber nur etwas, wenn sie richtig konfiguriert sind.

9. WordPress LogIn Bereich mit Passwort schützen

Bitte fragt hier zu allererst Euren Provider und spart Euch Experimente wenn Ihr nicht genau wisst wie. Anbieter wie All-Inkl sind Euch am Telefon dabei gern behilflich. Die Sache ist dann in 5 Minuten erledigt.

Das große Problem hierbei ist nämlich, dass das Internet voll mit unterschiedlichen Informationen ist und somit sind die meisten Vorgehensweisen nutzlos oder veraltete sind. In meinem Fall war es so, dass die gängigsten „WP-LogIn via .htpasswd sichern“ – Suchergebnisse nutzlos waren, da sie die Umsetzung 1.) entweder falsch 2.) unvollständig oder 3.) serverspezifisch beschrieben haben.

Die Lösung, die letztlich bei All-Inkl funktioniert hat wich stark von den im Netz en masse beschriebenen Standard Prozedere ab. Deshalb habe ich hier auch keine konkreten Angaben gemacht und rate Euch, einfach mal kurz beim Provider nachzufragen.

10. Standard WordPress Tabellenpräfix ändern

Höchstwahrscheinlich 90% aller WordPress Installationen haben als Tabellenpräfix „_wp“. Das macht es für Angreifer natürlich unheimlich einfach.

Screenshot WordPress PlugIn Change DB FixDas kleine WordPress PlugIn „Change DB Fix“ ist bei der Änderung des Präfix behilflich und man kann es direkt nach der Verwendung auch ohne Bedenken wieder löschen. Ihr könnt dort (siehe Abbildung) auch einen längere Zeichenkette angeben. Bitte macht Euch unbedingt mit den Installationshinweisen und der PlugIn FAQ vertraut. Wenn z.B. Eure wp-config.php nicht beschreibbar ist, dann müsst ihr das Präfix manuell ändern. Ist mir auch passiert und ich hatte zuerst den WordPress Konfigurationsscreen wie bei einer frischen WP-installation.

Link zum WordPress PlugIn

11. (Update) Datenbankzugriff beschränken

Der Anbieter All-Inkl hat seit neuestem eine Datenbank-Zugriffsbeschränkung, d.h. man kann den Zugriff auf die Datenbank nur einer bestimmten IP oder dem localhost (in meinem Fall der Webserver) erlauben. Ich weiß leider nicht, ob auch andere Anbieter diese Funktion führen.

Bildschirmfoto-2015-06-23-um-09.57

Der Vorteil ist, ein Zugriff von außen ist unmöglich. Es sei denn, und das ist der Nachteil, der Angreifer ist bereits auf Eurem Webserver und kann dort auf dem localhost Scripts oder Schadsoftware ausführen. Die Funktion von All-Inkl eignet sich hervorragend dazu, eine extern liegende Datenbank sicher nutzbar zu machen, z.B. für den unternehmenseigenen Server, Software oder andere Anwendungen.

12. (Update) 2-Faktor-Authentifizierung für WordPress

Die noch bequemere und sicherere Art der LogIn-Bereich Absicherung ist die 2-Faktor-Authentifizierung. Erst nach dem Erhalt und der Eingabe eines Sicherheitscodes, welcher an die EMail-Adresse des jeweiligen Nutzers geschickt wird, erhält man Einlass ins WordPress-Backend.

Die 2-Faktor-Authentifizierung für WordPress gibt es als PlugIn Lösung von Sergej Müller (hier klicken für Direkt-Download von Github). Einfach herunterladen, per PlugIn-Upload installieren und das PlugIn ist sofort aktiv. Keine weiteren Schritte notwendig.

Bildschirmfoto 2015-06-23 um 17.23.57

Laut Github ist an den Master Files seit einem Jahr nichts mehr passiert. Was aber daran liegen mag, dass Sergej die WordPress Entwicklung offiziell an den Nagel gehangen hat. Das PlugIn funktioniert trotzdem einwandfrei und ist eine super Alternative zu Punkt 9.

Link zum Projekt auf Github hier.

Fazit

Ich habe (fast) alle oben genannten Maßnahmen selbst getroffen. Ihr könnt z.B. hier einfach mal meinen Blog eingeben und ihr seht, dass weder die WordPress Version noch verwendete PlugIns (bis auf Yoast, da sich das PlugIn Credits in den Quellcode schreibt) oder die Verzeichnisstruktur auslesbar ist. Hier könnt Ihr sehen, dass man nicht mehr in den WP-Login Bereich kommt.

Man muss ganz klar sagen: Wenn es jemand auf Eure Seite abgesehen hat, dann wird er alles versuchen; auch Dinge, die durch die oben genannten Dinge nicht absicherbar sind. Aber in jedem Fall sollte Eure WordPress Seite vor automatisierten Angriffe und Brute-Force-Attacken geschützt sein. Ihr solltet in jedem Fall zuerst versuchen, Eure Seite serverseitig zu schützen, z.B. via .htaccess oder einem Passwortschutz für Verzeichnisse. Die hier genannten Maßnahmen sind Tipps und keine Umsetzungsbefehle.

Die meisten Webhosting Anbieter schützen ihre Server auch selbst und filtern Angriffe auf Server und Websites automatisch raus. Trotzdem empfiehlt es sich, seine Website selbst zu schützen. Heutzutage gibt es immer noch einen Haufen Websites, die alte CMS Versionen, unsichere Zugangsdaten und damit diverse Sicherheitslücken haben. Im Zweifelsfall rate ich dazu, einen Spezialisten hinzu zu ziehen.

Disclaimer

Ich übernehme für die Tipps und die Folgen Eurer Umsetzung keinerlei Haftung. Ebenso gibt es keinen Anspruch auf Vollständigkeit. Ich leiste in diesem Blog auch keinerlei Support oder kann hier auf Fachfragen und konkrete Problemfälle eingehen. Ich bitte um Euer Verständnis.

Ich bin beim Schreiben diesen Beitrags, über mehrere Tage, immer wieder zwischen der „Sie“- und der „Du“-Form gewechselt. Ich bitte dies zu entschuldigen.

Anregungen? Ergänzungen? Weitere Tipps?

Ihr habt noch Senf, der zu meinem Beitrag passt? Oder weitere wichtige Ergänzungen oder Tipps? Dann schreibt mir oder kommentiert den Beitrag. Ich werde den Artikel dann ggf. erweitern, ergänzen oder ändern. Danke!

Du benötigst Unterstützung bei der Absicherung Deiner WordPress-Seite?

Dann kontaktiere mich! In den meisten Fällen sind die o.g. Maßnahmen relativ schnell und kostengünstig umgesetzt. Ich helfe auch gerne beim Entfernen von Malware, Schadcode und anderen Übeltätern.

Mein Unternehmen ist außerdem auf die Erstellung von WordPress-Webseiten spezialisiert. Wir unterstützen Dich auch gerne bei anderen Aufgaben wie z.B. responsive Programmierung, funktionale Erweiterungen oder Debugging.

Weiterführende Links:

„WordPress sicher machen“ – Frank Bültge

„Hardening WordPress“ – WordPress

„WordPress konfigurieren für mehr Sicherheit“ – Netzgänger

„Basis Sicherheitsscan“ – hackertarget.com