Gastbeitrag: WordPress-Administration per SSL absichern
Es gibt viele Möglichkeiten, um die WordPress-Administration sicherer gegen Angreifer zu machen. Das fängt bei solch trivialen Dingen wie dem Benutzen von sicheren Passwörtern an und geht hin bis zum Absichern der WordPress-Administration mit einer zusätzlichen Authentifizierung am Webserver.
In dieser Anleitung gehen wir aber noch einen Schritt tiefer und verschlüsseln die WordPress-Administration per SSL. Hierbei wird sämtlicher Datenverkehr der WordPress-Administration über einen sicheren, verschlüsselten Kanal geleitet.
Für diese Anleitung wird ein Webserver mit SSL-Unterstützung benötigt. Wer nicht genau weiß, ob sein Webserver von Haus aus SSL unterstützt, hängt einfach ein https:// anstatt eines http:// vor seine Internetadresse. Wenn keine Verbindung hergestellt werden kann, ist SSL noch nicht verfügbar. Eventuell kann man SSL beim Webhoster gegen einen geringen Aufpreis dazubuchen. Wer einen vServer oder root-Server sein Eigen nennt, sollte sich diese Anleitung zur Einrichtung eines Apache-Webservers mit SSL mal anschauen.
Außerdem muss das Umleiten von URLs per .htaccess-Datei erlaubt sein, was aber bei den meisten Anbietern der Fall ist.
Zunächst öffnest du die Datei wp-config.php im WordPress-Hauptverzeichnis und fügst an das Ende der Datei die Zeile
define('FORCE_SSL_ADMIN', true);
ein. Diese Option veranlasst WordPress, den Login-Prozess nur über eine gesicherte Leitung abzuwickeln.
Das macht das ganze schon ein Stückchen sicherer, allerdings wird noch der Rest der Administration unverschlüsselt übertragen. Deshalb machen wir uns nun an die Anpassung des Webservers. Öffne nun die Datei .htaccess in dem WordPress-Hauptverzeichnis und füge folgende Zeile ein:
RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^http://(.*?)/wp-admin/(.*) https://$1/wp-admin/$2 [R,L]
Dieser Eintrag muss direkt nach dem Eintrag:
RewriteBase /
platziert werden, wobei der RewriteBase-Eintrag je nach Konfiguration eventuell abweichen kann.
Jetzt solltest du direkt beim Aufrufen der WordPress-Administration auf https umgeleitet werden. Somit ist nun deine ganze Arbeit in der WordPress Administration verschlüsselt.
Der Experte wird unter gewissen Umständen vielleicht bemerken, dass nicht alle Daten verschlüsselt übertragen werden (Firefox zeigt keinen blauen oder grünen Balken hinter dem favicon an). Manche Plugins fordern Daten außerhalb des Ordners wp-admin an. In diesem Fall werden diese Daten nicht verschlüsselt übertragen. Bei mir zum Beispiel hat das Plugin Ajax Edit Comments noch Daten aus anderen Verzeichnissen nachgeladen.
Unter Firefox kann man schnell nachschauen, welche Daten unverschlüsselt geladen werden. Klicke dazu mit der rechten Maustaste irgendwo in die Administration (nur nicht auf einen Link :P) und wähle Seiteninformationen anzeigen.
Unter dem Reiter Medien kannst du dir dann anschauen, woher sämtliche Daten geladen wurden. Diejenigen, bei denen kein https angegeben wird, wurden über einen unverschlüsselte Verbindung übertragen, was aber in der Regel nicht weiter schlimm ist:
Ab sofort ist dein WordPress noch etwas sicherer gegen Angreifer. Diese können aufgrund der Verschlüsselung keine sensiblen Daten mehr abfangen.
Über den Autor dieses Artikels
Mein Name ist Patrick Gotthard und in meinem Blog beschäftige ich mich vor allem mit HTPCs (auch MediaPCs oder Wohnzimmer-PCs genannt) und diversen Software-Themen (Programmierung in PHP und Java, Webdesign, WordPress, Linux- und Windows-Betriebssysteme, Softwarevorstellungen). Außerdem berichte ich über interessante Fundstücke aus dem Netz. Ich würde mich freuen, wenn ihr mir auch mal einen Besuch abstattet.
Hä?
Der Link im ersten absatz „Absichern der WordPress-Administration mit einer zusätzlichen Authentifizierung am Webserver“ hat „file:///“ als Ziel. Glaube, das ist so nicht gewollt 😛
Interessanter Artikel! Leider kann ich auf keinen meiner Blogs SSL verwenden. 🙁 Ich werde beim nächsten Mal aber darauf achten 😉
BTW: Bekommt Patrick nun eigentlich mein theoretischen Flattr? 😀
Danke caschy, für das tolle Geburtstagsgeschenk 🙂 Hmm der Link muss in der Tat angepasst werde, ich hatte nur einen relativen Link-Pfad auf einen Artikel von dir gesetzt.
Korrekte URL: http://stadt-bremerhaven.de/wordpress-sicherer-machen-ohne-plugins/
Vielleicht erklärt auch noch jemand den leuten die es Toll finden das SSL total sinnlos ist wenn man nicht grade mit einem unverschlüsselten und öffentlichen Wlan drinne Rummacht.
Die Chance das unterwegs jemand mitliest ist um den Faktor 1000 kleiner als die Gefahr über ne Sicherheitslücke ins Backend zu kommen.
Ich wollte das bei mir auch schon in die WP-Config einbauen, doch bei mir besteht leider das Problem, dass die SSL-Zertifikate in der Firma durch die Firewall überprüft werden. Da ich nur ein kostenloses Zertifikat habe, wird das von der Firewall geblockt.
Bezüglich WordPress Login-Sicherheit ist das Plugin „Semisecure Login Reimagined“ noch empfehlenswert!
Anscheinend kennst du dich mit Netzwerktechnik nicht besonders gut aus. Daten kann man mit diversen Methoden abfangen, MITM-Attacken per z.B. ARP-Poisoning, unverschlüsselte oder schlecht verschlüsselte WLANs, unsichere Leitungen über das Internet etc pp. Auch wenn du z.B. an einem Hub hängst, musst du nur einmal Wireshark anschmeißen und kannst alles mitlesen, vorrausgesetzt, du kannst dein NIC in einen Listen-Mode versetzen…
Da fällt mir grad spontan dieser Artikel von gestern ein: http://stadt-bremerhaven.de/woher-kommt-der-hass/
Super Beitrag. Danke Patrick!
Der Kommentar eben galt übrigens @sonyon, hab ich vergessesn anzugeben und editieren war nicht mehr möglich.
Eine unverschlüsselte Datenübertragung im Internet ist immer unsicher. Da würde ich empfehlen sich mal mit dem Aufbau des Internets zu beschäftigen, dann versteht man es auch. Man braucht nur grob zu wissen wie das Internet funktioniert und dann sollte jeden klar sein, dass eine unverschlüsselte Datenübertragung einer Postkarte gleicht.
Ich bekomme hier die Editiermöglichkeit erst garnicht zu sehen. Ich habe anscheinend nicht alle Einstellungen so gesetzt, dass mir die Editiermöglichkeit angezeit werden könnte. Wie wird hier die Editiermöglichkeit bereitgestellt und was muss alles an sein, damit man die Funktion auch nutzen kann? Danke im Voraus.
P.S.: Mein Kommentar galt auch @sonyon.
Hallo und danke für diesen interessanten Artikel. Bei den meisten Providern wird es wohl so sein, dass das Zertifikat des Providers auf dem Server installiert ist.
Hier muss man dann dem Browser eine Ausnahmeregel hinzufügen.
Gruß
Thomas
@Adam: Du musst JavaScript aktiviert haben. Dann sollte nachdem du einen Kommentar abgegeben hast und bevor ein neuer Kommentar eingetragen wurde unter deinem Kommentar ein Editieren-Button erscheinen.
Das gleiche kannst du sonst auch bei mir im Blog testen 😉
@Thomas: Jupp für solche Dinge ist das ja noch ok, die Administration sollten ja eigentlich nicht viele Leute benutzen.
Wenn man einen öffentlichen Bereich verschlüsseln möchte, sollte man natürlich auf ein signiertes Zertifikat von einer bekannten CA setzen, damit nicht jeder Benutzer eine Ausnahme hinzufügen muss. Solche Zertifikate können aber auch recht teuer sein…
Auf meinem Server habe ich ein richtiges Zertifikat, allerdings nur für einen Hostnamen. Und auch nur eine IP-Adresse. Allerdings laufen verschiedene WordPress-Blogs unter unterschiedlichen Domains auf diesem Server.
Wäre es möglich, dass sämtliche Blogs über den gesicherten Hostnamen administriert werden können?
Also z.B.
Zertifikat für http://sicheredomain/ vorhanden,
Blog1 unter http://blog1/ -> Admin unter z.B. http://sicheredomain/blog1/wp-admin/
Blog2 unter http://blog2/ -> Admin unter z.B. http://sicheredomain/blog2/wp-admin/
Wäre das auch irgendwie möglich?
@Tobias: Möglich ist das, ich würde es persönlich allerdings über Subdomains statt über Aliase lösen… aber das ist Geschmackssache 🙂
Subdomains geht ja auch nicht, weil ich nur genau ein Zertifikat für genau einen Hostnamen habe.
Achso sorry… ich bin aus meinem Unternehmen Wildcard-Zertifikate gewohnt. OK, dann musst du das natürlich über Aliase regeln.
Ich frage mich, warum sollte man auf die Idee kommen, den kompletten Admin-Bereich via SSL abdichten? Die Login-Seite ist verständlich, das hat auch WordPress per Konstante vorgesehen.
Welche Daten sind nach dem Login so sensibel, dass man diese schützen sollte? Löschung der Spam-Kommentare? Verfassung der Beiträge? Ich könnte mir nur den Benutzer-Bereich mit der Möglichkeit Zugangsdaten zuzuweisen als einen Kandidaten vorstellen. Aber der Rest?
Man soll auch immer bedenken: SSL = langsamer. Je nach Verbindung kann dann die Übertragung von Bildern gleich zu einer Geduldsprobe werden.
@Sergej: Gute, berechtigte Frage. Die Benutzerverwaltung ist schonmal ein Grund. Aber auch wenn du z.B. Plugins einrichtest, gibst du z.B. deine Twitter- oder Google-Daten ein.
Wenn man es mal auf die Spitze treibt, könntest du auch verhindern, dass dich Leute beim Verfassen von neuen Artikeln „belauschen“ – das ist wohl aber ein Grund für echt hartgesottene Sicherheitsfanatiker 😛
Und dann würde mir noch einfallen, dass Benutzerdaten in der Admin wie z.B. E-Mail-Adressen deiner Kommentatoren abgreifbar wären.