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 erhalten möchten, die von WordPress unterstützt wird. Es ist nicht notwendig, alle folgenden Schritte Wort für Wort und Punkt für Punkt genau wie beschrieben durchzuführen. Aber ich empfehle das, wenn Sie Ihr eigenes Fort Knox erstellen möchten.

Einige der folgenden Schritte könnten eine Ursache für einige Inkompatibilitätsprobleme mit einigen seltsamen Plugins sein, die versuchen, Dateien direkt in den WordPress-Ordnern zu ändern. Ich empfehle, solche Plugins zu ignorieren, da ihre Verwendung sofort oder in Zukunft zu vielen Problemen und Sicherheitsproblemen führen kann, wenn Hacker Löcher in den Plugins oder dem Design untersuchen, das auf Ihrer Website installiert ist. Ich habe diesen Artikel in der Hoffnung erstellt, dass er nützlich sein wird, aber ohne jegliche Garantie.

Hinweis: Dieser Artikel gilt nicht, wenn Sie Shared Hosting verwenden. Sie müssen mindestens eine VPS-gehostete Website haben.

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 Nützliches 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 Privilegien (Berechtigungen) wie Hacker und Bots. Keine Ausnahmen. Wenn ein Sicherheits-Plugin einige Änderungen an Dateien Ihrer Website vorgenommen hat, um sie zu schützen, kann jeder Hacker oder bösartiger Code 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 Ausnahmen
  • 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 ändern

Schritt eins. WordPress installieren

Verwenden Sie nicht das Standardpräfix wp_ für Datenbanktabellen. Verwenden Sie stattdessen ein paar oder drei Alphabetsymbole. Einige WordPress-spezifische Angriffe und Angreifer gehen davon aus, dass das Tabellenpräfix wp_ ist. Das Ändern des Präfixes hilft uns, einige SQL-Injection-Angriffe zu blockieren.

Schritt zwei. Härten der Website auf WordPress-Ebene

  1. Verschieben Sie den Uploads -Ordner eine Ebene nach oben, aus dem Ordner /wp-content/ in das Stammverzeichnis Ihres WordPress-Installationsordners.
  2. Benennen Sie den Ordner „ Uploads “ in „ Medien “ um (oder so ähnlich, was immer Sie möchten).
  3. Benennen Sie den Ordner wp-content in content um (oder so ähnlich, was immer Sie wollen).
  4. Benennen Sie den Plugins -Ordner in mod um (oder so ähnlich, was immer Sie wollen).
  5. Füge die folgenden Zeilen am Anfang der Datei wp-config.php hinzu , vergiss nicht, media , content , mod auf die tatsächlichen Werte zu ändern, die du zuvor ausgewählt hast.
     define('AUTOMATIC_UPDATER_DISABLED', true ); // Ja, es ist sicher, es manuell zu tun
    define('DISALLOW_FILE_EDIT', true ); // Wir gestatten niemandem, Ihre Dateien zu berühren
    define('DISALLOW_FILE_MODS', true ); // Ja, es ist sicher, es manuell zu tun
    define('FS_METHOD', 'direct'); // kein FTP natürlich
    define('WP_HTTP_BLOCK_EXTERNAL', true );
    define('UPLOADS', ' media ' ); // Wir haben Uploads umbenannt und auf eine höhere Ebene 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); // Deaktivieren Sie die Anzeige von PHP-Fehlern im Frontend

Schritt drei. Standardnamen für Cookies ändern.

Füge 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 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, Brute-Force-Angriffe (Anmeldeversuche) anzuwenden, um die Tür auf Ihrer WordPress-Website zu knacken. Verstecken und schließen Sie diese Tür mit WP Cerber.

Schritt fünf. Härten 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 Themes ändern. Standardmäßig ist dieser Benutzer apache . Wir müssen es auf 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 in den Medienordner (Ihren neuen Uploads-Ordner) mit der folgenden Anweisung darin. Dadurch wird verhindert, dass die Website hochgeladenen bösartigen PHP-Code ausführt.
     php_flag-Engine aus

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

  2. Ändern Sie für das gesamte Website-Verzeichnis (/path/to/wordpress/dir) den Eigentümer und die Berechtigungen für alle 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 (/path/to/wordpress/dir/ media ) müssen wir spezielle Berechtigungen setzen. Lassen Sie uns das mit exec-Befehlen in der Shell tun
     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 dann die Berechtigung für die .htaccess -Datei, um sie zu schreiben.
     chown cerber:root /path/to/wordpress/dir/.htaccess
    chmod 644 /path/to/wordpress/dir/.htaccess

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

Schritt sechs. Härten der Website auf NGINX-Serverebene

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

Schritt sieben. Härtung 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.