WordPress-Sicherheit erhöhen

wordpress-logo

WordPress ist ein beliebtes und dementsprechend weitverbreitetes Blogging-System. Wenn auch ihr mit dem Gedanken spielt, ein Blog mit WordPress zu realisieren, dann sind die folgenden Vorkehrungen sicherlich hilfreich. Vorweg: 100%ige Sicherheit wird es nie geben, aber eins ist sicher: So selbstverständlich wie man sein Auto zur Inspektion oder zum TÜV bringt, genauso muss man sich um einen Internetauftritt kümmern. Es reicht nicht, diesen einmal zu installieren und der technischen Seite danach keine Beachtung mehr zu schenken. Womit wir auch schon beim Thema wären…

Ich gehe an dieser Stelle davon aus, ihr habt euch die WordPress-Dateien im .zip-Format bereits aus einer offiziellen Quelle heruntergeladen. Entpackt dieses Archiv und benennt den Hauptordner in etwas Abstraktes um. Uploaded diesen dann via FTP auf euren Webspace in einen Domain-Ordner eurer Wahl. Die (Sub-)Domainzuordnung muss dann noch auf diesen abstrakten Pfad gemappt werden. Wenn der Aufruf der gewünschten URL im Browser funktioniert, sollte der Installationsprozess starten.

WordPress setzt auf PHP (serverbasierte Scriptsprache) und MySQL. Letzteres dient dazu, Einstellungen, Seiteninhalte, Artikel und alles was so dazugehört in einer Datenbank abzuspeichern. Dazu werden sog. SQL-Queries performed und die Informationen in Tables abgelegt. Diese Datenbanken und Tabellen sind natürlich ein beliebtes Angriffsziel. Man hört in diesem Zusammenhang öfters mal den Begriff SQL-Injection. Bei der Installation ist das Standard-Tabellen-Präfix wp_ vorbelegt. Das sollte man durch einen individuellen String (Beispiel: qx12_) ersetzen. Dieses prefix könnte theoretisch dazu dienen, dass man mehrere Websites in einer Datenbank unterbringt. Aus vorgenannten Gründen ist davon allerdings abzuraten. Sollte es auf einer Website zu Problemen externer Natur kommen, legen diese schlimmstenfalls nicht direkt mehrere Internetauftritte gleichzeitig lahm.

 Wenn man mit der Installation fertig ist, hat WordPress eine Datei mit dem Namen wp-config.php angelegt, wo sämtliche während der Installation abgefragten Attribute zu finden sind (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST). Ihr findet dort ebenfalls die ganzen KEYs, welche für jedes Blog individuell sind und auch sein müssen. In früheren Versionen von WordPress konnte bzw. musste man diese Schlüssel manuell über die Seite https://api.wordpress.org/secret-key/1.1/salt/ erzeugen und via copy & paste einfügen. Heutzutage geschieht dies automatisch. Ihr könnt die Keys später auch von Zeit zu Zeit ändern, danach müssen sich lediglich aktuell angemeldete User neu einloggen. Legt die wp-config.php eine Verzeichnisebene höher ab. WordPress sollte bzw. wird sie dort finden. Damit sind die DB-Zugriffsdaten sicher ausgelagert.

Wenn alles soweit vorbereitet ist, sollte man sich daran machen die sicherheitskritischen Bereiche des Blogs für böswillige Besucher unerreichbar zu machen. Darunter zählt zum einen die Datei wp-login.php und zum anderen der Ordner wp-admin. Das ganze kann über .htaccess realisiert werden, sofern euer Webspace-Paket dieses Feature vorsieht. Man könnte dann entweder eine zusätzliche Passwortabfrage einbauen oder – sofern ihr über eine statische oder eine selten wechselnde IP-Adresse verfügt (z.B. Kabel-Internet ohne Zwangstrennung) – nur einen ganz bestimmten Client zulassen. Wenn ihr euch für letzteres entscheidet, dann müsst ihr eine .htaccess-Datei mit folgendem Inhalt in diesem Ordner ablegen:

<Files wp-login.php>
order deny,allow
deny from all
allow from 127.0.0.1
</Files>

127.0.0.1 müsst ihr natürlich durch die zugelassene IP ersetzen. Solltet ihr im Vorfeld schon die Permalink-Funktion aktiviert haben, so müsst ihr die bestehende .htaccess-Datei nur noch durch den obigen Code ergänzen. Bei dynamischen IP-Adressen (solltet ihr den Aufwand der Sicherheit wegen betreiben wollen) muss diese Datei nach jeder Zwangstrennung angepasst werden. Den Ordner wp-admin sichern wir mit folgendem .htaccess-Inhalt:

order deny,allow
deny from all
allow from 127.0.0.1

Hier 127.0.0.1 analog ersetzen. Diese .htaccess muss direkt im Ordner „wp-admin“ abgespeichert werden. Wer sich jetzt fragt, warum er Dateien, aber keine Verzeichnisse in einer .htaccess-Datei absichern kann, dem sei gesagt das die Verwendung der <Directory>-Direktive nicht über .htaccess möglich ist. Das bedeutet, man muss die IP nach einem Reconnect immer zweimal ersetzen. Muss jeder für sich selbst entscheiden. 😉

Wer sich für die Passwort-Methode entscheidet sollte wissen, dass dieses im Klartext übertragen wird. Ebenso beim normalen Login ins Backend. Wer nicht gerade über einen dedicated Webserver verfügt, sondern sich seinen Webspace nach dem Shared-Hosting-Prinzip teilen muss, dem sind SSL-Zertifikate leider verwehrt. In der Praxis bedeutet dieser Umstand, dass theoretisch das Mitlesen und Aufzeichnen eurer Login-Daten z.B. im unverschlüsselten WLAN eines Internet-Cafés möglich ist. Das ganze könnte man unterwegs durch den Einsatz eines eigenen VPN absichern, doch das würde an dieser Stelle den Rahmen sprengen und beansprucht einen eigenen Blog-Artikel. Dennoch hierzu eine kurze Anmerkung: Wenn ihr Euch von unterwegs, sprich von einer fremden IP, einloggen wollt, dann hättet ihr eigentlich keinen Zugriff auf das Weblog mit .htaccess-Sperre. Da ihr dies aber dann über ein VPN-Gateway macht, sieht es für den Webserver so aus, als wenn ihr vom heimischen Rechner auf ihn zugreift. Das bedeutet Sicherheit und Flexibilität.

OK, so weit, so gut. Bevor man mit dem Bloggen loslegt, empfiehlt es sich einen neuen Administrator-Account anzulegen. Dadurch können böse Besucher zum einen unter der User-ID Nr. 1 schonmal keinen Administrator-Account ermitteln und zum anderen ist die Umbenennung des Benutzernamens (gleich Login) von WordPress leider nicht vorgesehen. Der neue Administrator sollte möglichst kryptisch angelegt werden. Das man ein starkes Passwort bestehend aus Zahlen, Sonderzeichen, Gross- und Kleinbuchstaben wählen sollte erklärt sich von selbst. Mit diesem meldet man sich auch gleich an, löscht den ersten Administrator und legt einen weiteren User, z.B. in der Rolle eines Redakteurs an. Dieser Benutzer sollte dann zum eigentlichen Bloggen verwendet werden. Der Administrator wird dann nur noch für tiefgreifende Änderungen, z.B. die Struktur und sonstige Einstellungen betreffend oder das Editieren der Theme-Dateien verwendet.

Das sind im Großen und Ganzen einige Tips um WordPress sicherer zu machen. Achja, bevor ich es vergesse: WordPress sucht automatisch nach Updates der Core-Dateien, Themes und Plugins. Es empfiehlt sich diese regelmäßig durchzuführen, weil damit sowohl Sicherheitslöcher gestopft, als auch Fehler ausgemerzt  und weitere Verbesserungen implementiert werden. Bei der Menge der Plugins gilt grundsätzlich: So viele wie nötig, so wenige wie möglich. Da sich auch in den beliebten Erweiterungen Malware befinden kann, sollte man diese mit Bedacht auswählen.

BoxCryptor

boxcryptor-logo

In einem meiner letzten Beiträge habe ich Euch die zwei Cloud-Varianten vorgestellt. In diesem Artikel möchte ich nun etwas näher auf die Datenspeicherung auf einem externen Server eingehen. Häufig wird der Komfort – überall alles verfügbar zu haben – mehr in den Vordergrund gestellt als die Sicherheit. Kaum jemand der nicht gerade technikaffin ist hat Lust sich mit komplexen Sicherheitslösungen auseinander zu setzen. Als User wird man geradezu eingeladen alles erdenkliche auf fremden Systemen abzulegen und darüber sogar Backups laufen zu lassen. Was dabei gern außer Acht gelassen wird ist die Tatsache, dass die Daten unverschlüsselt irgendwo im Netz gehostet sind, womöglich sogar noch im Ausland wo ganz andere Datenschutzbestimmungen greifen. Übertragen werden die Daten zwar mittels SSL-Verschlüsselung, doch was passiert dann damit? Anbieter wie Dropbox werben damit, dass selbst unter den eigenen Mitarbeitern nur ein eingeschränkter Personenkreis Zugriff auf diese Daten hat. Zudem werden die empfangenen Daten nach eigenen Aussagen verschlüsselt. Doch wie heißt es so schön: Vertrauen ist nicht verkehrt, aber Misstrauen ist auch was wert.

Warum nimmt man das ganze also nicht selbst in die Hand? Was genau? Na, die zu übertragenden Daten vor dem Transfer lokal mit AES 256 Bit zu verschlüsseln! Apropos, dieser Verschlüsselungsstandard ist in den USA zugelassen für Dokumente mit höchster Geheimhaltungsstufe. Er sollte somit privaten Ansprüchen allemal genügen 🙂

Sehr anwenderfreundlich gestaltet ist der Umgang mit diesem Algorithmus dank BoxCryptor.

Doch was genau macht BoxCryptor? Zunächst gehe ich davon aus, dass ihr bereits über einen Dropbox-, SkyDrive- oder Google-Drive-Account verfügt und auch schon die jeweilige Sync-Software installiert habt, sprich es gibt für den jeweiligen Dienst einen Ordner auf eurer lokalen Festplatte. Wenn dort alles reibungslos funktioniert, dann kann man sich ans Werk machen.

BoxCryptor gibt es in drei unteschiedlichen Varianten:

  1. Kostenlos (privat), max. ein Laufwerk, keine Dateinamenverschlüsselung
  2. Kostenpflichtig (privat), beliebig viele Laufwerke, mit Dateinamenverschlüsselung
  3. Kostenpflichtig (kommerzieller Einsatz), beliebig viele Laufwerke, mit Dateinamenverschlüsselung

Ich habe mich für die 2. Variante entschieden. Die Software ist jeden Cent wert. Und letztlich geht es um die Sicherheit an der man bekanntlich nicht sparen sollte.

Die Einrichtung von BoxCryptor ist während und nach der Installation selbsterklärend. Das Programm erkennt installierte Cloud-Ordner in der Regel selbstständig. Wichtig ist, dass man bei der Einrichtung eines Laufwerks keinen einfachen Schlüssel auswählt. Folgende Merkmale sollte er aufweisen und beinhalten:

  • Mindestens 35 Zeichen
  • Zahlen
  • Großbuchstaben
  • Kleinbuchstaben
  • Sonderzeichen
  • Kein Begriffe (Stichwort: Wörterbuchangriff)

Ein gutes Beispiel für einen sicheren Schlüssel ist:

UbByA#5VUmtQ_Df@rX5gsuvMx_])Ws9gtbFT*aeNmx-m2a~}XS${@kt_jb)7

Man muss den selbst gewählten Schlüssel nur einmalig erfassen. Nicht nach jedem Neustart. *puh* 😉 Sollte man das Laufwerk einmal trennen oder seinen Rechner neu installieren, dann ist er logischerweise wieder erforderlich. Also gut aufbewahren! Natürlich nicht in der Cloud oder dem verschlüsselten Teil davon selbst. Wurden Daten einmal kryptographiert, ist es ohne den Schlüssel (praktisch) unmöglich, die Daten zurückzugewinnen. Theoretisch wäre es mittels Brute-Force denkbar, aber aufgrund des enormen Zeit- und Rechenaufwands nahezu ausgeschlossen (Stand: heute). Im Zweifelsfall ausdrucken.

Wenn die Einrichtung erfolgreich verlaufen ist, dann solltet ihr im Windows Explorer nun ein entsprechendes Laufwerk erkennen. Dieses Laufwerk  ist gemappt auf einen Unterordner im z.B. Dropbox-Verzeichnis. Alles was man auf dieser (logischen) Festplatte speichert wird im Hintergrund durch Boxcryptor verschlüsselt und im besagten Unterordner abgelegt. Die Sync-Software führt derweil den Upload durch. Wenn ihr euch den Sync-Ordner anseht, erkennt ihr die verschlüsselten Dateien. Der beste Beweis, dass alles sicher in der Cloud verwahrt wird.

Abschließend nochmals der Hinweis, dass die Verschlüsselung ausschlieߟlich über das Laufwerk funktioniert. Nicht wenn man Dateien direkt im BoxCryptor-Ordner ablegt. Und die Datei .encfs6 bitte niemals löschen. Diese wird zwingend benötigt, enthält aber keine sicherheits-kritischen Daten oder gar Hinweise auf den Schlüssel.

Cloud-Unterscheidung

Der Begriff „Cloud“ ist heutzutage in aller Munde. Im Wesentlichen unterscheidet man zwei Arten: Cloud-Computing und Cloud-Storage.

Ersteres kann dazu verwendet werden, um rechenintensive (z.B. wissenschaftliche oder unternehmerische) Aufgaben nicht lokal, sondern mehr oder weniger outgesourced auf leistungsstarken Computern eines Anbieters auszuführen. Das Ergebnis ist eine zeitlich sehr stark verkürzte Ergebnislieferung, welche so in wenigen Minuten oder Stunden erfolgt, während das eigene System dafür mehrere Tage oder Wochen benötigt hätte. Gezahlt wird in der Regel für Rechenkapazität nach Stunden. Das kann sich vor allem lohnen, wenn die Kosten dafür geringer sind als die Anschaffung und Wartung eigener entsprechender Hard- und Software. Ein bekanntes Beispiel ist Amazon EC2.

Eine andere Form, nämlich das Cloud-Storage ist die Cloud-Lösung, die eigentlich viele meinen wenn Sie darüber sprechen. Bekannt aus der TV-Werbung ist die Telekom-Cloud (das sog. Mediencenter) mit aktuell 25 Gigabyte (GB) kostenlosem Speicherplatz für Bilder, Dokumente, Musik u.v.m. Ebenfalls keine unbekannten Größen sind Dropbox, SkyDrive von Microsoft und Google Drive. Das interessante an solchem Speicher ist, dass er auf viele Arten zugänglich gemacht wird. So kann man entweder direkt über die Website des Anbieters, eine WebDAV-Lösung oder ein eigens programmiertes Programm bzw. App des jeweiligen Dienstes Dateien rauf- und runterladen. Komfortabel ist das vor allem, wenn mehrere Geräte wie PC, Notebook, Tablet-Computer oder ein Smartphone benutzt. Die Dateien stehen somit überall zur Verfügung. Das ganze funktioniert mittels der sog. Synchronisation. Ein Flaschenhals ist natürlich bei den meisten Nutzern der Upstream. Manche Sync-Software wie z.B. die von Dropbox komprimiert die entsprechenden Dateien vor dem Transfer im Hintergrund, um möglichst viel Zeit einzusparen.