WordPress® ist ein großartiges Content-Management-System (CMS), besonders wenn Sie neu im Bloggen oder Programmieren sind. Aufgrund der hohen Anzahl von WordPress-Installationen ist Wordpress jedoch zum Ziel von Angreifern geworden. Die gute Nachricht ist, dass es viele Schritte gibt, die Sie unternehmen können, um Ihre WordPress-Installation sicherer zu machen.
Linux-Benutzer und -Berechtigungen
Es ist üblich, dass Benutzer, die neu bei WordPress sind, ihre Berechtigungen weit öffnen (777-Berechtigungen festlegen), wenn sie eine Permission Denied
sehen Fehler von WordPress. Diese Konfiguration ermöglicht es jedem Benutzer (am wichtigsten, dem Webserverprozess), die Dateien in Ihrer WordPress-Installation zu ändern. Um dies zu verhindern, empfehlen wir, dass Sie für jede WordPress-Installation einen Benutzer als FTP-Benutzer (File Transfer Protocol) für die Website erstellen. Dieser Artikel geht davon aus, dass Sie eine einzelne Site haben und dass Sie diesen Server wp-user
nennen .
Verwenden Sie den folgenden Befehl, um diesen Benutzer zu erstellen:
sudo useradd wp-user -d /home/wp-user -m -s /bin/false
Hinweis :Wir empfehlen, nur die Secure Shell (SSH)-Schlüsselauthentifizierung zu verwenden. Wenn Sie die Kennwortauthentifizierung für FTP verwenden möchten, müssen Sie ein sicheres Kennwort für den Benutzer erstellen.
Berechtigungen festlegen
Sie sollten einen anderen Benutzer als den Systembenutzer des Webdienstes zum Eigentümer des Dokumentenstammverzeichnisses Ihrer Website machen. Sie sollten dem Webdienst auch Schreibberechtigungen verweigern. Der Webdienst benötigt nur eine Leseberechtigung, um Inhalte bereitzustellen, und die Zuweisung von Schreib- oder Ausführungsberechtigungen hinterlässt einen Angriffsvektor für Außenstehende. Da WordPress jedoch in der Lage sein muss, Dateien hochzuladen und seinen eigenen Code zu aktualisieren, müssen Sie diese Regeln leicht beugen.
Beispielsweise sollten Sie den Besitz des gesamten Verzeichnisses als wp-user:www-data
festlegen .
Diese Einstellung bedeutet, dass wp-user
hat Benutzerbesitz und www-data
(der Systembenutzer für den Apache®-Webserver) hat Gruppenbesitz. Abhängig von Ihrem Betriebssystem kann dieser Benutzer auch httpd
heißen oder apache
. Wenn Sie nginx® verwenden, ist der Benutzer nginx
. Führen Sie zum Festlegen von Berechtigungen den folgenden Befehl aus und ersetzen Sie dabei den Beispielwert /var/www/example.com/
mit dem Dokumentenstamm Ihrer Website:
sudo chown -R wp-user:www-data /var/www/example.com/
Verwenden Sie die folgenden Basisberechtigungen für Ihre WordPress-Installation:
- 755 (drwxr-xr-x) für Ordner
- 644 (-rw-r–r–) für Dateien
Diese Berechtigungen gewähren wp-user
die Fähigkeit, alles zu ändern, und der Webserver-Nur-Lese-Zugriff.
Das folgende Beispiel zeigt, wie diese Berechtigungen zugewiesen werden:
find /var/www/example.com/ -type d -exec sudo chmod 755 {} \;
find /var/www/example.com/ -type f -exec sudo chmod 644 {} \;
Diese Berechtigungen gewähren wp-user
die Möglichkeit, alles zu ändern, und der schreibgeschützte Zugriff auf den Webserver. Während dies bei statischen Websites üblich ist, gibt es einige Dateien, auf die WordPress zugreifen und die sie ausführen können muss, um richtig zu funktionieren. Die folgende Liste zeigt die Ausnahmen und die Berechtigungen, die Sie festlegen müssen, vorausgesetzt, dass derselbe Dokumentstamm vorhanden ist:
find /var/www/example.com/wp-content/uploads -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/upgrade -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/themes -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/plugins -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/uploads -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/upgrade -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/themes -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/plugins -type f -exec sudo chmod 664 {} \;
sudo chmod 775 /var/www/example.com/wp-config.php
WordPress verwendet diese Verzeichnisse für Systemaktualisierungen, Themen- und Plugin-Aktualisierungen und das Hochladen von Blog-Anhängen (am häufigsten Bilder).
WordPress-Admin-Benutzer
Ähnlich wie der Linux®-Root-Benutzer wird Ihre WordPress-Installation mit einem Admin geliefert Benutzer. Da es sich um einen administrativen Benutzer handelt, der in fast jeder WordPress-Installation vorhanden ist, zielen Hacker darauf mit Brute-Force-Angriffen ab. Der einfachste Weg, diesen Angriffsvektor zu schließen, besteht darin, den Admin-Benutzer zu entfernen. Wir empfehlen, dass Sie einen Benutzer mit einem anderen Namen erstellen, diesem Benutzer Administratorrechte erteilen und dann den Admin-Benutzer löschen.
Sichere Updates
FTP ist von Natur aus unsicher, insbesondere wenn Sie die kennwortbasierte Authentifizierung verwenden. Es ist viel sicherer, SSH-Schlüsselaktualisierungen einzurichten, anstatt Passwörter zu verwenden. Verwenden Sie die folgenden Schritte, um SSH-Schlüsselaktualisierungen einzurichten:
-
Stellen Sie sicher, dass die erforderlichen Pakete auf Ihrem System installiert sind. Führen Sie unter Ubuntu® oder Debian® die folgenden Befehle aus:
sudo apt-get update sudo apt-get install php5-dev libssh2-php libssh2-1-dev
-
Richten Sie Ihren SSH-Zugang ein, indem Sie die folgenden Schritte als
wp-user
ausführen . Weil du die Anmeldung alswp-user
nicht erlaubt hast müssen Sie mit dem folgenden sudo-Befehl eine Shell öffnen:sudo -u wp-user /bin/bash
-
Verwenden Sie die folgenden Befehle, um zum
wp-user
zu wechseln Home-Verzeichnis und SSH-Schlüssel einrichten:cd ~ ssh-keygen -t rsa -b 4096 mkdir ~/.ssh; cd ~/.ssh echo 'from="127.0.0.1"' cat ~/.ssh/id_rsa.pub > authorized_keys exit
-
Stellen Sie als Nächstes sicher, dass Sie die Berechtigungen korrekt festlegen, indem Sie die folgenden Befehle verwenden:
sudo chmod 700 /home/wp-user/.ssh sudo chmod 040 /home/wp-user/.ssh/* sudo chmod 644 /home/wp-user/.ssh/authorized_keys
-
Fügen Sie die folgenden Zeilen zu Ihrer /var/www/example.com/wp-config.php hinzu Datei:
define('FTP_PUBKEY','/home/wp-user/id_rsa.pub'); define('FTP_PRIVKEY','/home/wp-user/id_rsa'); define('FTP_USER','wp-user'); define('FTP_PASS',''); define('FTP_HOST','127.0.0.1:22');
Sie sollten in der Lage sein, WordPress, Plug-Ins und Designs zu aktualisieren, ohne zur Eingabe von Anmeldeinformationen aufgefordert zu werden.
Plugins
Wir empfehlen Ihnen, so wenig Plug-Ins wie möglich zu verwenden, um die gewünschten Ergebnisse zu erzielen. Wir empfehlen jedoch, dass Sie die folgenden Plug-Ins verwenden, um die Sicherheit zu erhöhen:
- WP Security Pro :Dies ist ein All-in-One-Plug-in mit Schutzfunktionen wie Anmeldeschutz, Malware-Scanner, Zwei-Faktor-Authentifizierung und einer Firewall.
- XML-RPC deaktivieren :Sie können XML-RPC sperren, indem Sie eine .htaccess verwenden Datei. Sofern Sie jedoch keinen zwingenden Grund haben, die Fernsteuerung Ihrer WordPress-Installation zu benötigen, ist es besser, sie zu deaktivieren, um Pingback-Angriffe zu verhindern.
- Disqus Hinweis:Da das eingebaute Benutzerkommentarsystem für WordPress sehr anfällig für Spam ist, empfehlen wir Ihnen, die offene Registrierung zu deaktivieren. Gehen Sie dazu zu Einstellungen> Allgemein , und deaktivieren Sie dann Jeder kann sich registrieren . Verwenden Sie dann stattdessen Disqus, um Kommentare zu moderieren, und lassen Sie Benutzer sich mit ihren Facebook®- oder Google®-Konten authentifizieren.