WordPress-Sites sind notorisch mangelhaft, wenn es um Sicherheit geht, und sind oft das Ziel eines WordPress-Hacks. Sei es aufgrund einer unzureichenden Sicherheitsexpertise des Entwicklers oder der Verwendung eines der vielen verfügbaren Plugins (deren Sicherheit nicht garantiert werden kann).
Da WordPress auf 1 von 5 Websites im Internet läuft, ist es keine Überraschung, dass sie sowohl für erfahrene Hacker als auch für Skript-Kiddies ein sehr beliebtes Ziel sind. 2013 wurden rund 90.000 WordPress-Seiten für die Nutzung in einem Botnet gekapert. Sie sind auch ein beliebtes Ziel für Malware.
Aus diesem Grund haben wir uns etwas Zeit genommen, um einige Maßnahmen zu beschreiben, die ergriffen werden können, um die grundlegenden Sicherheitslücken oder Fehlverhalten zu beheben, die häufig auf Tausenden von WordPress-Sites vorhanden sind und helfen können, einen WordPress-Hack zu verhindern.
1. Ausführen der neuesten Version von WordPress
Das Ausführen der neuesten Version einer Software ist wahrscheinlich die offensichtlichste Sicherheitsmaßnahme, die ergriffen werden sollte. Da jedoch über 86 % der WordPress-Installationen veraltete Versionen von WordPress ausführen , muss dieser Punkt immer noch betont werden.
Jedes Update von WordPress bringt nicht nur neue Funktionen mit sich, sondern, was noch wichtiger ist, es bringt Bugfixes und Sicherheitsfixes mit sich, die dazu beitragen, dass Ihre WordPress-Site vor häufigen, leicht auszunutzenden Schwachstellen geschützt bleibt.
Das Ausführen der neuesten Version von WordPress allein reicht nicht aus – die Plugins und Themes Ihrer Website könnten immer noch Schwachstellen enthalten, die die Sicherheit Ihrer WordPress-Website gefährden können, was wiederum Opfer eines WordPress-Hacks werden könnte.
Das Slider Revolution-Plugin ist ein gutes Beispiel dafür, wie veraltete Plugins und Themes die Sicherheit Ihrer Website gefährden können. Slider Revolution ist ein sehr beliebtes WordPress-Plugin, das zufällig auch von einer großen Anzahl von WordPress-Themen verwendet wird, die auf dem Envato Market verkauft werden. Das anfällige Plugin ermöglichte es böswilligen Benutzern, Datenbankanmeldeinformationen zu stehlen, was dann möglicherweise eine vollständige Kompromittierung der WordPress-Site über ihre Datenbank ermöglichen würde.
Stellen Sie daher sicher, dass alle von Ihnen ausgeführten Designs und Plugins auf die neuesten Versionen aktualisiert werden. Indem Sie Ihre Plugins und Themes auf dem neuesten Stand halten, können Sie sicherstellen, dass Ihre Website mit den neuesten Sicherheitsupdates ausgestattet ist.
Acunetix führt WordPress-Sicherheitsscans durch, identifiziert WordPress-Installationen und startet versionsspezifische Sicherheitsprüfungen, um sicherzustellen, dass Ihre Website sicher ist.
3. Seien Sie wählerisch bei der Auswahl von Plugins und Themes
Mit WordPress können Sie Ihre Website mit Tausenden von Plugins und Themen erweitern und anpassen. Es ist zwar wichtig, die Funktionen und Anpassungsmöglichkeiten Ihrer Website zu erweitern, dies sollte jedoch nicht zu Lasten der Sicherheit Ihrer Website gehen.
Selbst wenn Ihre WordPress-Installation, Plugins und Themes alle auf dem neuesten Stand sind, bedeutet dies nicht, dass eine Website nicht anfällig für Angriffe ist. Durch die Plugin-Aufzählung können Angreifer herausfinden, welche Plugins Ihre WordPress-Site verwendet. Indem Sie die Installation unnötiger Plugins vermeiden, reduzieren Sie automatisch die Angriffsfläche Ihrer Website.
Seien Sie wählerisch bei der Auswahl der zu verwendenden Plugins und Themes. Bevor Sie ein Plugin oder Design installieren, lesen Sie darüber (idealerweise auf anderen Quellen als der Website des Plugin-/Designentwicklers). Dadurch wird verhindert, dass Sie Malware wie das Tools Pack-Malware-Plug- In installieren .
Überprüfen Sie, wie viele Downloads das Plugin oder Theme hat und wann es zuletzt von seinen Autoren aktualisiert wurde. Je mehr Downloads und aktuelle Updates das Plugin oder Thema hat, zeigt an, dass es weit verbreitet ist und von seinen Autoren aktiv gepflegt wird, was bedeutet, dass eine gefundene Schwachstelle wahrscheinlich schneller behoben wird.
4. Entfernen Sie inaktive Benutzer
Inaktive Benutzer auf Ihrer WordPress-Seite zu halten, erhöht Ihre Angriffsfläche. Benutzer, insbesondere Administratoren und andere, die Inhalte ändern können, sind möglicherweise einer der schwächsten Punkte jeder Website, da die meisten Benutzer leider dazu neigen, schwache Passwörter zu wählen.
Wenn Sie inaktive Benutzer unbedingt in Ihrer WordPress-Datenbank behalten müssen, ändern Sie ihre Rolle in „Abonnent“, um alle möglichen Aktionen einzuschränken.
5. Sicherheitskonfigurationen – Verzeichnisauflistung verhindern
Achtung – Abhängig von der Konfiguration Ihres Webservers, aktivierten Plugins und/oder Themen können die folgenden Funktionen einige Funktionen beeinträchtigen. Es wird dringend empfohlen, jede Konfiguration in einer Test-/Staging-Umgebung auszuprobieren, bevor Sie eine Konfiguration auf Produktionsservern ändern.
Die Verzeichnisauflistung erfolgt, wenn der Webserver keine Indexdatei findet (dh eine index.php oder index.html). Wenn die Verzeichnisauflistung aktiviert ist, zeigt der Server eine HTML-Seite an, die den Inhalt des Verzeichnisses auflistet.
Die Offenlegung dieser Informationen könnte eine Website anfällig für Angriffe machen, indem Informationen preisgegeben werden, die von einem Angreifer verwendet werden können, der versucht, eine Schwachstelle in einem WordPress-Plugin, -Design oder sogar dem Webserver selbst auszunutzen.
Obwohl es keine WordPress-spezifische Sicherheitsmaßnahme ist, Verzeichnislisten zu deaktivieren, haben mehrere WordPress-Sites, die auf Standardinstallationen von Apache HTTP Server ausgeführt werden, Verzeichnislisten aktiviert.
Um die Verzeichnisauflistung in Apache HTTP Server zu deaktivieren, müssen Sie die folgende Konfiguration in der .htaccess-Datei Ihrer WordPress-Site hinzufügen (diese befindet sich normalerweise im Stammverzeichnis Ihrer Website).
6. Komplexe Sicherheitsschlüssel
WordPress verwendet eine Reihe langer, zufälliger und komplexer Sicherheitsschlüssel. Diese Schlüssel bestehen aus einer Reihe von Verschlüsselungsschlüsseln sowie kryptografischen Salzen.
Sicherheitsschlüssel sorgen für eine bessere Verschlüsselung der in den Cookies der Benutzer gespeicherten Informationen. Es gibt insgesamt acht Sicherheitsschlüssel, die WordPress verwendet – AUTH_KEY , SECURE_AUTH_KEY , LOGGED_IN_KEY , NONCE_KEY , AUTH_SALT , SECURE_AUTH_SALT , LOGGED_IN_SALT und NONCE_SALT .
Ein Sicherheitsschlüssel funktioniert ähnlich wie ein sehr starkes Passwort oder eine Passphrase und sollte Elemente enthalten, die es schwieriger machen, genügend Optionen zum Knacken zu generieren. WordPress-Sicherheitsschlüssel verwenden auch kryptografische Salze, um die Sicherheit des generierten Ergebnisses weiter zu erhöhen.
Sie können entweder Ihre eigenen zufälligen Schlüssel erstellen oder den Online-Schlüsselgenerator von WordPress verwenden, um dies für Sie zu tun. Kopieren Sie einfach die vom Generator generierten Schlüssel und fügen Sie sie in Ihre wp-config.php-Datei ein.
7. Beschränken Sie den Zugriff auf das wp-admin-Verzeichnis
Der Kennwortschutz Ihres WordPress-Adminbereichs durch eine Schicht der HTTP-Authentifizierung ist eine wirksame Maßnahme, um Angreifer zu vereiteln, die versuchen, die Kennwörter der Benutzer zu erraten. Wenn es Angreifern gelingt, das Passwort eines Benutzers zu stehlen, müssen sie außerdem die HTTP-Authentifizierung überwinden, um Zugriff auf das WordPress-Anmeldeformular zu erhalten.
n Apache HTTP Server können Sie dies erreichen, indem Sie eine .htpasswd-Datei erstellen und einige unten beschriebene Konfigurationsanweisungen hinzufügen.
Die .htpasswd
Datei speichert Kombinationen aus Benutzernamen und Passwort-Hashes, die der Webserver verwendet, um Benutzer zu authentifizieren. Sie können eine .htpasswd
Datei über die htpasswdBefehlszeile oder mit einem Online-Generator für Kennwortdateien erstellen .
Mehrere Linux-Distributionen installieren das htpasswdDienstprogramm zusammen mit Apache selbst, die meisten Debian- und Ubuntu-Benutzer müssen das apache2-utilsPaket jedoch wie folgt installieren.
Führen htpasswdSie nach der Installation den folgenden Befehl aus, um eine neue .htpasswd
Datei mit einem einzelnen Benutzer zu erstellen. Der folgende Befehl erstellt eine neue .htpasswd
Datei /srv/auth/.htpasswdmit dem Benutzernamen myuser. htpasswdfordert Sie dann auf, das von Ihnen gewählte Passwort einzugeben und zu bestätigen.
Um die grundlegende HTTP-Authentifizierung im WordPress-Administrationsbereich zu aktivieren, müssen Sie die unten beschriebene Anweisung im wp-admin-Verzeichnis aktivieren und auf die zuvor erstellte .htpasswd-Datei verweisen. Fügen Sie die folgenden Zeilen in den entsprechenden Abschnitt <Directory> der Apache-Konfigurationsdatei Ihres Servers oder in eine .htaccess-Datei im wp-admin-Verzeichnis ein.
Die AuthType
Direktive gibt an, dass der Authentifizierungstyp. In diesem Fall wird die Standardauthentifizierung konfiguriert.
Die AuthUserFile
Direktive gibt den vollständigen Pfad zur .htpasswd
Datei an. Diese Datei ist die Datei, die zum Speichern von Passwort-Hashes verwendet werden soll, mit denen der Server später Benutzer authentifizieren soll.
Die AuthName
Direktive enthält eine willkürliche Nachricht, die der Browser dem Benutzer bei der Authentifizierung präsentiert. Die Einstellung „Require valid-user“ weist Apache einfach an, jedem gültigen Benutzer die Authentifizierung zu erlauben.
8. Deaktivieren Sie die Dateibearbeitung
Standardmäßig erlaubt WordPress administrativen Benutzern, PHP-Dateien von Plugins und Themes innerhalb der WordPress-Admin-Oberfläche zu bearbeiten.
Dies ist oft das erste, wonach ein Angreifer sucht, wenn es ihm gelingt, Zugriff auf ein Administratorkonto zu erhalten, da diese Funktion die Ausführung von Code auf dem Server ermöglicht.
Die Eingabe der folgenden Konstante in wp-config.php deaktiviert die Bearbeitung innerhalb der Verwaltungsschnittstelle.
9. Verhindern Sie die Aufzählung des WordPress-Benutzernamens
In vielen WordPress-Blogs ist es möglich, WordPress-Benutzer über die Archivseite eines Autors aufzulisten. Dies funktioniert, wenn WordPress-Permalinks aktiviert sind und der Benutzer einen oder mehrere Beiträge veröffentlicht hat.
Weitere Informationen zur WordPress-Benutzernamenaufzählung finden Sie im Artikel WordPress-Benutzernamenaufzählung mit HTTP-Fuzzer
Um die Aufzählung des WordPress-Benutzernamens zu verhindern, können Sie die folgende Regel zur .htaccess-Datei der WordPress-Site hinzufügen (diese befindet sich normalerweise im Stammverzeichnis Ihrer Website).
10. Aktivieren von HTTPS für alle Logins und wp-admin
Streng genommen ist HTTPS kein eigenes Protokoll, sondern in TLS/SSL gekapseltes HTTP . TLS oder SSL, wie es allgemein bezeichnet wird, bietet Websites und Webanwendungen die Verschlüsselung der übertragenen Daten und die Authentifizierung, um die Identität eines Hosts zu überprüfen.
HTTPS ist normalerweise gleichbedeutend mit Warenkörben und Internet-Banking, aber in Wirklichkeit sollte es immer dann verwendet werden, wenn ein Benutzer sensible Informationen an den Webserver weitergibt und umgekehrt.
TLS/SSL kann je nach Datenverkehr der Website erheblich Serverressourcen verbrauchen. Folglich ist es für die meisten Websites nicht erforderlich, die gesamte Website über HTTPS bereitzustellen. Das Login-Formular und der Admin-Bereich von WordPress hingegen sind die wohl sensibelsten Bereiche einer WordPress-Seite. Es wird daher dringend empfohlen, TLS/SSL in solchen Bereichen nicht nur zu implementieren, sondern auch durchzusetzen.
WordPress bietet eine einfache Möglichkeit, TLS/SSL sowohl auf wp-login- als auch auf wp-admin- Seiten durchzusetzen . Dies wird erreicht, indem zwei Konstanten in der wp-config.php
Datei Ihrer Site definiert werden.
Hinweis – Sie müssen TLS/SSL bereits konfiguriert haben und auf
11. Beschränken Sie den direkten Zugriff auf Plugin- und Theme-PHP-Dateien
Das Zulassen des direkten Zugriffs auf PHP-Dateien kann aus mehreren Gründen gefährlich sein. Einige Plugins und Designdateien können PHP-Dateien enthalten, die nicht für den direkten Aufruf vorgesehen sind, da die Datei Funktionen aufrufen würde, die in anderen Dateien definiert worden wären. Dies kann dazu führen, dass der PHP-Interpreter Fehler oder Warnungen anzeigt, die zur Offenlegung von Informationen führen können.
Ein weiterer Grund für die Einschränkung des direkten Zugriffs auf PHP-Dateien besteht darin, Angreifer daran zu hindern, Sicherheitsmaßnahmen (z. B. Authentifizierung) zu umgehen oder zu umgehen, wenn Code in kleinere Dateien aufgeteilt wird (die dann eingeschlossen und zusammen mit anderem Code verwendet werden).
Einige Plugins und Themes teilen Code in kleinere Dateien auf und fügen diese Dateien in größere Codeteile ein. Ein Angreifer kann manchmal eine der kleineren Dateien direkt aufrufen und verschiedene Sicherheitsmaßnahmen wie Eingabevalidierungsprüfungen umgehen. Meistens tritt dies auf, weil die Validierung in anderen Dateien und nicht in den erwähnten kleineren Modulen nicht durchgeführt würde.
Wenn die register_globals
Direktive auf dem Server aktiviert ist (die Direktive ist standardmäßig in den PHP-Versionen 4.2.0 und höher deaktiviert), kann ein Angreifer mit direktem Zugriff auf eine PHP-Datei möglicherweise mehrere böswillige Aktionen ausführen, einschließlich der Fähigkeit, zu definieren PHP-Variablen aus GET/POST-Anforderungen und um verschiedene Schutzmechanismen zu umgehen.
Die überwiegende Mehrheit der Plugins und Themes würde es nicht erfordern, dass ein Benutzer HTTP-Anforderungen direkt an PHP-Dateien stellt. Sollte es jedoch eine Ausnahme geben, können Sie Dateien und Verzeichnisse auf die Whitelist setzen, die direkten Zugriff auf PHP-Dateien erfordern. Die folgende Regel leitet alle direkten Anfragen an PHP-Dateien auf eine Seite Ihrer Wahl um (im folgenden Beispiel antwortet der Server mit einer 404-Seite und einem Statuscode).
# Beschränken Sie den Zugriff auf PHP-Dateien aus Plug-in- und Theme-Verzeichnissen
12. Verhindern Sie, dass PHP-Dateien ausgeführt werden
Da WordPress-Sites ihren Benutzern erlauben müssen, neue Inhalte hochzuladen, muss das Upload-Verzeichnis von WordPress beschreibbar sein. Insofern sollte Ihr wp-content/uploads
Verzeichnis als potenzieller Einstiegspunkt betrachtet werden.
Die größte potenzielle Bedrohung ist das Hochladen von PHP-Dateien. WordPress erlaubt Benutzern nicht, PHP-Dateien innerhalb seiner Verwaltungskonsole hochzuladen, es kann jedoch der Fall sein, dass ein Plugin oder Design Datei-Uploads zulässt, ohne die dafür vorgesehenen WordPress-APIs zu verwenden. Dies könnte dazu führen, dass eine schädliche PHP-Datei hochgeladen und anschließend auf dem Server ausgeführt wird.
Der beste Ansatz, um dieses potenzielle Sicherheitsrisiko zu mindern, besteht darin, dem Webserver die Bereitstellung von PHP-Dateien im wp-content/uploads
Verzeichnis mithilfe der folgenden Regel zu verweigern.
13. Sichern Sie Ihre Debug-Protokolle
Während der Entwicklung von Plugins oder Themes sowie während der Bereitstellung einer WordPress-Site können Entwickler oder Systemadministratoren Debug-Protokolle aktivieren, um alle auftretenden PHP-Fehler zu protokollieren.
WordPress verwendet die Konstante WP_DEBUG, die in wp-config.php definiert ist. Die Konstante wird verwendet, um den Debug- Modus in WordPress auszulösen. Die Konstante ist standardmäßig auf false gesetzt.
Entwickler und Administratoren können auch die Begleitkonstanten WP_DEBUG_LOG und WP_DEBUG_DISPLAY für WP_DEBUG aktivieren. WP_DEBUG_LOG erstellt eine Protokolldatei im wp-contents-Ordner, während WP_DEBUG_DISPLAY steuert, ob Debug-Meldungen im HTML von Seiten angezeigt werden oder nicht.
Während sich ein Design, ein Plugin oder eine Website in der Entwicklung befindet, ist jedes der oben genannten Elemente nützlich. Wenn es jedoch auf einer Produktionswebsite aktiviert wird, kann es zur Offenlegung von Informationen führen, wodurch böswillige Benutzer Fehler und zusätzliche Protokollinformationen anzeigen können. Die Konstante WP_DEBUG sollte auf Produktionssystemen deaktiviert werden, indem entweder die Konstante aus der Datei wp-config.php entfernt oder wie folgt auf „false“ gesetzt wird.
define( 'WP_DEBUG', false );
Die obigen 13 Tipps sollten Ihnen dabei helfen, einen WordPress-Hack zu verhindern. Eine Agentur kann helfen, die Prozesse der WordPress-Sicherheit zu automatisieren , indem es nach über 1200 angreifbaren WordPress-Plugins und Fehlkonfigurationen scannt, nach schwachen WordPress-Admin-Passwörtern sucht, WordPress-Benutzernamen auflistet, als Plugins getarnte Malware erkennt und vieles mehr.