WordPress absichern


So sichere ich meine WordPress Website ab

Bild WordPress absichern - So geht esHier meine Empfehlungen, wie man eine brandneue nackte WordPress Installation vom Start weg absichern kann. Bei bestehenden Installationen unterscheidet sich die Vorgehensweise ein wenig, dies ist aber im Text gesondert angemerkt!

 

 

 

 

Da dieses Dokument nun etwas umfangreicher geworden ist, hier die Übersicht:

  1. Voraussetzungen
  2. Computer absichern
  3. Passwörter
  4. Themes und Plugins
  5. Salt Keys ändern
  6. Benutzer Admin & User ID 1 ändern
  7. Tabellen-Präfix ändern
  8. Verzeichnis wp-content umbenennen

Was brauche ich alles?

Voraussetzung für diese Anpassungen sind: FTP Zugang und einen "guten" FTP Client, wie etwa WinSCP (bitte nicht FileZilla verwenden, da die FTP-Passwörter derzeit (Version 3.7.3) noch unverschlüsselt gespeichert werden!), Zugang zu der MySQL Datenbank per phpMyAdmin oder einer ähnlichen Datenbank-Verwaltung, und ein grundlegendes Wissen über Datei-Berechtigungen und wie man diese per FTP ändert. Computer- bzw. WordPress-Laien lege ich nahe, diese Sachen eher einem Profi zu überlassen, da man sich selber und andere schnell ungewollt den Zugang versperren kann.

Erst den lokalen Computer absichern!

Es gilt auch zu beachten, dass der Computer, von welchem aus man seine WordPress Websites verwaltet - egal ob nur über das Dashboard und/oder per FTP - selbst auch abgesichert gehört, denn die sicherste WordPress Installation nützt nichts, wenn ein Hacker die Zugangsdaten per Keylogger/Trojaner/o.ä. ausspioniert hat und ganz frech und unauffällig den Vordereingang benutzt.

Einige FTP-Client Programme - wie schon angesprochen auch der beliebte FileZilla - speichern die FTP-Zugangsdaten inklusive dem Passwort auch heute noch unverschlüsselt ab, ein gefundenes Fressen für Menschen mit krimineller Energie. Diese Dateien sind dann auch immer am selben Ort abgelegt, so ist es für einen Trojaner nicht einmal mehr ein Kinderspiel, diese zu finden und an seinen Master zu senden. FileZilla beispielsweise speichert diese Daten im Ordner C:\Users\<benutzername>\AppData\Roaming\FileZilla\ ab, und in der Datei sitemanager.xml findet man nun wirklich alles, was man für den FTP-Zugriff benötigt.

Deshalb bitte auch die verwaltenden Computer softwaretechnisch immer auf dem aktuellsten Stand halten, und damit ist nicht nur das Betriebssystem gemeint (am besten mit automatischen Updates), sondern auch Zusatzprogramme wie Adobe Flash Player, Adobe Acrobat Reader, Java, Winzip/Winrar und natürlich ein aktuelles und funktionierenes Antivirenprogramm.

Apropos Antivirenprogramm: Microsoft Security Essentials zähle ich persönlich übrigens nicht dazu, dies bitte gleich deinstallieren! Alles andere ist besser, ob nun Norton, Kaspersky, McAfee, G Data, AVG, Panda oder Avira ist dann eher eine Entscheidung des persönlichen Geschmacks und der hardwaretechnischen Ausstattung, meine Empfehlung ist derzeit  aber Free Antivirus von avast!

Doch nun wieder zurück zu WordPress:

Überall sichere Passwörter verwenden!

Und noch ein paar Wörter zum Passwort: ein komplexes Passwort ist das Um und Auf beim Thema Sicherheit, meine Empfehlung dazu lautet:

  • mindestens 10 Zeichen
  • Groß- und Kleinschreibung mischen
  • Zahlen und
  • Sonderzeichen verwenden

Ein gutes Beispiel dafür wäre dann: h4T*uR-6#Q, und natürlich sollte man ein Passwort nie mehrmals verwenden, versteht sich von selbst! Ja, und wer soll sich das alles noch merken können? Entweder man erstellt sich ein eigenes Passwort-Schema im Kopf, oder man verwendet ein Passwort-Tresor wie z.B. KeePass oder das online Pendant LastPass Passwort Manager (Achtung Cloud!).

Themes und Plugins

Beim Einsatz von Themes und Plugins von Drittanbietern sollte man auf achten, dass diese nur aus sicheren Quellen stammen! Da Themes/Plugins auch schadhaften Code beinhalten können, der trotz Sicherheitsplugins nicht ersichtlich sein kann, ist dies besonders wichtig. Seriöse Quellen wären z.B. das Themes bzw. Plugin Reposatory auf wordpress.org (dort aber trotzdem beachten, wie viele Bewertungen es gibt, und ev. die Kommentare lesen), aber auch kommerzielle Plattformen wie themeforest, elmastudio oder elegant themes sind sehr vertrauenswürdig und bieten hochwertige Premium Themes und teilweise auch Plugins an. Auf "Nulled-Versions", also illegal freigeschaltete oder raubkopierte Themes/Plugins von irgendwelchen ominösen Blackhat-Websites sollte man jedoch tunlichst verzichten, oft ist an diesem Code mehr manipuliert worden, als einem lieb ist.

Und je weniger Plugins und Themes man installiert hat, desto weniger Möglichkeiten gibt es für Angreifer in das System zu kommen. Ganz wichtig: auch wenn Plugins/Themes nicht aktiv sind, können sie trotzdem eine Sicherheitslücke darstellen, daher bitte alle ungenutzte Plugins und Themes (außer das Standard WordPress Theme, derzeit das Twenty Thirteen) vom System löschen! Die übrigen sollten - genau so wie der WordPress Core - ständig auf den neusten Stand gehalten werden, also bitte mindestens einmal in der Woche am System anmelden und auf anstehende Updates prüfen und diese auch ausführen!

 

Wichtig: vor allen Änderungen IMMER ein Backup der Datenbank und eventuell auch von der Datei wp_config.php machen!

Salt Keys in wp-config.php

Als allererstes sollten die "Salt Keys" in der Datei wp-config.php geändert werden! Unter https://api.wordpress.org/secret-key/1.1/salt/ kann man sich neue Zufallszahlen generieren lassen (bitte mind. einmal F5 bzw STRG/Apfel-R drücken, damit neue Keys erstellt werden!), diese ersetzen dann den Eintrag:

define('AUTH_KEY',         'v]UZ^5p!-^JnhM%+3g$9RH6TOb}g+:i>-NJ+u.xY1xU_1^CFJW8M=iTE|2favLTB');
define('SECURE_AUTH_KEY',  'AE&q5T?J`D-mDmt@8*z*G;HY8.ZL)d_e,hBF@.Ue =WCRC#XC(CQ67&i8&h~0Nrg');
define('LOGGED_IN_KEY',    'pr`$jXHDU>tz2s4d3,Bg8N<IR]#At/NK;|J}8Ex`a42+:_qNd;[{i~M.x3n2siqz');
define('NONCE_KEY',        ']k|<<AM/(rao.+Y,q*1xk%$[LIJ1icp9,tnhGJ> ;:g]b!HE*fBL$LIzS~+Z8J+T');
define('AUTH_SALT',        'C<_Mea4{Wn4?FB$:;XE)V8{4zTxt|#-theu^B-q^(.w9[0#Yq]|yL;7$)#HI_{$z');
define('SECURE_AUTH_SALT', 'HN+j+eV&2|v_BgEo3 ^g/[FKeopxaJs$L+wx53:e>RH-3Wy-AfTh[1kYtx~mlsS,');
define('LOGGED_IN_SALT',   'J=6~s]gF{b>j+_9(=0C~tXDVpDdk5vae+M,mdc.vIFWlx~h=c[o9|7OTZ_7xETG[');
define('NONCE_SALT',       '`;`3 E1V9/eA+&rFC-X;$`gSz_{(/+a4.1m`)TcybT%x6kO{^62{i-Ys1^sQf1d`');

in der Datei wp-config.php im Stammverzeichnis der WordPress Installation. Einfach per Copy & Paste den vorhandenen Block überschreiben und die Datei speichern.

Benutzer admin & User-ID = 1 ändern

Viele Webhoster bieten ein Quick-Install von WordPress an. Dort wird meist der Standardbenutzer admin angelegt, was eine Sicherheitslücke darstellt: Da WordPress von Haus aus keinen Schutz gegen Brute-Force-Attacken bietet (das Austesten von Benutzernamen und Passwörtern per Wörterbuch-Datei), kann ein Hacker beliebig oft Benutzernamen/Passwort-Kombinationen austesten, ohne gesperrt zu werden. Daher sollte man gleich nach der Installation einen neuen Benutzer anlegen und diesem Administrationsrechte geben. Danach vom Dashboard abmelden, mit den neuen Benutzerdaten anmelden und gleich den User admin löschen. Somit wäre auch gleichzeitig der User mit der ID=1 gelöscht, was auch eine Sicherheitslücke dargestellt hätte.

Natürlich gibt es dafür auch andere Vorgehensweisen, z.B. kann man dies u.a. auch komfortabel mit dem Plugin "Admin renamer extended" (funktioniert auch für Multisite Installationen) oder "Better WP Security" machen, oder direkt in der Datenbank, indem man in der Tabelle <dbprefix>_users einfach die Zeile mit user_login=admin editiert. Dort einfach alle vorkommen von "admin" durch den neuen Benutzernamen abändern und unter ID eine andere Nummer eintragen.

Noch eine Empfehlung: Im Dashboard mindestens zwei Benutzer anlegen, einen mit Administrator-Rechten für die technische Verwaltung der Website, und einen Redakteur, der nur zur Erfassung der Artikel und Seiten dient. Dies hat den Vorteil, dass der Administrator öffentlich nirgends aufscheint, und somit der Benutzername nicht ersichtlich ist. Und beim Redakteur sollte unter den Benutzereinstellungen auch Vorname, Nachname und Spitzname ausgefüllt und unter öffentlicher Name ein anderer, als der Anmeldename ausgewählt werden.

Tabellen-Präfix wp_ ändern

Üblicherweise wird bei WordPress der Tabellen-Präfix wp_ verwendet, was auch automatisierte Hacks vereinfacht. Daher sollte man diesen auch sofort abändern. Dies geht am einfachsten mit dem Plugin Change DB Prefix oder auch Better WP Security, kann aber auch händisch gemacht werden: Dazu einfach in der wp_config.php die Zeile mit $table_prefix = ‘wp_’; suchen und "wp_" einfach durch eine gewünschte Zeichenkette wie zB "yhjakjhweu_" ersetzen. Dann muss man noch z.B. per phpMyAdmin alle Tabellen ebenfalls umbenennen, also entweder per Hand, oder besser/schneller gleich per SQL Befehl, wie etwas:

Rename table wp_commentmeta to yhjakjhweu_commentmeta;

Diese Zeile muss für alle vorhandenen Tabellen beginnend mit wp_ angepasst und ausgeführt werden. Danach gibt es noch einige Einträge in den Tabellen yhjakjhweu_options und yhjakjhweu_usermeta, wo wp_ vorhanden ist. Am besten benutzt man nun die Such-Funktion und ersetzt dann manuell alle Vorkomnisse mit dem neuen Präfix.

Anmerkung: Wenn man das Tabellen-Prefix per Plugin ändert, muss darauf geachten werden, dass die Datei wp-config.php auch beschreibbar ist (Berechtigung 644 sollte ausreichen; falls nicht, dann kurzzeitig auf 666 umstellen). Better WP Security und Change DB Prefix zum Beispiel ändern alle Präfixe in der Datenbank und versuchen danach erst, die Datei wp-config.php zu editieren. Schlägt dies fehl, ist die Website nicht mehr erreichbar! Dann muss man den neuen Präfix (falls nicht bekannt, kann man das einfach per phpMyAdmin herausfinden) per Hand in der wp-config.php abändern.

Verzeichniss wp-content umbenennen

Viele automatisierte Attacken suchen auch nach dem Verzeichnis wp-content bzw. den darunter liegenden Ordnern uploads, plugins oder themes. Dies kann man leicht unterbinden, in dem man den Ordner wp-content einfach umbenennt. Bei schon bestehenden WordPress Installationen mit Plugins und vielen Artikeln und vor allem Bildern bzw. Uploads ist der Aufwand höher, da man nach Umbenennung des Verzeichnisses auch in der Datenbank alle Verweise darauf abändern muss. Hierzu verwendet man dann wieder den phpMyAdmin und die Such-Funktion. Bei neuen Installationen ohne Artikel/Seiten und Uploads ist das einfacher. Auch hier bietet sich das Plugin "Better WP Security" an, manuell ist es aber auch keine Zauberei: einfach das Verzeichnis 'wp-content' per ftp auf z.B. 'main' umbenennen und danach in der wp-config-php folgende Zeilen ändern bzw. hinzufügen:

define('WP_CONTENT_DIR', '/absoluter-pfad-zur-wordpress-installation/main');
define('WP_CONTENT_URL', 'http://www.domain.tld/main');

Aber wie lautet der absolute Pfad zu meinem WordPress? Dies kann man recht einfach herausfinden: Erstelle eine Datei mit dem Namen pfad.php mit folgenden Inhalt:

<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

Diese Datei speichern wir im Hauptverzeichnis der Website ab und rufen sie dann im Browser mit http://www.meinedomain.tld/pfad.php auf und bekommen dann den absoluten Pfad ausgegeben.

Zu beachten gibt es, dass es doch einige Plugins gibt, die im Code hardcoded das Verzeichnis wp-content erwarten. Daher empfehle ich das Umbenennen des Verzeichnisses eigentlich nur bei Neuinstallationen, und dass nach Aktivierung von neuen Themes/Plugins diese ausgiebig getestet werden. Falls sich ein neues Theme/Plugin seltsam verhält, sollte man mit einem fähigen Texteditor wie z.B. Notepad++ alle PHP-Dateien nach der Zeichenfolge wp-content durchsuchen. Wenn diese gefunden wird, einfach durch den neuen Ordnernamen ersetzen, per ftp hochladen UND den Entwickler vom Plugin/Theme sofort informieren, damit er diese unsaubere Programmierung hoffentlich beim nächsten Update behoben hat (ansonsten wird die Änderung natürlich wieder überschrieben)!

 

demnächst geht's dann hier weiter unter anderem mit

 

Datei wp_config.php schützen

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert