So schütze ich meine WordPress-Seite
29% aller Websites im Internet werden mit WordPress betrieben. Es zeichnet sich durch seine benutzerfreundliche Oberfläche und einer breiten Community von Anwendern und Entwicklern aus, die das System stätig weiter entwickeln und verbessern. Durch seine große Beliebtheit gibt es auch eine dunkle Seite. Die der Hacker, die mit Brute-Force-Attacken versuchen Schwachstellen im System auszunutzen. Diese Schwachstellen gilt es von vornherein zu schließen. Dieser Leitfaden soll Ihnen dabei helfen eine Sicherheitsstrategie für Ihre Websiete zu entwickeln. Dieser Leitfaden hat allerdings nicht den Anspruch auf Vollständigkeit und übernimmt keine Garantie, dass Ihr Wordpress-System durch die folgenden Massnahmen gesichert ist.
Benutzername
Als Standard Benutzername wird häufig der Benutzername Admin vergeben. Verzichten Sie ebenfalls auf Benutzername wie `Administrator´,` Redaktion´ oder Ihre E-Mailadresse. Die schlechte Nachricht: Der Benutzername kann mit einer Abfrage trotzdem herausgefunden werden, wir sollten es den Hackern aber auch nicht zu einfach machen. Arbeitet man in einem Team, sollte man die Anzahl, die mit Admistrationsrechte (Zugang auf alles) ausgestattet sind, auf das wesentliche reduzieren.
Passwort
Einfache, kurze und unsichere Passwörter sind ein hohes Sicherheitsrisiko. Die Minimalvoraussetzungen für ein sicheres Passwort sind:
1.) Ein Passwort sollte aus mindestens acht bis zwölf Zeichen bestehen. 2.) Die gewählte Zeichenkette darf in keinem Wörterbuch vorkommen oder Bestandteil eines Begriffs sein. 3.) Verwenden Sie möglichst Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen (! ” ? $ % ^ & ).
Am besten verwenden Sie das Passwort, was von WordPress automatisch generiert wird. Fällt Ihnen kein sicheres Passwort ein, können Sie sich auf der folgenden Seite ein sicheres Passwort erstellen lassen. passwort-generator.com
Im folgenden möchte ich Ihnen anhand eines Rechenbeispieles zeigen, das man alleine durch ein sicheres Passwort, den Login-Bereich vor Brute-Force-Attacken sichern kann. Wir nehmen an das eine Attacke von 10 Angriffen pro Sekunde gefahren wird, die meisten Webspaces steigen bei der Menge an Zugriffe wegen Überlastung aus. Bei dem Beispiel handelt es sich um ein Passwort mit acht Zeichen , Groß- und Kleinschreibung und Ziffern.
62^8 = 2.183.40.105.584.896 Kombinationsmöglichkeiten 218.340.105.584.896 / 10 = 21.834.010.558.490 (10 Angriffe pro Sekunde) 21.834.010.558.490 / 60 = 363.900.175.975 (60 Sekunden pro Minute) 363.900.175.975 / 60 = 6.065.002.933 (60 Minuten pro Stunde) 6.065.002.933 / 24 = 252.708.456 (24 Stunden pro Tag) 252.708.456 / 365 = 692.352 (365 Tage pro Jahr)
Quelle: binary-butterfly.de
Das Ergebnis: der Angreifer bräuchte 692.352 Jahre, um sämtliche Kombinationen durchzuprobieren – und das bei einer Menge Anfragen, die den Server überlastet, und bei einem sehr einfachen Passwort.
System aktualisieren
Für die WordPress Installation, Themes oder Plugins, stehen immer wieder neue Updates zur Verfügung. Diese sollten in der Regal gleich installiert werden, da womöglich Sicherheitslücken entdeckt wurden, die mit dem Update gefixt wurden. Neben dem Login-Bereich stellen Themes und Plugins eine noch höhere Gefahrenquelle dar.
Tabellenpräfix
Eine Umbenennung des Tabellenpräfix bringt in der Regel nicht viel für die Sicherheit. Dennoch empfiehlt es sich den Wert zu ändern. Für falls das es eine SQL-Injektion mit wp_ gibt, lässt, lässt sie sich leichte von den anderen SQL-Tabelle unterscheiden.
Sicherheisschlüssel
Wenn Sie sich mit Ihren Rechner anmelden, werden diese Login-Daten als Cookies abgespeichert. Damit diese Daten nicht ausgelesen werden können, muss man diese verschlüsseln. Dazu öffnen Sie in der WordPress-Installation die Datei wp-config.php
darin suchen Sie folgen Eintrag:
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');
Als nächstes brauchen Sie einen individuellen Sicherheisschlüssel den Sie sich auf folgender Seite erstellen können. https://api.wordpress.org/secret-key/1.1/salt Kopieren Sie den Code und überschreiben Sie die Zeilen in der wp-config.php
. In der regel wird der Code bereits bei der Installierung automatisch generiert.
SFTP
Damit Sie ausschließen können das Malware auf Ihren Server kommt, melden Sie sich mit ihren FTP-Programm (z.B. Filezilla) immer mit SFTP an.
SSL-Zertifikat
Ab dem Moment wo man auf seiner Seite ein Formular verwendet oder man einen Shop betriebt sollte ein SSL-Zertifikat erworben werden. In der Regel wird das SSL-Zertifikat bei den gängigen Hostern im Standard-Packet angeboten.
Dateien löschen
Nach der Installation von WordPress sind Dateien übrig, die keinen weiteren Nutzen für den User oder Webseitenbetreiber haben. Aber gefahren bergen zuviele Informationen zu verraten. So befinden sich zum Beispiel in der liesmich.html
die WordPress-Versionsnummer oder die wp-config-sample.php
, in der manche ihre richtigen Verbindungsdaten einträgt und dann liegen lassen. Da es etwas nervig seinen kann, nach jedem Update diese Dateien zu entfernen, lässt sich das Problem auch eleganter lösen. Man trägt folgende Befehle in die .htaccess
ein:
Options All -Indexes
<files readme.html>
Order allow,deny
Deny from all
</files>
<files .htaccess>
order allow,deny
deny from all
</files>
<files *.sql>
order allow,deny
deny from all
</files>
<files liesmich.html>
Order allow,deny
Deny from all
</files>
<files *.txt>
Order allow,deny
Deny from all
</files>
<files license.txt>
Order allow,deny
Deny from all
</files>
<files install.php>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>
<files wp-config-sample.php>
Order allow,deny
Deny from all
</files>
<files robots.txt>
Order allow,deny
Allow from all
</files>
iThemes Security
Google Authenticator
Easy Updates Manager
WP Limit Login Attempts
Authentifizierung
Schützen Sie den Log-in-Bereich doppelt, mittels eines vorgeschalteten Benutzer und Passwortes Abfrage. Erstellen Sie hierzu eine neue Textdatei .htpasswd.txt
. In die Datei schreiben Sie den Benutzernamen und das Passwort in folgender Schreibweise name:passwort
. Auf der Seite htaccesstools.com kann das Passwort zusätzlich verschlüsselt werden. Laden Sie anschliessend die Textdatei auf Ihren Webserver in dem sich Ihre WordPress-Installation befindet und benennen die Datei in .htpasswd
um.
Nun ergänzen Sie die .htaccess
Datei, die ebenfalls in der WordPress-Installation auf Ihren Webservers befindet, mit einigen wenigen Zeilen Code.
<Files wp-login.php>
AuthName "Admin-Bereich"
AuthType Basic
AuthUserFile /pfad/zu/.htpasswd
require valid-user
</Files>
Achten Sie im obrigen Code darauf, dass der korrekte Pfad zur .htpasswd angegeben wird. Um diesen zu ermitteln, erstellen Sie erneut eine Textdatei info.txt
und füllen diese mit diesen Code. Erstellen die Dafür eine PHP Datei fullpath.php
und füllen diesen Code ein. Diese Datei laden Sie auf Ihren Server hoch und rufen sie auf. Nicht vergessen die Datei nach dem gebrauch wieder zu löschen.
<?php
$dir = dirname(__FILE__);
echo "<p>Full path to this dir: " . $dir . "</p>";
echo "<p>Full path to a .htpasswd file in this dir: " . $dir . "/.htpasswd" . "</p>";
?>
Dateienbearbeitung
Mit folgenden Eintrag in die wp-config.php
kann man mit dem ersten Befehl global das editieren von Dateien untersagen und mit dem zweiten Eintrag das Updaten unterbinden.
define('DISALLOW_FILE_EDIT',true); //edits define('DISALLOW_FILE_MODS',true); //updates
Login Fehlermeldung
Möchten Sie die Anzeige der Log-in Fehlermeldung individuell anpassen, müssen sie nur folgende Zeile in die fuctions.php
schreiben.
add_filter('login_errors',create_function('$a', "return 'Der Computer sagt nein';" ));