Security Blog
Security Blog
Posted By Gregory

Verwandeln Sie Ihr 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 wir eine kugelsichere, geschützte Website mit WordPress erstellen möchten. Es ist nicht unbedingt erforderlich, alle folgenden Schritte Wort für Wort und Punkt für Punkt genau wie beschrieben auszuführen. Aber ich empfehle dies, wenn Sie Ihr eigenes Fort Knox erstellen möchten.

Einige der folgenden Schritte können zu Inkompatibilitätsproblemen mit einigen seltsamen Plugins führen, die versuchen, Dateien direkt in den WordPress-Ordnern zu ändern. Ich empfehle, Plugins dieser Art zu ignorieren, da ihre Verwendung sofort oder in der Zukunft zu zahlreichen Problemen und Sicherheitsproblemen führen kann, wenn Hacker nach Schwachstellen in den Plugins oder dem auf Ihrer Site installierten Design suchen. Ich habe diesen Artikel in der Hoffnung erstellt, dass er nützlich sein wird, aber ohne jegliche Garantie.

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

Anforderungen: Root-Zugriff auf den Linux-Server, auf dem Ihre Website gehostet wird. Wenn Sie keinen Shell-Zugriff mit Root-Rechten haben, können Sie nichts Sinnvolles tun, um eine wirklich geschützte Website zu erstellen. Es gibt keine Möglichkeit oder kein Plugin, das WordPress und Dateien in seinen Verzeichnissen auf PRO-Ebene schützen kann. Alle Sicherheits-Plugins haben die gleichen Rechte (Berechtigungen) wie Hacker und Bots. Keine Ausnahme. Wenn ein Sicherheits-Plugin Änderungen an Dateien Ihrer Website vorgenommen hat, um sie zu schützen, kann jeder Hacker oder Schadcode diese Änderungen rückgängig machen oder den Schutz entfernen.

Hier sind einige wichtige Punkte zu meinem Ansatz

  • Alle Codedateien (PHP-Code) und alle .htaccess-Dateien müssen schreibgeschützt sein. Keine Ausnahme
  • Wir müssen alle Standardeinstellungen (Ordner, Cookies, Anmeldepfad, andere 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 ändern

Schritt eins. WordPress installieren

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

Schritt zwei. Absicherung der Website auf WordPress-Ebene

  1. Verschieben Sie den Upload- Ordner eine Ebene nach oben, aus dem Ordner /wp-content/ in das Stammverzeichnis Ihres WordPress-Installationsordners.
  2. Benennen Sie den Upload- Ordner in „Medien“ (oder so ähnlich, was immer Sie möchten) um.
  3. Benennen Sie den Ordner „wp-content“ in „content“ (oder so ähnlich, was immer Sie möchten) um.
  4. Benennen Sie den Plugin- Ordner in „mod“ um (oder so ähnlich, was immer Sie wollen).
  5. Fügen Sie die folgenden Zeilen am Anfang der Datei wp-config.php hinzu und vergessen Sie nicht, „Medien“ , „Inhalt“ und „Mod“ auf die tatsächlichen Werte zu ändern, die Sie zuvor ausgewählt haben .
     define('AUTOMATIC_UPDATER_DISABLED', true ); // ja, es ist sicher, es manuell zu tun
    define('DISALLOW_FILE_EDIT', true ); // Wir lassen niemals zu, dass jemand Ihre Dateien berührt
    define('DISALLOW_FILE_MODS', true ); // ja, es ist sicher, es manuell zu tun
    define('FS_METHOD', 'direct'); // natürlich kein FTP
    definieren('WP_HTTP_BLOCK_EXTERNAL', true );
    define('UPLOADS', ' media ' ); // wir haben Uploads umbenannt und auf eine höhere Ebene verschoben
    define('WP_CONTENT_DIR', '/Pfad/zum/WordPress-Verzeichnis/ Inhalt '); // kein Hostname, kein abschließender Schrägstrich
    definieren('WP_CONTENT_URL', 'http://example.com/ Inhalt ');
    define('WP_PLUGIN_DIR', '/Pfad/zum/WordPress-Verzeichnis/ Inhalt / Mod '); // kein Hostname, kein abschließender Schrägstrich
    definieren('WP_PLUGIN_URL', ' http://example.com/inhalt/mod ' );
    ini_set('display_errors',0); // Anzeige von PHP-Fehlern im Frontend deaktivieren

Schritt drei. Ändern Sie den Standard-Cookie-Namen.

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

 define('USER_COOKIE', 'my_user_cookie' ); // ändere es in etwas anderes
define('PASS_COOKIE', 'my_pass_cookie' ); // ändere es in etwas anderes
define('AUTH_COOKIE', 'my_auth_cookie' ); // ändere es in etwas anderes
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // ändere es in etwas anderes
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // ändere es in etwas anderes
define('TEST_COOKIE', 'my_test_cookie' ); // ändere es in etwas anderes

Schritt vier. Installieren Sie sofort 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, mit Brute-Force-Angriffen (Anmeldeversuchen) die Tür zu Ihrer WordPress-Website zu knacken. Verstecken und schließen Sie diese Tür mit WP Cerber.

Schritt fünf. Absicherung der Website auf Serverebene.

Bei 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 Designs ändern. Standardmäßig ist dieser Benutzer apache . Wir müssen ihn in einen anderen Benutzer ändern, den Sie zuvor zu diesem Zweck erstellt haben. Nehmen wir an, dieser Benutzer ist 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 bösartigen PHP-Code ausführt.
     php_flag-Engine aus

    Hinweis: Damit diese Anweisung funktioniert, muss die Apache-Konfigurationsdatei die Anweisung AllowOverride Options für Ihren Upload-Ordner oder einen seiner übergeordneten Ordner enthalten.

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

  3. Für das Upload-Verzeichnis (/Pfad/zu/WordPress/Verzeichnis/ Medien ) müssen wir spezielle Berechtigungen festlegen. Lassen Sie uns das mit exec-Befehlen in der Shell tun.
     find /Pfad/zum/WordPress-Verzeichnis/ media -exec chown cerber:apache {} +
    find /Pfad/zu/WordPress/Verzeichnis/ media -type d -exec chmod 775 {} +
    find /Pfad/zu/WordPress/Verzeichnis/ media -type f -exec chmod 664 {} +

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

  5. Verschieben Sie die Datei wp-config.php in das Verzeichnis über Ihrem WordPress-Installationsverzeichnis.

Schritt sechs. Absicherung der Website auf NGINX-Serverebene

Lesen Sie hier: WordPress härten mit WP Cerber und NGINX

Schritt sieben. Absicherung der Website mit Fail2Ban

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.