WordPress konfigurieren für mehr Sicherheit

Firmen kümmern sich bei ihrer ersten Webseite um günstige Anbieter, ein gutes Konzept, Suchmaschinenoptimierung, Konversionen und viele andere wichtige Dinge. Oft geht allerdings das vermeintlich wichtigste Thema unter: Wie optimiere ich die Sicherheit meiner Webseite? Ich möchte hier die wesentlichen Maßnahmen darstellen, die eine WordPress-Installation sicherer machen können. (Stand 08.06.2016) Wordpress Sicherheitsmaßnahmen Hinweis: Kein System ist 100% sicher! Die aufgeführten Maßnahmen sind nötig um eine System von Grund auf zu härten und gegen die gängigsten Angriffe von Script-Kiddies zu schützen. Bots sind die häufigsten Gegner einer WordPress-Installation und agieren eher zufällig, automatisiert, Schwachstellen ausnützend. Das jemand tatsächlich vor seinem Gerät sitzt und sagt, „ja, ich möchte jetzt die Webseite von XY hacken“, passiert seltener, ist aber auch deutlich schwieriger zu verhindern. Es sei ganz klar gesagt: Wenn jemand es tatsächlich darauf anlegen möchte und die Mittel hat, sind die Chancen trotz aller Maßnahmen gegeben, dass er oder sie auch einen Angriffspunkt und somit einen Einstieg findet.

Sicherheits-Plugins für WordPress

Es gibt eine ganze Reihe Sicherheits-Plugins für WordPress, die die wichtigsten Sicherheitsproblematiken abfangen oder zumindest checken und darauf hinweisen. Welches verwendet wird, muss jeder für sich entscheiden. Da ich etwas paranoid beim Thema Sicherheit bin, verwende ich alle aufgelisteten Plugins, auch wenn sich manche Features überschneiden.

WordPress Antivirus Plugin installieren

Ein sehr nützlicher helfer, der das eigene Blog nach kompromitierten Dateien durchsucht und vor Einschleusungen von Schadsoftware schützt. Ein täglicher Check inklusive. Weitere Infos hierzu findet man zu Beispiel hier.

iThemes Security installieren

Ein tolles tool, welches Sicherheitseinstellungen checkt und Verbesserungsvorschläge macht. Neben der Absicherung des Upload Ordners lassen sich unter anderem 404 Angriffsversuche blockieren, Angriffe auf das Backend unterbinden und die Datenbank umbenennen. So werden Hackversuche wirksam gestört. Link

WordPress Firewall 2 Plugin installieren

Die Firewall überwacht den Zugriff auf Dateien und leitet verdächtige Zugriffe entweder auf eine 404 Seite oder die Startseite um. Wird leider nicht mehr weiterentwickelt. Alternative https://de.wordpress.org/plugins/wp-simple-firewall/.

Login Versuche in WordPress mit Plugin verhindern

Viele Angriffe auf WordPress finden am Login statt. Mit Limit Login Attempts kann man diesen so einstellen, dass zum Beispiel maximal 5 Login-Versuche erlaubt sind, bevor der Angreifer für eine bestimmte Zeit ausgesperrt wird. Diese Funktion ist in Plugins wie iThemes Security bereits enthalten. Wer kein umfangreiches Plugin einsetzen will, kann dieses verwenden.

Anti-Malware Security and Brute-Force Firewall installieren

Ein weiteres Security Plugin, welches als Helfer fungiert. Der Vorteil dieses Plugins ist der Scan nach bereits gehackten Dateien. Abseits dieses Scan-Features bietet das Plugin noch diverse gute Sicherheitsstandards, wie das Unterbinden der Hackversuche in das WP Dashboard. Link

Manuelle Sicherheitsmaßnahmen in WordPress

Wer kein Plugin verwenden möchte, kann die wichtigsten WordPress Sicherheits-Maßnahmen auch manuell durchführen. Wer ebenso paranoid ist wie ich, führt diese manuell durch und verwendet parallel noch zusätzlich die WordPress Sicherheits-Plugins. So kann man auf Nummer sicher gehen.

Neuen Administrator anlegen, alten löschen

Erstellen Sie sich direkt nach der Installation einen neuen Administrator-Benutzer. Loggen Sie sich mit diesem ein und löschen sie den Standard-Benutzer „admin“. Somit schützen Sie sich schon gegen die Standard-Angriffe, bei denen versucht wird für Ihr Backend Administrator-Anmeldedaten herauszufinden. Zu finden im WordPress-Menü „Benutzer“.

Verwenden Sie sichere Passwörter

Ein Passwort sollte ausreichend lang sein, nicht zu erraten (also keine richtigen Wörter, Namen, Geburtsdaten, …) und mindestens eine Zahl und ein Sonderzeichen beinhalten (!“§$%&/()=@+*#-). Ein gutes Beispiel wäre zum Beispiel: P@ssssw0rt1! Durch Sicherheits-Plugins, wie zum Beispiel Better WP Security kann man sichere Passwörter für Benutzergruppen als Pflicht einstellen.

Umbenennen des wp-content Ordners

Diese Maßnahme sollten Sie durchführen, bevor Sie irgendetwas installiert (mit Außnahme ggf. des Plugins Better WP Security, welches bei dieser Maßnahme behilflich sein kann) oder Content erstellt haben. Sie benennen den wichtigsten Ordner einer WordPress-Installation (wp-content) um, damit Angreifer gar nicht erst wissen, wo sie die meisten Schwachstellen suchen müssen. Das können Sie entweder selber machen, indem Sie die Anleitung auf folgender Seite befolgen http://www.gutestun.org/how-to/wp-content-wordpress-umbenennen-1898/ oder aber Sie verwenden das Plugin Better WP Security und lassen von diesem den Ordner umbenennen.

Neue Sicherheitsschlüssel in der wp-config.php

Erstellen Sie auf der folgenden Seite neue Sicherheitsschlüssel, welche für die Authentifizierung zuständig sind und überschreiben die, die Sie in Ihrer wp-config.php stehen haben. https://api.wordpress.org/secret-key/1.1/salt/

Verschieben der wp-config.php eine Ebene höher

Insofern Sie die administrativen Rechte dazu haben: verschieben Sie die wp-config.php eine Ebene höher als das Root Verzeichnis Ihrer Worpress-Installation, um auch hier Standard-Angriffen vorzubeugen. Wenn Sie keine Rechte haben, fragen Sie bei Ihrem Webhoster an.

wp-admin durch .htaccess mit Passwort schützen

Das Administratoren-Login muss eigentlich nicht frei verfügbar sein. Daher empfiehlt es sich, den Ordner wp-admin mit folgendem Snippet in einer .htaccess Datei im root-Verzeichnis zu schützen. Fügen Sie folgenden Code in die .htaccess Datei. Zuvor müssen Sie allerdings eine .htpasswd Datei anlegen, in der die Zugangsdaten verschlüsselt abgelegt sind. Ein .htpasswd Passwort können Sie hier erstellen. So muss die .htpasswd Datei aussehen (einfach mit ins root legen)

benutzername: $apr1$EsEZBC8a$2mY1lsyM1WjdoctUMmWU30

So muss der Eintrag in der .htaccess Datei aussehen

# protect /wp-admin
AuthName "Admin-Bereich"
AuthType Basic
AuthUserFile /pfadzur/.htpasswd
require valid-user

Fehlermeldungen bei Login weniger aussagekräftig machen

Mit dem folgenden Code kann man verhindern, dass bei Login-Versuch eine Fehlermeldung à la „Das Passwort“ ist falsch erscheint. Ansonsten weiß der Angreifer nämlich schon, dass zumindest der Benutzername gestimmt hat. In die functions.php

function explain_less_login_issues(){ return 'ERROR: Entered credentials are incorrect.';}
add_filter( 'login_errors', 'explain_less_login_issues' );

Böse Codeeinschleusung verhindern – Block Bad Queries

Mit dem folgenden Plugin schützt man WordPress vor der Einschleusung von Schadcode vor bösartigen URL Anfragen. Einfach das folgende Snippet in einer PHP Datei unter wp-content/plugins ablegen und das Plugin dann im Backend aktivieren.

/*Plugin Name: Block Bad Queries
Plugin URI: http://perishablepress.com/
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://perishablepress.com/
Author: Perishable Press
Version: 1.0
*/
if (strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "base64"))
{
@header("HTTP/1.1 400 Bad Request");
@header("Status: 400 Bad Request");
@header("Connection: Close");
@exit;
}

Backend-Editieren verbieten

Mit dem folgenden Code in der functions.php wird verhindert, dass im Backend Themes und Plugins geändert werden können. So kann das auch kein Hacker, der in das Backend eingebrochen ist.

define('DISALLOW_FILE_EDIT', true);

Die Versionsnummer von WordPress verstecken

Hackern ist es natürlich sehr lieb, wenn sie schnell checken können, welche Version die WordPress-Installation hat. Somit können sie leichter Sicherheitslücken erkennen. Mit dem folgenden Code in der functions.php wird diese Information versteckt.

function no_generator() { return ''; }
add_filter( 'the_generator', 'no_generator' );

Man sollte übrigens auch die Readme.html und Liesmich.html im Installationspfad löschen. Achtung: können bei einem Update wieder auftauchen.

wp-config.php und .htaccess Rechte einschränken

Die Rechte der wp-config.php (die hoffentlich im Ordner über der Bloginstallation liegt (siehe Punkt 4)) sollte auf 400 gesetzt werden. Die der .htaccess auf 644 (oder besser 444, wenn WordPress keine automatischen Änderungen vornehmen muss).

Generelle Verzeichnis- und Dateirechte

Auch wenn manchmal die Rede davon ist, dass zum Beispiel der Ordner wp-content mit 777 Rechten versehen sein sollte, ist das nicht nötig. Am besten die Dateirechte auf 644 und die Verzeichnisrechte auf 755 setzen.

Ein anderes Präfix für die Datenbank wählen

Um auch Angriffen auf die WordPress MySQL Datenbank zu erschweren, macht es Sinn ein anderes Präfix als wp_ für die Datenbanktabellen zu verwenden. Zum Beispiel wp32ng_TABELLENNAME.

Das Uploadsverzeichnis vor Auflistung der Files sichern

Speichern Sie eine leere index.php in das Uploads Verzeichnis. So kann niemand den Inhalt des Ordners im Browser ausgeben.

WordPress, Themes und Plugins aktuell halten

Alle Sicherheitsmaßnahmen nützen nichts, wenn man ein uraltes System mit veralteten Plugins oder Themes betreibt. Daher muss!!! man darauf achten, alles auf dem neuesten Stand zu halten. Aber WordPress macht es einem hier ja ziemlich einfach.

Einschlägige Exploit Datenbanken beobachten

In bestimmten Portalen kann man nachverfolgen, welche Sicherheitslücken für WordPress und verwendete Plugins bestehen und dann ggf. reagieren. Ich weiß nicht ob man das posten sollte, aber hier wäre eine Datenbank: http://www.exploit-db.com/.

Fazit: WordPress ist nicht weniger sicher als andere Content Management Systeme, wenn man bestimmte Sicherheitsregeln einhält. Diese Tipps liefern eine gute Grundhärtung von WordPress Blogs. Ich weiß, ich habe evtl. 1 oder 2 Plugins mehr installiert als nötig. Aber das liegt daran, dass ich bei Sicherheitsrisiken sehr sehr vorsichtig bin. 100%-ige Garantie auf Sicherheit ist natürlich nicht möglich, da dass System, auf welchem WordPress installiert wurde, ebenso abgesichert sein muss und die Vielzahl an fremd entwickelten Plugins auch immer mit einem gewissen Risiko behaftet sind. Aber wie gesagt, besteht dieses Problem bei allen Open Source Content Management Systemen gleichermaßen. Und brauchen Sie Hilfe um Ihre Webseite abzusichern oder Ihre Webseite wurde gehackt? Ich helfe gerne.

Wrong language? You can find the translated article here:
Optimize the security of your WordPress website – Part #1

28 Kommentare

  1. Gustl sagt:

    guten morgen!

    ich möchte für ein firmenprojekt eine wordpress seite erstellen und den zugang für diese auf 450 personen beschränken. ziel ware es dass sich diese personen nur mit username und passwort auf die seite einloggen können.

    ist eine zugangsbeschränkung mit username und passwort in dieser form mit wordpress websites möglich?

    Vielen dank für die auskunft und den guten artikel!

    LG aus österreich

  2. Ralph sagt:

    Hallo René,

    schöner Beitrag, vielen Dank für die Anregungen. Übrigens gibt es Block Bad Queries inzwischen als Plugin, das auch regelmäßige Updates erfährt.

    Ich habe ein ähnliches Problem wie sara, das Verschieben der wp_config.php führt bei mir zu PHP-Fehlern. Irgendwie mache ich einen Aussetzer /Denkfehler. Ich habe WP in einen Ordner installiert, auf den auch die Domain geroutet ist. Verschiebe ich nun die Config eine Ebene höher, liegt sie ja nicht mehr im Bereich der Domain. Ich möchte WP aber auch nicht extra in einen Unterordner installieren.

    Kannst du mir vielleicht einen Tipp geben, um den Knoten in meinem Hirn zu lösen?

  3. sara sagt:

    Verschieben der wp-config.php eine Ebene höher

    hallo,
    wenn ich die wp-config.php eine Ebene höher verschiebe, dann verlangt wordpress das ich die samle-confiq.php hochlade und verlangt dann wie bei der neuinsalation , die datenbank usw. daten.

    hab ich das falsch gemacht. wordpress im ordner MUSIK
    und die wp-config.php höher verschoben in einen neu erstellten ordner ABC.
    ?

    danke im voraus

  4. Nadine sagt:

    Hallo Renè,

    ich hab mich mit ithemes security auch selbst ausgesperrt, bzw. war kein Login mehr möglich. Bei einigen Einstellungen ist mir auch nicht klar, was genau ich machen soll (kann zwar englisch, aber so fachbezogen wird es teilweise schwer). Leider finde ich nirgendwo eine Anleitung in Deutsch. Eine deutsche Sprachdatei für das Plugin gibt es wohl auch nicht? Wäre für Tipps sehr dankbar!

  5. Voxs sagt:

    was ich mich schon lange frage – warum konstruiert WP seither diese typische Directories-Dateistruktur, deren Namen mit wp- beginnen etc.? Und versieht zudem CSS etc. zusätzlich mit Versionsnummern-Ergänzungen, sodass wir User dann an allen Enden und Ecken 1000 Tricks und/oder Plugins einsetzen müssen, um zu verschleiern was niemanden was angeht! Würde das o. Genannte entfallen, wären z.B. die Pfade doch auf den ersten Blick eher ununterscheidbar von anderen CMS. Liegt das etwa nur an der “proud to publish with WP” – Kultur und Absicht unbenommen der Risiken immer weiter und weitreichend Werbung für die eigene Software machen zu wollen?

  6. Renate sagt:

    Vielen Dank für die ausführliche Auflistung. Einige Vorschläge setze ich schon länger um, muss aber immer mal wieder nachschlagen.

    Dabei viel mir auf, dass im Eintrag zu „Backend editieren verbieten“ ein Fehler steckt. Der Code gehört in die wp-config.php nicht in die functions.php. Könnte vielleicht irritieren.

  7. ConnieM sagt:

    ich sehe im Beispiel für den Schutz der wp-login.php keinen Schutz dieser Datei.

    Der Dateiname muss doch in einer Direktive genannt werden, oder?

    # protect wp-login.php
    AuthName „Admin-Bereich“
    AuthType Basic
    AuthUserFile /pfadzur/.htpasswd
    require valid-user

    wenn ich das ins Hauptverzeichnis lege, wo die Datei wp-login.php liegt, dann geht gar nichts mehr, das kann doch wohl nicht ernst gemeint sein, oder?

    • Hallo ConnieM. Diese Direktive legt man in einer .htaccess-Datei am besten in den Ordner wp-admin/ um diesen und das Login zu schützen. Bei den allermeisten WordPress-Installationen macht das keine Probleme und es ist eine weitere Hürde für Hacker an das Loginformular zu kommen. Das Einfallstor Nr. 1 in WP. Ich schreib das mal noch dazu.

  8. wilmi sagt:

    Hallo,

    vielen Dank für die Anleitungen! Sehr hilfreich. Bei dem Schutz der wp-login.php durch .htaccess habe ich allerdings bei mir festgestellt, dass die zusätzliche PW-Abfrage nur erscheint, wenn ich über Proxy ins Internet gehe. Schalte ich den aus, erscheint die Abfrage nicht.
    Vielleicht habe ich auch einen wesentlichen Denkfehler, aber ist das so richtig?

    Gruß, Wilmi

  9. RolandStumpp sagt:

    Hi,
    ich bin einigermaßen erstaunt über den Vorschlag die wp.login.php mit einem Passwortschutz zu sichern. Bis zu diesem Punkt bin ich dabei. Aber dann in einen ungeschützten Passwortgenerator die eigens kreierten Benutzernamen einzugeben um sich dann ebenso ungeschützt ein Passwort generieren zu lassen halte ich für sträflich. Am meisten muss ich dann über den Satz lachen der nach der Erzeugung des Passwortes erscheint!
    I do NOT log ANY data entered in this form.

    Echt geil…man erfindet Benutzernamen und Passwörter und schickt die dann ungeschützt ins Nirwana. Starke Nummer.

    • Hier geht es darum, eine doppelte Hürde zu schaffen. Und wenn man das Passwort in einem ungeschützten Passwortgenerator erstellt, weiß dieser Generator noch lange nicht, für welche Webseite dieses Passwort generiert wurde. Von daher ist das durchaus legitim. Vor allem benötigt man ja für die Authentifizierung ja noch den Benutzernamen. Diesen muss man ja nicht real angeben…

      • Roland Stumpp sagt:

        Passwörter, die man ungeschützt ins Netz bläst sind eine willkommene Gelegenheit eine Passwortliste zu ergänzen. Außerdem wird im offenen Formular die IP Adresse übertragen. Man muss sich nicht wundern wenn immer mehr Computer und Websites von Hackern benutzt werden. Das geheimste Passwort wird durchs Netz geblasen und jeder der es gerne sammeln möchte kann es tun. Ich denke, man sollte die Leute die Böses im Schilde führen nicht für blöde halten.

        • Du hast sicher Recht, dass theoretisch ein Restrisiko bleibt. Aber wie groß ist dieses? Meine IP Adresse nützt dem Hacker herzlich wenig, da diese meistens flexibel zugewiesen wird und sich ändert und keine direkt Verbindung zu einem Webserver zeigt. Zudem ist ein Passwort allein kaum etwas wert und kann allerhöchstens Brute-Force-Passwort-Listen erweitern. Das klingt zwar kritisch, ist es aber nicht wirklich, wenn die Benutzername-Passwort-Kombination nicht bekannt ist. Von daher kann ich deine Bedenken irgendwo nachvollziehen, sehe es aber persönlich anders.

  10. Daniel sagt:

    Danke für die vielen und vorallem guten Tipps! Ich hab bisher mit Better WP Security sehr gute Erfahrungen gemacht, aber ab und zu musste ich das Plugin deaktivieren oder die erstellen .htaccess Dateien löschen, damit ich bestimmte Änderungen am System machen kann. Außerdem verträgt es sich nicht so gut mit BackWPUp, zumindest werden bei mir gelegentlich Fehler angezeigt..

  11. WPFreak sagt:

    Wow, dass nenn ich mal umfangreich das Tutorial. Hat jemand generell Erfahrungen mit WordPress Sicherheit? Man hört ja manchmal, dass es nicht so sicher sein soll. Fragt man sich ja schon, ob es so ist, oder ob es auch nicht unsicherer ist als andere CMS!?

  12. Stephan sagt:

    Hi René,

    schöne Auflistung, die du da zusammengestellt hast. Bei den Plugins sollte aber auch gesagt sein, dass Secruity-Plugins selbst auch Sicherheitslücken mitbringen können und man sie immer auf dem aktuellen Stand halten sollte.

    Grüße Stephan

    • Hallo Stephan,

      danke für den Hinweis. Hatte ich allerdings schon drin im Artikel (keine Panik, ich verurteile niemanden, der den ellenlangen Text nicht gänzlich gelesen hat 😉

  13. Hi. Knaller Tutorial 🙂 Ich glaub, wenn man immerhin ein Viertel davon beherzigt, muss man sich keine Sorgen mehr machen. Gleich mal gebookmarkt. Beste Grüße!

  14. Peter sagt:

    Das ist ja eine Mega Anleitung. Das gibt für mich jede Menge todos, denn ich denke, es ist sinnvoll diese mal umzusetzen.

  15. Marcus sagt:

    Danke für diese sehr ausführliche Auflistung. Jetzt weiß ich, wie viel es bei meinem Blog noch zu tun gibt. Es ist immer schön, auch nach Jahren noch neue nützliche Seiten zu finden. Mach weiter so!

  16. Daniela sagt:

    Wow, endlich mal ein Artikel der gefühlt alles beinhaltet, was im Rahmen der Sicherheit von WordPress möglich ist.

    Ich werd in Zukunft diese Sicherheitsmaßnahmen umzusetzen, man weiß ja nie.

    Gruß
    Dani

  17. […] – denn da gibt es wohl bei uns auch noch einiges zu tun…Und auch der René Dasbeck, the Netz-Gänger, glänzt wieder mit ‘nem nutzwertigen Artikel über Sicherheitsmaßnahmen für […]

Kommentar schreiben

* Notwendige Angaben

Netzgänger Webdesign | Schlehenweg 7 in Büchenbach | Bayern
Telefon: 0151/27051457 |
↑ oben
Inhalt