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 13.02.2017)

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

Achtung: Manche Plugins greifen auf die admin-ajax.php im wp-admin Ordner zu. Dann wird durch den folgenden Code die Darstellung ggfs. negativ beeinflusst. In diesem Fall muss man noch in der .htaccess des Ordners wp-admin den folgenden Code speichern:

<Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any 
</Files>

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

40 Kommentare

  1. Marc sagt:

    Hey
    Danke für die super detaillierte Auflistung. Wirklich klasse. Bin eigentlich nur auf der Seite gelandet, da ich wissen wollte, wie die WP Versionsnummer versteckt wird und habe dann prompt die komplette Liste durchgearbeitet. Es sind zwar einige Stunden ins Land gegangen, aber jetzt sollte der Blog um einiges sicherer sein.
    VIele Grüße

  2. Jacob sagt:

    Vielen Vielen dank für diese tollen Tipps. Da ich noch lerne wie alles funktioniert ist so ein Beitrag wirklich ein Segen!

  3. Tolle Seite mit guten und wahnsinnig vielen Inhalten. Respekt.

    Bei den Werbeeinblendungen würde ich mal Filtervorgaben aktivieren und gewisse Werbung, die eigentlich mit Ihnen konkurriert ausfiltern. Die Besucher sollen doch bei Ihnen ein Angebot einholen, oder?

    Mich würde mal Interessieren, ob sich das finanziell lohnt und in wie weit das eventuell das Ranking beeinflusst.
    Also eine thematisch gute Sortierte Werbung ist sicherlich erfolgreich.
    Zum Beispiel Amazon Buchtips zum Thema WordPress oder Blogs. Auch da kann ich als geneigter Blogleser vom Know-how anderer profitieren

    Glück auf und weiter So!

    • Danke für deinen Hinweis. Ich denke meine generell hohe Auslastung hat dazu geführt, dass es mir relativ gleich ist, wenn mal jemand zur Konkurrenz abwandert. Mir ist aber noch keine für mich kritische Werbung aufgefallen. Ansonsten lohnt sich die Werbung schon für ein wenig passive Income. Das Ranking sollte das nicht beeinflussen.

  4. David Stingl sagt:

    Hallo René,

    tolle Sammlung an Tipps, vielen Dank dafür!

    Eine Anmerkung hätte ich allerdings: Wenn man den kompletten wp-admin-Ordner mittels .htaccess mit einem Passwortschutz, verhindert man damit auch den Zugriff auf admin-ajax.php, was von einigen Themes und Plugins auch für Frontend-Zwecke genuzuz wird (der Codex empfiehlt dieses Vorgehen).

    Bei wpbeginner wird erklärt, wie man dieses File vom Passwortschutz ausnimmt, das sollstes Du vielleicht noch ergänzen: https://www.wordfence.com/blog/2014/05/please-stop-password-protecting-your-wp-admin-folder-because-it-breaks-public-ajax-for-wordpress/

    Beste Grüße
    David

Kommentar schreiben

* Notwendige Angaben

Netzgänger Webdesign | Schlehenweg 7 in Büchenbach | Bayern
Kontakt: info@netz-gaenger.de |
↑ oben
Inhalt