Ich bin der Meinung, dass man die Sicherheit von WordPress auch ohne Plugins erhöhen kann. Oder andersherum: Hackern und automatisierten Angriffen das Leben schwerer machen. Wie das geht, werde ich hier beschreiben.
Eins vorweg: Wenn man keine sicheren Passwörter verwendet, nützt einem auch die beste Absicherung nichts. Und das gilt nicht nur für deinen WordPress Zugang, sonder für alle Zugangsmöglichkeiten zu Webspace (FTP, SSH, MySQL, …). Außerdem bietet heute nahezu jeder Hoster die Möglichkeit Daten verschlüsselt zu übertragen. Insbesondere bei E-Mail oder FTP.
Die Installation:
Ich habe WordPress in einem unter Ordner installiert. Ich bin der Meinung, wenn man diese Art der Installation wählt, hat ein automatisierter Angriff es zumindest etwas schwerer den WordPress Ordner zu finden. Außerdem finde ich es etwas aufgeräumter, da ich in dem Root Ordner noch weitere Dienste installiert habe, damit ich sie alle mit einem https Zertifikat nutzen kann. Dazu kommt noch, dass ich den „wp-content“ Ordner umbenannt habe.
Um den „wp-content“ Ordner umzuebnen, bedarf es zwei Einträge in der „wp-config.php“.
define( 'WP_CONTENT_DIR', realpath( dirname(__FILE__) . '/../content' ) );
define( 'WP_CONTENT_URL', 'https://danielhuesken.de/content' );
Dies sollten heute alle Plugins unterstützen.
Zusätzliche Absicherungen:
.htaccess im Root (Haupt) Ordner.
<FilesMatch "(.htaccess|readme.html|liesmich.html|license.txt|license.md|readme.txt|readme.md|wp-config.php)">
Deny from all
</FilesMatch>
php_flag display_errors off
Der „FilesMatch“ Eintrag sorgt dafür, dass auf die Dateien in der Liste nicht direkt über eine URL zugegriffen werden kann. Hier sind auch die Readme Dateien enthalten, damit man darüber nicht erkennen kann, ob etwas vorhanden ist oder sogar die Version herausbekommt.
Die letzte Zeile sorgt dafür, dass PHP keine Fehlermeldungen ausgibt und man somit den Server Pfad nicht in Erfahrung bringen kann.
Im neuen „Content“ Ordner habe ich eine zusätzliche .htaccess liegen mit folgenden Einträgen.
<Files *.php>
order allow,deny
deny from all
</Files>
<Files debug.log>
Order allow,deny
Deny from all
</Files>
Das sorgt dafür, dass keine .php Dateien mehr direkt im „Content“ Ordner aufgerufen werden können. Allerdings muss hier getestet werden, ob auch alle Plugins und Themes damit funktionieren. Gute Plugins und Themes sollten aber kein Problem damit haben. Alle anderen Dateiformate können weiterhin direkt aufgerufen werden.
WordPress verschleiern:
Mit diesem Stück Code kann man noch einiges im HTML Kopf der Website verbergen oder dekatieren. Dieser kann in die funktions.php eures Child Themes geschrieben werden oder eben doch in ein Kleins Plugin. Hier bitte selber entscheiden, was ihr braucht oder nicht. Der wichtigste Punkt ist hier der „wp_generator“ da dieser auf jeder Seite im HTML folgendes im Kopf hinzufügt <meta name="generator" content="WordPress 4.1" />
.
// Head cleanup
function dh2015_head_cleanup() {
// category feeds
//remove_action( 'wp_head', 'feed_links_extra', 3 );
// post and comment feeds
//remove_action( 'wp_head', 'feed_links', 2 );
// EditURI link
remove_action( 'wp_head', 'rsd_link' );
// windows live writer
remove_action( 'wp_head', 'wlwmanifest_link' );
// index link
remove_action( 'wp_head', 'index_rel_link' );
// previous link
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
// start link
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
// links for adjacent posts
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
// WP version
remove_action( 'wp_head', 'wp_generator' );
}
add_action( 'init', 'dh2015_head_cleanup' );
Anmerkung:
Darüber hinaus sollten natürlich auch das nicht benutzen des Standard DB Präfixes und das Rechte setzen der Ordner Berechtigungen nicht fehlen. Es gibt einen Artikel auf WordPress.org über das abhärten von WordPress der auch durchgegangen werden sollte.
Schreibe einen Kommentar