Security Blog
Security Blog
Posted By Gregory

Verwandeln Sie Ihr WordPress in Fort Knox

So verwandeln Sie WordPress in eine geschützte Festung wie Fort Knox


English version: Turn your WordPress into Fort Knox


Dieser Artikel geht davon aus, dass wir eine absolut sichere 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. Ich empfehle dies jedoch, wenn Sie Ihr eigenes Fort Knox erstellen möchten.

Einige der folgenden Schritte können zu Inkompatibilitätsproblemen mit seltsamen Plugins führen, die versuchen, Dateien direkt in den WordPress-Ordnern zu ändern. Ich empfehle, solche Plugins zu ignorieren, da ihre Verwendung unmittelbar oder in Zukunft zu zahlreichen Problemen und Sicherheitsproblemen führen kann, wenn Hacker Sicherheitslücken in den auf Ihrer Website installierten Plugins oder Themes ausnutzen. Ich habe diesen Artikel in der Hoffnung verfasst, dass er hilfreich ist, jedoch ohne jegliche Garantie.

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

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

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 Standardwerte (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 ändern

Schritt eins. WordPress installieren

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

Schritt zwei. Härtung 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“ (oder so ähnlich, was immer Sie wollen) um.
  5. Fügen Sie die folgenden Zeilen am Anfang der Datei wp-config.php hinzu. Vergessen Sie nicht, „media“ , „content“ 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 erlauben niemals jemandem, Ihre Dateien zu berühren
    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/zu/WordPress/Verzeichnis/ Inhalt '); // kein Hostname, kein abschließender Schrägstrich
    define('WP_CONTENT_URL', 'http://example.com/ Inhalt ');
    define('WP_PLUGIN_DIR', '/Pfad/zu/WordPress/Verzeichnis/ Inhalt / Mod '); // kein Hostname, kein abschließender Schrägstrich
    define ( '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 ein Sicherheits-Plugin sofort nach der Installation von WordPress

Schützen Sie Ihre Anmeldeseite mit WP Cerber Security . Selbst mit den oben genannten Schutzmaßnahmen versuchen Hacker mit Brute-Force-Angriffen (Anmeldeversuchen), Ihre WordPress-Website zu knacken. Verbergen und schließen Sie diese Tür 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 dieser Benutzer „apache“ . Wir müssen ihn in einen anderen Benutzer ändern, den Sie zuvor für diesen 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 schädlichen 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 im gesamten Website-Verzeichnis (/Pfad/zum/WordPress-Verzeichnis) den Besitzer und die Berechtigungen für alle Dateien. Führen Sie dazu die folgenden Befehle in der Shell aus.
     find /Pfad/zu/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 (/path/to/wordpress/dir/ media ) müssen wir spezielle Berechtigungen vergeben. Das erledigen wir mit Exec-Befehlen in der Shell.
     find /Pfad/zu/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 mit WP Cerber und NGINX härten

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.