Security Blog
Security Blog
Posted By Gregory

Schalten Sie Ihre 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 setzt voraus, dass wir eine kugelsichere geschützte Website mit WordPress-Unterstützung erhalten möchten. Es ist nicht unbedingt notwendig, alle folgenden Schritte Wort für Wort und Punkt für Punkt genau wie beschrieben auszuführen. Aber ich empfehle das, 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, solche Plugins zu ignorieren, da deren Verwendung sofort oder in der Zukunft zu einer Vielzahl von Problemen und Sicherheitsproblemen führen kann, wenn Hacker Löcher in den Plugins oder in dem auf Ihrer Site installierten Theme studierten. Ich habe diesen Artikel in der Hoffnung erstellt, dass er nützlich ist, jedoch ohne jegliche Gewährleistung.

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

Voraussetzungen: Root-Zugriff auf den Linux-Server, auf dem Ihre Website gehostet wird. Wenn Sie nicht über einen Shell-Zugriff mit Root-Berechtigungen verfügen, können Sie keine sinnvollen Schritte zum Erstellen einer echten geschützten Website durchführen. Es gibt keine Möglichkeit oder Plugins, die WordPress und Dateien in seinen Verzeichnissen auf PRO-Ebene schützen können. Alle Sicherheits-Plugins verfügen über die gleichen Berechtigungen (Berechtigungen) wie Hacker und Bots. Keine Ausnahmen. Wenn ein Sicherheits-Plugin einige Änderungen an den Dateien Ihrer Website vorgenommen hat, um sie zu schützen, kann jeder Hacker oder böswilliger Code 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 Ausnahmen
  • Wir müssen alle Standardwerte (Ordner, Cookies, Anmeldepfad, andere Markierungen) auf andere Werte ändern
  • Wir dürfen keine Plugins oder Themes verwenden, die mit den 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 Paare oder drei Alphabetsymbole. Einige für WordPress spezifische Angriffe und Angreifer gehen davon aus, dass das Tabellenpräfix wp_ . 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 Upload- Ordner um eine Ebene nach oben aus dem Ordner / wp-content / in das Stammverzeichnis Ihres WordPress-Installationsordners.
  2. Benennen Sie den Upload- Ordner in Medien um (oder ähnliches, was immer Sie möchten).
  3. Benennen Sie den Ordner " wp-content " in " Inhalt" (oder etwas ähnliches, wie Sie möchten).
  4. Benennen Sie den Plug-in- Ordner in mod (oder so ähnlich, wie Sie möchten).
  5. Fügen Sie am Anfang der Datei wp-config.php die folgenden Zeilen hinzu. Vergessen Sie nicht, Medien , Inhalt und Mod auf die von Ihnen zuvor ausgewählten Werte zu ändern.
     define ('AUTOMATIC_UPDATER_DISABLED', true); // Ja, es ist sicher, es manuell zu machen 
    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 machen
    define ('FS_METHOD', 'direkt'); // natürlich kein FTP
    define ('WP_HTTP_BLOCK_EXTERNAL', true);
    define ('UPLOADS', ' media '); // Wir haben die Uploads umbenannt und auf eine höhere Ebene verschoben
    define ('WP_CONTENT_DIR', '/ pfad / nach / wordpress / dir / content '); // kein Hostname, kein abschließender Schrägstrich
    define ('WP_CONTENT_URL', 'http://example.com/ content ');
    define ('WP_PLUGIN_DIR', '/ Pfad / nach / 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 der Anzeige von PHP-Fehlern im Frontend

Schritt drei. Ändern Sie den Namen der Standard-Cookies.

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

 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', 'mein_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 . Trotz dieser Schutzmaßnahmen versuchen Hacker Brute-Force-Angriffe (Anmeldeversuche) durchzuführen, um die Tür auf Ihrer WordPress-Website zu knacken. Verstecken 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 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 es 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 Direktive in den Medienordner (den neuen Upload-Ordner). Dies verhindert, dass die Website hochgeladenen schädlichen PHP-Code ausführt.
     php_flag motor ausgeschaltet 

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

  2. Ändern Sie für das gesamte Website-Verzeichnis (/ path / to / wordpress / dir) den Besitzer 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 ) benötigen wir spezielle Berechtigungen. Lass uns das machen, indem wir in der Shell exec-Befehle verwenden
     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 schreibgeschützt zu machen.
     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: Härten von WordPress mit WP Cerber und NGINX

Schritt sieben. Härten der Website mit Fail2Ban

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

Last posts from WordPress security blog


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.