WordPress für Unternehmen: Sicherheit

Wer WordPress für Unternehmen anpreist, muss im selben Atemzug auch für entsprechende Sicherheit garantieren, um Hackern und Spambots dieser Welt nicht Tür und Tor zu öffnen. Im schlimmsten Fall sind nämlich nicht nur wertvolle Arbeitsstunden und sensible Daten verloren, sondern auch das Ansehen der gesamte Firma in der Öffentlichkeit kompromittiert. Fälle, wie der Angriff auf Sonys PlayStationNetwork, der dem japanische Unternehmen beinahe ebenso viel Schaden an anrichete, wie die Erdbeben- und Tsunamikatastrophe im selben Jahr, machen klar: Sicherheitslücken kann sich heute niemand mehr leisten.

Im Folgenden haben wir Tipps und Techniken gesammelt, die sich für uns in der Praxis bewährt haben.

Zugangsdaten

Zunächst sollte direkt beim Einrichten das Standard-Prefix der Tabellen mit jedem Projekt angepasst werden.

Auf keinen Fall sollte der Standardname “admin” für den Administrator verwendet werden. Dies wird der erste Name sein, den ein potentieller Angreifer verwenden wird. Alles was vom Standard abweicht ist besser als “admin”.

Dass ein starkes Passwort beim Anlegen aller Nutzeraccounts gewählt werden sollte, versteht sich von selbst, möchte man meinen, ist aber nach wie vor Ursache vieler Sicherheitslücken. 

Wir haben die Erfahrung gemacht, dass Passwörter auch nach Jahren seitens der User nicht verändert werden. Daher sollte gleich zu Beginn ein Passwort mit einer Mindestlänge von 8 Zeichen, inklusive Sonderzeichen, gewählt werden.

Zusätzlich schützten folgende Zeilen in der .htaccess die config.php vor unerlaubten Zugriffen:

<files wp-config.php> Order deny,allow deny from all </files> 

Adminbereich sichern

Versucht sich jemand mit falschen Zugangsdaten einzuloggen, teilt WordPress mit, wieviele Versuche noch verbleiben und ob man bereits ausgesperrt ist. Mit Sicherheit nützlich für den User, aber auch für Hacker. Dieses Verhalten sollte man mit folgenden Zeilen in der functions.php deaktivieren: 

<?php function hide_login_info() {
add_filter('login_errors', create_function('$a', "return null;"));   
}
add_action('init', 'hide_login_info'); ?> 

Einen Schritt weiter geht das Plugin Limit Login Attempts. Es lässt die Anzahl an fehlgeschlagenen Loginversuchen sowie Ausschlusszeit manuell festlegen und übermittelt geblockte IPs via Mail an den Seiten-Administrator. Besonders für Seiten mit großem Trafficaufkommen zu empfehlen.

WordPress in einem Unterverzeichnis zu installieren ist zwar für einen menschlichen Angreifer keine Hürde, hilft jedoch gegen automatisierte Botangriffe, die auf der Suche sind nach dem /wp-admin Verzeichnis sind. 

Das Plugin Stealth Login versteckt zu dem die wp-login.php-Datei.

Sicherheit im Frontend

Es spricht nichts dagegen der Welt stolz zu verkünden, dass man auf WordPress setzt. Dass standardmäßig im Quellcode jedoch auch die genau Versionsnummer der WordPress-Installation auftaucht, kann Angreifern das Spiel erleichtern gezielte Schwächen einer veralteten Version zuattakieren. 

Ein kurzes Snippet in der functions.php entfernt den Versionshinweis.

<?php remove_action('wp_head', 'wp_generator'); ?> 

Zuallerst gilt jedoch: Immer auf die neusten Version aktualisieren.

Regelmäßige Updates

Nichts ist wichtiger als regelmäßig den “update”-Button im Administrationsbereich zu klicken. Erfahrungsgemäß wird dies jedoch aus Angst vor einem anschließend fehlerhaften System viel zu selten getan.

Ursache sind in der Regel inkompatible Plugins, die vom Autor nicht mehr entwickelt werden, jedoch essentiell für das System sind. Sie gefährden also nicht nur durch veralteten Code die gesamte Website, sondern halten auch die Updateprozedur auf. 

Unser Ziel bei 4c media ist es darum, mit so wenig Plugins wie möglich auszukommen und eigene Lösungen zu entwickeln, die wir verstehen, also im Notfal auch schnell selbst debuggen können. 

Regelmäßige Backups

Wenn alles nichts geholfen hat, führt oft kein Weg mehr daran vorbei, eine frühere Version der Website einzuspielen. Blöd, wenn erst dann auffällt, dass das Backupscript seit Monaten nur noch einsam Fehlermeldungen ausgespuckt hat, das Backupmedium unlesbar oder der gesicherte Stand bereits fehlerhaft ist.

Sicherheitsexperten empfehlen seit Jahren die 3-2-1 Regel, da sie besonders leicht zu merken ist:

  • Wichtige Daten sollten 3-mal verfügbar sein - die eigentliche Datei und 2 Backups.
  • Es sollte auf 2 verschiedene Medientypen gesichert werden (z.B. Optisch, Magnetisch, Flashspeicher)
  • 1 Backup sollte außer Haus aufbewahrt werden.

Das Plugin BackWPup deckt für uns fast alle Fälle ab und ist dazu sehr komfortabel zu konfigurieren. Es sichert auf Knopfdruck die komplette Datenbank und Installationsdaten in ein Zip-Archiv, prüft zuvor auch noch die Daten auf Konsistenz und sendet bei eventuell auftauchenden Fehlern ein Prokoll per E-Mail. Der Ort lässt keine Wünsche offen: Zur Auswahl stehen unter anderem ein beliebiges Verzeichnis auf dem Webserver, ein anderer Server via FTP-Verbindung oder diverse Cloud-Dienste wie Dropbox. Der Punkt “außer Haus” ist somit also auch abgehakt. 

Der Zeitpunkt des Backups ist oft entscheidend: Ein Backup von gestern Nacht kann nutzlos sein, wenn sich der Fehler bereits vor Wochen eingeschlichen hat. Ebenso sind wochenalte Backups keine Hilfe, wenn sich der Datenbestand seither signifikant geändert hat.

Da BackWPup auch bei großen Datenmengen noch sehr zügig arbeitet, spricht nichts dagegen, gleich mehrere Backup-Zyklen einzurichten. Ein stündlicher, täglicher und 2-wöchiger Rhythmus deckt alles ab: Von der Datei, die der Kollege vor 2 Stunden aus Versehen gelöscht hat, bis zur vor 3 Wochen falsch angelegten CMS-Inhaltsseite.

Zu guter Letzt brennen wir Projektdaten regelmäßig auf DVD.