
Aus aktuellem Anlass möchte ich heute mal über meine Vorgehensweise schreiben, wie ich eine neue WordPress-Instanz gegen Hacking und SPAM absichere.
Inhalte dieses Artikels
1. WordPress Sicherheitsschlüssel aktivieren
Die normale Vorgehensweise bei einer Standard-Installation von WordPress ist, dass man mit einem HTML-Editor wie z.B. Note++ in die wp-config-sample.php die Datenbank-Daten einsetzt (db name, db user, db password …). Es gibt jedoch bereits an dieser Stelle die Möglichkeit, ein Sicherheitsfeature zu nutzen.
Dabei handelt es sich um einen optionalen Sicherheitsschlüssel, der Out-Of-The-Box noch ohne Inhalt ist.
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');/pre>
Du findest den Sicherheitsschlüssel in Deiner wp-config-sample Datei, ab Zeile 73. Wenn Du die Zeilen gefunden hast, gehst Du zu https://api.wordpress.org/secret-key/1.1/salt/ und generierst dort einen eindeutigen Sicherheitsschlüssel. Dieser kann z.B. so aussehen
define('AUTH_KEY', '[/sG~WzJaxy[7<9lPF0-AYvs2N/9Ss!vJ4+96r|N-|w)/]S`ZkwGlhyi&YL%D^Bk');
define('SECURE_AUTH_KEY', '+6PuWd-P8mx2)!#:P)D#+r.fu >v~UQq7{[4#1FPmN;UQ+4-aly,.Ua-8*DFw{Xw');
define('LOGGED_IN_KEY', '~uB|SA+>aC}9c]dbfu@@6x;t_;nF=e|NNeVV0+(#j^ 6 Er|/Uy~g[_D5Aswbq#:');
define('NONCE_KEY', '386V$oSXe/B VP*@9 9N&g3bR mTLY nD#s|n4|K5djY<;b+2
define('LOGGED_IN_SALT', 'V!nQHGBG{sM]jk2$Nixq_-ZDOuxKT`+W+R>.>I&bNZWxre2Wl3;VKo+yoV0g!FK|');
define('NONCE_SALT', 'as_{&r-+A=-5#sy[YjC:3C3M,Yu$4UBX?L.G[-|j^[kSTvb+!o#[j#,{zJUJE ;');
Du kopierst den kompletten Schlüssel-Block (aber nicht den hier von der Seite, sondern den Du NEU auf der verlinkten Seite generiert hast!) und ersetzt damit den bereits in Deiner Datei vorhandenen leeren Schlüssel-Block. Fertig!
Klingt einfach, oder? Was bewirkt der zusätzliche Schlüssel? Vereinfacht ausgedrückt wird Deine Password-Eingabe unter /wp-login/ verschlüsselt. Ohne den oben beschriebenen Sicherheitsschlüssel werden Deine Daten unverschlüsselt an den Server gesendet. Es könnte also passieren, dass jemand Deine Login-Daten (User / Password) mitbekommt. Falls Deine Webseite bereits unter einem SSL-Protokoll läuft (https://), ist die zusätzliche Verschlüsselung nicht unbedingt notwendig. Deine Eingaben sind in dem Fall bereits verschlüsselt.
2. Intelligenten WordPress Usernamen wählen
Ich nehme nie “Admin” als Usernamen, sondern immer etwas anderes. “Admin” ist als Username bei WordPress voreingestellt und wird einem während des Installationsprozesses vorgeschlagen. Leider wissen das natürlich auch Hacker. Für die ist es natürlich leichter, wenn Sie bei Angriffen schon den Usernamen kennen und sie nur noch das Passwort variieren müssen.
Normalerweise kann der User “Admin” nach der Installation nicht mehr geändert werden. Über einen kleinen “Umweg” kann der Username aber doch noch verändert werden. Dazu einen weiteren Nutzer mit dem gewünschten neuen Adminnamen anlegen. Dann ausloggen und mit dem neuen User anmelden. Danach den alten “Admin” User löschen.
3. wp-login über .htaccess absichern
Hier gibt es zwei zu empfehlende Vorgehensweisen. Um unerwünschte Aufrufe der /wp-login/ zu verhindern, sollte man das Verzeichnis vor unerlaubten Zugriff sperren.
Zunächst muss der relative Pfad ermittelt werden, wo Euer Verzeichnis auf dem Webserver des Hosters liegt. Wer sich damit nicht auskennt, sollte einfach kurz beim Hoster nachfragen. Ist der relative Pfad bekannt, ist die htaccess-Datei im Root-Verzeichnis aufzurufen und um den Code zu ergänzen.
AuthUserFile /relativer pfad/in/dem/die Webseite auf dem Server liegt/wp-admin/.htpasswd
AuthName "Members Only"
AuthType Basic
<Files "wp-login.php">
require valid-user
</Files>
Danach wird eine neue Datei mit der Endung .htpasswd erzeugt und ins FTP-Verzeichnis /wp-admin/ kopiert. Die Datei enthält einen Schlüssel, der aus Usernamen und Passwort besteht. Hier kann man sich diesen Schlüssel generieren.
4. xmlrpc-Schnittstelle über .htaccess deaktivieren
Bei der zweiten Modifikation innerhalb der .htaccess geht es darum, die xmlrpc-Schnittstelle zu deaktivieren. Diese übernimmt z.B. die Benachrichtigung bei Trackbacks/Pingbacks. Eigentlich eine gute Sache, wird sie jedoch sehr häufig von Spammern im Rahmen von DDoS-Attacken missbraucht. Diese rufen die Schnittstelle tausendfach auf und versuchen damit, andere Webseiten anzupingen und deren Server so in die Knie zu zwingen. Gleichzeitig belastet das Anpingen aber auch den eigenen Webserver, was dazu führt, dass auch dieser durch die unsinnigen Anfragen in die Knie geht.
Die Schnittstelle wird mit diesem Code-Schnipsel abgeschaltet.
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Abgesehen davon, dass nun keine Blogs mehr benachrichtigt werden, wenn sie in einem Artikel verlinkt werden, gibt es keine Nachteile durch die Deaktivierung.
5. Plugin Simple Login Lockdown installieren
Falls trotz der Absicherung des Verzeichnisses /wp-login/ doch mal jemand bis dahin durchkommt, wird er an der Stelle nicht viel erreichen können, weil ich mithilfe des Plugins die Anzahl der Login-Versuche limitiere. Das Plugin ist wirklich sehr simpel und hat nur zwei Einstell-Optionen (Anzahl der Versuche / Zeit wie lange der Login gesperrt wird). Das Plugin gibt es hier.
6. Plugin Acunetix WP Security
Es gibt hier natürlich sehr viele verschiedene Plugins, mit deren Hilfe versucht wird, die WP-Installation abzusichern. Einige davon sind extrem mächtig, wie z.B. Better WP Security (heisst jetzt iThemes Security). Mir persönlich ist dieses Plugin aber zu mächtig. Ich bevorzuge das wesentlich schmalere von Acunetix.
Mittels einem Scan erhält man viele sicherheitsrelevante Baustellen aufgezeigt.
In dem Beispiel sind die meisten überprüften Eigenschaften in Ordnung. Um die Sicherheit weiter zu verbessern, könnte ich noch eine “index.php” Datei im Upload-Verzeichnis erstellen und eine .htaccess Datei in wp-admin einfügen.
Mit Hilfe der Settings kann ich hier noch einige Einstellungen vornehmen, die die Sicherheit erhöhen.
Das Plugin gibt es hier.
7. Plugin AntiVirus
Zuguterletzt installiere ich noch das Plugin AntiVirus. Falls es doch einmal Schadcode in Deine WordPress-Installation schafft, findet ihn der eingebaute Schadcode-Scanner hoffentlich und benachrichtigt Dich per Mail über den unerwünschten Code. Das Plugin ist auch recht einfach gehalten und funktioniert tadellos. Hier gibt es das Plugin.
Mehr unternehme ich persönlich nicht, um meine WordPress-Installationen abzusichern. Wenn Ihr noch weitere Anwendungsbeispiele wisst und noch Ergänzungen habt, freue ich mich auf Eure Kommentare!
Bitte sozial teilen
Wenn dir dieser Beitrag gefallen hat, dann teile ihn doch bitte in den verschiedenen sozialen Netzwerken! Du würdest mir damit sehr helfen!