WordPress Sicherheit
Das A und O für eine sichere WordPress-Webseite ist natürlich regelmässiges Updaten von WordPress, Plugins und Themes. Aber es gibt noch viele weitere Punkte die für einen sicheren Betrieb deiner Seite unerlässlich sind.
Verstecke den Login-Bereich
Ein recht simpler aber effektiver Schutz! Für Hacker ist es natürlich besonders einfach deine Webseite mit Brute-Force-Attacken anzugreifen wenn du dich über das Standard Loginverzeichnis (domain.ch/wp-admin) anmeldest. Ich empfehle dir dringend die Loginseite umzubenennen. Super einfach geht das mit dem Plugin WPS Hide Login.
Verhindere Brute-Force-Attacken
Auch wenn du ein sehr gutes und sicheres Passwort hast: mache es Hackern nicht zu leicht, indem Sie mit Passwortknacker-Tools tausende oder gar millionen Kombinationen in Sekundenschnelle ausprobieren können! Verhindern kannst du das indem du die Anzahl Passwort-Eingaben in einem bestimmten Zeitraum beschränkst. Dafür eignet sich ein Plugin wie WPS Limit Login. Ich lasse meistens 3,4 Versuche pro 15min zu.
Wer noch weitergehen möchte, installiert auch noch das Plugin Disable XML-RPC.
Schreibberechtigungen anpassen
Standardmässig sehen die Schreibberechtigungen nach einer WordPress-Installation für sicherheitsrelevante Dateien wie «wp-config.php» oder «.htaccess» wie folgt aus (siehe «Actual», rot gekennzeichnet):
Wenn du deine WordPress-Installation noch mehr absichern möchtest, änderst du die Zugriffsberechtigungen wie in diesem Screenshot von einem Sicherheits-Plugin empfohlen. Diese Berechtigungen kannst du beispielsweise in der Webhosting-Umgebung anpassen oder mit einem FTP-Client. In den folgenden Screenshots siehst du die Unterschiede von 0644 und 0444:
Aber Vorsicht: Mit Zugriffsberechtigung «Lesen» kann auch der Besitzer resp. bestimmte Funktionen von WordPress oder Plugins selber die Dateien nicht mehr verändern. Zum Beispiel bei Cashing-Plugins wenn die .htaccess-Datei optimiert werden soll. In diesem Fall müssten die Anpassungen in den Dateien manuell durchgeführt werden oder du setzst die Berechtigung kurzfristig wieder auf 0644.
2-Fach-Authentifizierung
Diese Sicherheitsvorkehrung ist natürlich das Non-Plus-Ultra. Ähnlich wie beim E-Banking gibst du zuerst deinen Benutzernamen und Passwort ein und danach ein Code der dir das Smartphone anzeigt. Sicherer gehts nicht! Ob du das wirklich brauchst und vor allem für welche User ist dir überlassen. Ich habe für eine Webseite mit sensiblen Kundendaten diese Authentifizierung für die Admin-Rolle eingerichtet. Mein Tool der Wahl: Google Authenticator.
WordPress-Version in Quellcode ausblenden
Bestimmt hast du dir auch schon den Quellcode einer Webseite anzeigen lassen um z. Bsp. herauszufinden ob die Seite mit WordPress erstellt wurde. Und viele weitere wertvolle Informationen finden Entwickler im Quellcode. Aber nicht nur «brave» Entwickler sondern auch Hacker tun dies! Und gerade bei WordPress ist die Info über die Version für diese Personengruppe interessant: so sieht man gleich ob die Webseite up-to-date ist oder bestimmte Sicherheitslücken noch nicht geschlossen wurde. Verhindern kannst du dies mittels einem Sicherheits-Plugin oder wers gerne mal ohne Plugin mag mit folgendem Code den du in functions.php deines Themes kopierst:
function wp_version_remove_version() {
return '';
}
add_filter('the_generator', 'wp_version_remove_version');
Mach das aber bitte nur in einem aktiven Child-Theme, ansonsten ist dieser Code beim nächsten Update des Themes wieder verschwunden.
«Theme Editor» in WordPress-Menü ausblenden
Sehr praktisch – gerade für Entwickler – ist natürlich der «Theme-Editor» in WordPress. Hier kann ich direkt das Theme-Stylesheet oder die «functions.php»-Datei anpassen ohne die Datei zuerst in einem HTML-Editor zu bearbeiten und dann uploaden. Aber ein Hacker der es geschafft hat, das Admin-Passwort zu ergattern, wird hier natürlich als erstes deine Website «infizieren».
Mittlerweile blende ich diesen Menü-Eintrag aus, sobald eine neue Webseite live ist und ich nichts mehr in der «functions.php»-Datei verändern muss. Und zwar mit folgendem Code in der «wp-config.php»-Datei:
define('DISALLOW_FILE_EDIT', true);
Nicht mehr benötigte Dateien löschen
Dieser Punkt soll vor allem der Vollständigkeit halber erwähnt werden. Ich selber wende diesen Tipp nicht oder nur teilweise an, dennoch ist mir wichtig darauf hinzuweisen.
Folgende Dateien können für Hacker wichtige Informationen liefern oder für eine Infizierung verwendet werden:
- wp-config-sample.php: In dieser Datei wurden vielleicht mal Verbindungsdaten erfasst (je nach Installationsart).
- install.php: Wer die manuelle WordPress-Installation wählt, sollte diese Datei nach erfolgreicher Installation unbedingt löschen. Wer WordPress über die Webhosting-Umgebung installiert, muss sich darum keine Sorgen machen, den dann wird sie automatisch gelöscht.
- Readme-Dateien: Sowohl im Root-Verzeichnis von WordPress sowie in den Plugin-Ordnern sind diese Readme’s enthalten. Diese Dateien können auch Versions-Infos enthalten, sind aber nicht notwendig für den Betrieb von WordPress. Wer nicht ständig in neu installierten Plugins die Readme-Dateien von Hand löschen möchte, der kann auch mittels .htaccess-Datei den direkten Zugriff verhindern (siehe https://www.netz-gaenger.de/blog/wordpress-tutorials/zugriff-auf-sensible-dateien-in-wordpress-entfernen/)
HSTS aktivieren
HSTS steht für «HTTP Strict Transport Security». Mit dieser Funktion teilt eine Website mit, dass sie über eine verschlüsselte Verbindung per HTTPS erreichbar ist. Wenn also deine Webseite ohnehin SSL-verschlüsselt ist, macht das Aktivieren von HSTS Sinn. Dadurch wird der Browser schon im vornherein (auch wenn der User HTTP anstatt HTTPS eingibt) gezwungen eine sichere Verbindung zu verwenden. Der HSTS-Header trägt dazu bei, dass sog. «Man-in-the-Middle»-Angriffe und Cookie-Hijacking verhindert werden.
Am einfachsten kannst du HSTS aktivieren indem du folgenden Code in die functions.php-Datei deines Themes integrierst:
function fprog_strict_transport_security() {
header( 'Strict-Transport-Security: max-age=31536000; includeSubDomains; preload' );
}
add_action( 'send_headers', 'fprog_strict_transport_security' );
Auf der Webseite von webbkoll kannst du dann deine Seite überprüfen lassen. Wenn das Ergebnis wie links im Bild aussieht, hat alles geklappt.
Ich habe hier bewusst die strengere Ausführung mit den Tokens „includeSubDomains“ und „preload“ verwendet für den Fall, dass du deine Seite für die Preload-Liste des Chrome-Sicherheitsteams anmelden möchtest.
Username-Fishing verhindern
Leider ist es für Hacker ganz einfach möglich alle Usernames einer WordPress-Installation herauszufinden. Natürlich kann ein Angreifer damit alleine noch keinen Schaden anrichten. Aber gerade wenn User keine starken Passwörter verwendet, macht man es den Hackern doch sehr leicht. Wenn Ihr mehr darüber erfahren möchtet, schaut euch den diesen Artikel von WP-Tweaks an.
Ihr könnt wie in dem Artikel erwähnt vorgehen oder das Plugin «WPS Bidouille» installieren. Wenn Ihr unter «Optimizations» folgende Punkte aktiviert, können die Hacker die Usernames nicht mehr herausfinden:
Übrigens bietet dieses Plugin noch viele weitere nützliche Features:
- Sicherheits-Übersicht (und was verbessert werden könnte)
- Das verstecken der WordPress-Version (damit erübrigt sich die Anpassung unter functions.php)
- WordPress-Emojis deaktivieren (vor allem gut für die Performance)
- Contact Form 7 Speed Optimierung
- uvm.
Es gibt noch viele weitere Möglichkeiten die Sicherheit einer WordPress-Installation zu verbessern, aber die oben geschilderten Methoden (oder sogar nur ein paar davon) reichen meiner Meinung nach schon vollends aus. Mach deine WordPress-Installation zu einer Festung! 😉 Und wenn dir dieser Beitrag gefallen hat, dann teile ihn bitte mit deiner Community!