Es kann jedem passieren und wenn es passiert kann es mehr als mühsam werden. Wenn WordPress gehackt wird sind unter Umständen alle Daten verloren und man ist nicht mehr Herr seiner eigenen Seite. Damit dies erst gar nicht passiert gibt es einige Möglichkeiten sich zu schützen.

WordPress immer aktuell halten

Natürlich ist WordPress dann am sichersten wenn die aktuelle Version benutzt wird. Hier gibt es 3 Punkte zu beachten:

  • WordPress Core (Grundinstallation)
  • Themes
  • Plugins

Es gibt viele Möglichkeiten WordPress zu aktualisieren. Am einfachsten funktioniert es über das Dashboard und über den Reiter Plugins.

Back Up

Sollte die WordPress Installation jemals das Ziel eines Hacker Angriffs geworden sein so ist es wichtig nach der mehr oder weniger erfolgreichen Abwehr die alte Installation wieder herstellen zu können. Es gibt die Möglichkeit das Back Up klassisch über den FTP Server zu machen und dort alle Dateien zu sichern und zusätzlich natürlich auch über phpMyAdmin die Datenbank zu sichern oder man benutzt eines der vielen Back Up Plugins.

Meine persönliche Empfehlung ist Updraft Plus. Dieses Plugin verfügt über eine Vielzahl an Funktion. Es ist Möglich automatisierte Back Ups zu erstellen, man kann sich entscheiden ob nur die Dateien oder auch die Datenbank mitgesichert werden soll und auch wohin das Back Up gespielt werden soll. Updraft Plus bietet mehrer Cloud Dienste wie zum Beispiel Dropbox, als Speicherplatz an.

WordPress Version ausblenden

Je mehr ein Angreifer über das Ziel weiß, desto einfach hat er es. In der header.php von WordPress wird dieVersionsnummer ausgeliefert. Wenn man auf der Startseite mit der rechten Maustaste auf “Seitenquelltext anzeigen” geht findet man folgende Zeile:

<meta name=”generator” content=”WordPress 4.1.1″ />

Hieraus kann ein Angreifer die Versionsnummer ablesen und darauf hin, dann ganz gezielt nach einem Exploit für diese Versionsnummer suchen. Daher macht es Sinn diese Zeile zu verstecken. Dies ist allerdings nicht wie anzunehmen in der header.php möglich da dort mittels “wp_head(); ” die Versionsnummer automatisch vom WordPress Core generiert wird. Um die Versionsnummer zu verstecken muss man in die functions.php gehen und folgenden code eintragen:

————————————————————————————–

function wp_remove_version() {

return  ‘ ‘ ;

}

add_filter (‘the_generator’, ’wp_remove_version’) ;

—————————————————————————————

 Tabellenpräfix ändern

Je mehr man die Standardeinstellungen von WordPress verändert desto schwieriger macht man es Angreifern, dies gilt auch für die Tabellennamen. Es macht daher Sinn den Tabellenpräfix welcher in der Regel bei WordPress “wp_” ist, zu ändern. Am schnellsten funktioniert das über phpMyAdmin.

Man benötigt natürlich die Zugangsdaten, welche aber vom Provider zur Verfügung gestellt werden müssen. Kleiner Tipp, wer sich über das Kontrollpanel seines Providers in phpMyAdmin einloggt muss in der Regel die Benutzerdaten nicht wissen.

 

Einfach ein Häkchen bei “Alle Auswählen” setzen und im Dropdown Menü “Tabellenpräfix ersetzen” auswählen und danach ändern. Das Ganze muss natürlich auch dem guten alten WordPress mitgeteilt werden. Dazu muss die config.php aufgerufen werden, entweder direkt unter WordPress oder per ftp und einem Texteditor. Dort muss der Tabellen Präfix geändert werden. Dieser kann beliebig gewählt werden muss jedoch mit dem zuvor geänderten übereinstimmen.

 

Im letzten Schritt müssen noch 2 SQL Befehle abgesetzt werden um in der Tabelle “Options” und “Usermeta” den alten Präfix mit dem Neuen zu ersetzen.

 

Im Screenshot sind die zwei SQL Befehle ersichtlich womit das alte Präfix “wp_” mit dem neuen Präfix “tpr_” ersetzt wird. Sinn der Sache ist es, dass Anfreifer es Besipielsweise mit einer SQL Injection weit aus schwieriger haben wenn das Tabellen Präfix nicht bekannt ist.

Im zweiten Teil werde ich erklären wie man einen Sicherheitsschlüssel in die config.php einbaut, die Dateibearbeitung im Dashboard ausschaltet und eine SSL Verschlüsselung für den Admin Bereich Festlegt.

Sollte Ihr Fragen habt könnt ihr gerne ein Kommentar dalassen.

Im ersten Teil habe ich schon einige nützliche Tipps gegeben wie man WordPress mit kleinen Änderungen vor Hackern schützen kann. Sehen wir uns im zweiten Teil noch ein paar mehr hilfreiche Tricks an.

Dateibearbeitung im Dashboard ausschalten

Es kommt immer mal wieder vor, dass man am Theme oder den Plugins etwas ändern muss mittels PHP oder CSS. In WordPress bietet der Editor im Backend (unter DESIGN –> EDITOR) eine komfortable Lösung dafür an. Dies ist jedoch gleichzeitig eine Sicherheitslücke, denn auch Angreifern ist es dadurch Möglich so mittels PHP Anweisungen Änderungen vorzunehmen.

Um diese zwar komfortable aber unsichere Möglichkeit abzuschalten ist es nötig in der config.php folgenden Eintrag zu setzen:

define ( ‘DISALLOW_FILE_EDIT’, true );

Für den Administrator der Seite ist es jetzt natürlich auch mühsamer Änderungen durchzuführen aber es ist immer ein Balanceakt zwischen Bequemlichkeit und Sicherheit.

“admin”- Nutzer deaktivieren

Der Nutzername “admin” wird von WordPress als Standard gewählt und ist somit leicht zu erraten, was es potentiellen Angreifern leichter macht, da sie nur mehr das Passwort herausfinden müssen. Es sollte daher immer der Benutzername geändert werden. Ist der Benutzername erst einmal “admin” so kann er im Backend nicht mehr geändert werden. Hierfür gibt es einen kleinen Trick.

In der phpMyAdmin Oberfläche gibt es die Möglichkeit in der WordPress Datenbank, die Tabelle wp_users (oder falls Sie bereits den Tabellenpräfix geändert haben wie in Teil 1 empfohlen dann eben *_users) den User zu bearbeiten. Hier muss der “user_login” und der “user_nicename” geändert werden und danach mit OK bestätigt werden. Nach der Änderung muss man sich natürlich neu im backend einloggen 😉

Sicherheitsschlüssel in Config-Datei einfügen

In der config.php gibt es die Möglichkeit den Sicherheitsschlüssel zu ändern. Entweder man lässt sich die Keys generieren wie im Kommentar in der config.php Datei beschrieben oder man Tippt wild drauf los. Dadurch wird es Angreifern weit aus schwieriger gemacht sich als Besitzer der Seite auszugeben.

**#@+
* Sicherheitsschlüssel
*
* Ändere jeden KEY in eine beliebige, möglichst einzigartige Phrase.
* Auf der Seite {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* kannst du dir alle KEYS generieren lassen.
* Bitte trage für jeden KEY eine eigene Phrase ein. Du kannst die Schlüssel jederzeit wieder ändern,
* alle angemeldeten Benutzer müssen sich danach erneut anmelden.
*
* @seit 2.6.0
*/
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’);

/**#@-*/

Config-Datei absichern

Die config.php Datei ist sozusagen das Herzstück von WordPress und gehört daher besonders abgesichert. Die Datei kann im Frontend über den Browser einfach aufgerufen werden “domain/wp-config.php” und sollte im Idealfall nichts ausgeben, denn innerhalb dieser Datei werden ja nur Variablen und Konstanten definiert. Sollte der Server jedoch in irgendeiner Form kompromittiert sein dann kann es sein, dass er fälschlicherweise den Quelltext anzeigt, was fatal wäre.

Der einfachste Weg sich davor zu schützen ist über die Datei “.htaccess”. Es kann sein, dass diese Datei noch nicht existiert, dann einfach eine .htaccess Datei mit folgendem Text anlegen:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Als zweiten Schritt dann diesen Code einfügen:

<Files wp-config.php>
Order allow, deny
Deny from all
Satisfy ALL
</Files>

Nun ist diese Datei von außen nicht mehr zugänglich.

 

SSL-Verschlüsselung für den Adminbereich festlegen

Https ist dafür gut, dass dritte den Netzwerkverkehr nicht abhören können, was natürlich besonders bei Passwörter wichtig ist.  Man kann selbst festlegen, dass ein Nutzer automatisch auf eine SSl Seite weitergeleitet wird um sich einzuloggen. Einmal mehr funktioniert das mit Hilfer der config Datei.

Einfach in der congif.php Datei folgendes eintragen:

define ( ‘FORCE_SSL_ADMIN’, true );

Sobald die Datei gespeichert wurde ist ein normales anmelden ohne https nicht mehr möglich.

Im dritten Teil widmen wir uns dann den Sicherheitsvorkehrungen auf dem Webserver. Wie immer, bei Fragen einfach ein Kommentar hinterlassen…

Daniel Knoflicek ist seit 2012 Geschäftsführer von Slidebird Webstories, einer Agentur für online Marketing, Webdesign und Webentwicklung. Des Weiteren hat Daniel Knoflicek das Start Up Ernst M. gegründet, welches vegane, bio Marmelade in Österreich herstellet und vertreibt. Er ist als CTO für das Start Up tätig. Seit 2015 und der Gründung von DESK.WORKS ist Daniel Knoflicek als Brand Ambassador für Österreich zuständig.