Security Blog
Security Blog
Posted By Gregory

Verwandle dein WordPress in Fort Knox

Wie man WordPress in eine geschützte Festung wie Fort Knox verwandelt


English version: Turn your WordPress into Fort Knox


Dieser Artikel geht davon aus, dass Sie eine absolut sichere, mit WordPress betriebene Website erstellen möchten. Es ist nicht zwingend erforderlich, alle folgenden Schritte Wort für Wort und Punkt für Punkt genau so auszuführen. Ich empfehle dies jedoch, wenn Sie Ihre eigene Festung aus dem Nichts erschaffen wollen.

Einige der folgenden Schritte könnten zu Inkompatibilitätsproblemen mit bestimmten Plugins führen, die versuchen, Dateien direkt in den WordPress-Ordnern zu verändern. Ich rate dringend davon ab, solche Plugins zu verwenden, da ihre Nutzung unmittelbar oder später zu zahlreichen Problemen und Sicherheitslücken führen kann, sobald Hacker Schwachstellen in den installierten Plugins oder Themes ausnutzen. Ich habe diesen Artikel in der Hoffnung erstellt, dass er hilfreich ist, übernehme jedoch keine Gewähr für seine Richtigkeit.

Hinweis: Dieser Artikel ist nicht anwendbar, wenn Sie Shared Hosting nutzen. Sie benötigen mindestens eine VPS-gehostete Website.

Voraussetzungen: Root-Zugriff auf den Linux-Server, auf dem Ihre Website gehostet wird. Ohne Root-Rechte ist es unmöglich, eine wirklich sichere Website zu erstellen. Es gibt keine Möglichkeit oder kein Plugin, das WordPress und die darin enthaltenen Dateien professionell schützen kann. Alle Sicherheits-Plugins verfügen über dieselben Berechtigungen wie Hacker und Bots. Ausnahmslos. Selbst wenn ein Sicherheits-Plugin Änderungen an den Dateien Ihrer Website vornimmt, um diese zu schützen, kann jeder Hacker oder Schadcode diese Änderungen rückgängig machen oder den Schutz aufheben.

Hier einige wichtige Punkte zu meinem Ansatz

  • Sämtliche Quellcode-Dateien (PHP-Code) und alle .htaccess-Dateien müssen schreibgeschützt sein. Ausnahmslos.
  • Wir müssen alle Standardeinstellungen (Ordner, Cookies, Anmeldepfad, alle anderen Orientierungspunkte) auf andere Werte ändern.
  • Wir dürfen keine Plugins oder Themes verwenden, die mit PHP- oder .htaccess-Dateien in den WordPress-Ordnern arbeiten und versuchen, diese zu verändern.

Schritt eins. WordPress installieren.

Verwenden Sie nicht das Standardpräfix wp_ für Datenbanktabellen. Nutzen Sie stattdessen ein oder zwei Buchstaben. Einige WordPress-spezifische Angriffe und Angreifer gehen fälschlicherweise davon aus, dass das Tabellenpräfix wp_ lautet. Durch die Änderung des Präfixes können wir einige SQL-Injection-Angriffe abwehren.

Schritt zwei. Die Website auf WordPress-Ebene absichern.

  1. Verschieben Sie den Upload- Ordner eine Ebene nach oben, vom Inneren des Ordners /wp-content/ in das Stammverzeichnis Ihres WordPress-Installationsordners.
  2. Benennen Sie den Upload- Ordner in „Medien“ um (oder so ähnlich, ganz wie Sie möchten).
  3. Benennen Sie den Ordner wp-content in content um (oder so ähnlich, ganz wie Sie möchten).
  4. Benennen Sie den Ordner „plugins“ in „mod“ um (oder so ähnlich, ganz wie Sie möchten).
  5. Fügen Sie die folgenden Zeilen am Anfang der wp-config.php- Datei hinzu. Vergessen Sie nicht, media , content und mod durch die von Ihnen zuvor gewählten Werte zu ersetzen.
     define('AUTOMATIC_UPDATER_DISABLED', true ); // Ja, es ist sicher, dies manuell durchzuführen.
    define('DISALLOW_FILE_EDIT', true ); // Wir erlauben niemals, dass jemand Ihre Dateien bearbeitet.
    define('DISALLOW_FILE_MODS', true ); // Ja, es ist sicher, dies manuell zu tun.
    define('FS_METHOD', 'direct'); // Natürlich kein FTP
    define('WP_HTTP_BLOCK_EXTERNAL', true );
    define('UPLOADS', ' media ' ); // Wir haben uploads umbenannt und die Ebene nach oben verschoben.
    define('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // kein Hostname, kein abschließender Schrägstrich
    define('WP_CONTENT_URL', 'http://example.com/ content ');
    define('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // kein Hostname, kein abschließender Schrägstrich
    define('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
    ini_set('display_errors',0); // PHP-Fehler im Frontend deaktivieren

Schritt drei. Ändern Sie den Standardnamen der Cookies.

Fügen Sie diese Zeilen am Anfang der wp-config.php- Datei hinzu.

 define('USER_COOKIE', 'my_user_cookie' ); // Ändern Sie dies in einen anderen Wert.
define('PASS_COOKIE', 'my_pass_cookie' ); // Ändern Sie dies in einen anderen Wert.
define('AUTH_COOKIE', 'my_auth_cookie' ); // Ändern Sie dies in einen anderen Wert.
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // Ändern Sie dies in einen anderen Wert.
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // Ändern Sie dies in einen anderen Wert.
define('TEST_COOKIE', 'my_test_cookie' ); // Ändern Sie dies in einen anderen Wert.

Schritt vier. Installieren Sie unmittelbar nach der Installation von WordPress ein Sicherheits-Plugin.

Schützen Sie Ihre Anmeldeseite mit WP Cerber Security . Selbst mit den oben genannten Schutzmaßnahmen werden Hacker versuchen, durch Brute-Force-Angriffe (Anmeldeversuche) Zugriff auf Ihre WordPress-Website zu erlangen. Schützen Sie sich zuverlässig mit WP Cerber.

Schritt fünf. Absicherung der Website auf Serverebene.

In diesem Schritt gehe ich davon aus, dass Sie einen Server mit Apache als HTTP-Server verwenden. Wir müssen den Besitzer aller WordPress-Dateien, einschließlich Plugins und Themes, ändern. Standardmäßig ist dies der Benutzer „apache“ . Wir müssen ihn in einen anderen Benutzer ändern, den Sie zuvor zu diesem Zweck erstellt haben. Nehmen wir an, dieser Benutzer heißt „cerber“ .

  1. Legen Sie die .htaccess-Datei mit der folgenden Anweisung in den Medienordner (Ihren neuen Upload-Ordner). Dadurch wird verhindert, dass die Website hochgeladenen schädlichen PHP-Code ausführt.
     php_flag engine off

    Hinweis: Die Apache-Konfigurationsdatei muss AllowOverride Options Direktive für Ihren Upload-Ordner oder einen seiner übergeordneten Ordner enthalten, damit diese Direktive funktioniert.

  2. Ändern Sie für das gesamte Website-Verzeichnis (/Pfad/zu/wordpress/dir) den Besitzer und die Berechtigungen aller Dateien. Führen Sie dazu die folgenden Befehle in der Shell aus.
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    find /path/to/wordpress/dir -type d -exec chmod 755 {} +
    find /path/to/wordpress/dir -type f -exec chmod 644 {} +

  3. Für das Upload-Verzeichnis (/Pfad/zum/WordPress-Verzeichnis/ Medien ) müssen spezielle Berechtigungen festgelegt werden. Dies geschieht mithilfe von exec-Befehlen in der Shell.
     find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
    find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
    find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} +

  4. Richten Sie die Permalink-Struktur in den WordPress-Einstellungen ein und ändern Sie anschließend die Berechtigungen für die .htaccess- Datei, um sie schreibgeschützt zu machen.
     chown cerber:root /Pfad/zum/wordpress/Verzeichnis/.htaccess
    chmod 644 /Pfad/zum/WordPress-Verzeichnis/.htaccess

  5. Verschieben Sie die Datei wp-config.php in das Verzeichnis oberhalb Ihres WordPress-Installationsverzeichnisses.

Schritt sechs. Absicherung der Website auf NGINX-Serverebene

Lesen Sie hier: WordPress mit WP Cerber und NGINX absichern

Schritt sieben. Die Website mit Fail2Ban absichern.

Lesen Sie hier: So schützen Sie WordPress mit Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.