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.
Das ist aber wirklich für paranoide Sicherheitsjunkies 😉
Hast du mal selbst probiert, den kompletten Admin-Bereich zu „verschlüsseln“? Funktioniert dann der Flash-Uploader? Das Ding ist extrem pingelig, was Änderung der Pfade angeht.
Oh du hast recht… der funzt nicht mehr, hab’s grad ausgetestet (erst gestern hab ich die Admin verschlüsselt und seitdem keinen Beitrag verfasst). Ich werd‘ mich mal nach einer Lösung umschauen… Du hast nicht zufällig im Kopf, an welches Script der Flashuploader die Daten schickt?
So aus dem Kopf nicht, müsste man sniffen.
Sehr interessanter Artikel. Aber ich bin Anwender. Mir ist das alles doch zu technisch. Gut, wer täglich damit beschäftigt ist, dem ist das alles sehr vertraut, das sieht man an den Kommentaren. Aber ich mag nicht stundenlang etwas ändern, hinzufügen, löschen, wo ich nichts von verstehe. Dann nehme ich Patricks sicherlich guten „Fahrplan“ arbeite das alles ab und weiß doch nicht, was ich eigentlich getan habe.
Ach so technisch ist der Artikel doch nicht und Verschlüsselung sollte doch jedem was sagen 😉 Wer kennt nicht aus Kindertagen noch die Caesar-Verschlüsselung 😛
Kann man das auch mit dem kostenloasen WordPress-Account ohne eigene Adresse — also mit .wordpress.com hintendran — machen? Und wenn ja — wie? Erlaubt wordpress eigentlich ftp zugriff für den eigenen Bereich?
Ansich eine schöne Sache — würde ich sofort machen, wenn es möglich ist…
@paradonym: Hast du mal versucht, https vor die URL zu schreiben. Wenn deine Seite dann noch angezeigt wird, sollte das klappen.
https://paradonym.wordpress.com/ – ja aber ich arbeite ja nicht mit einem eigenen Programm oder so — https geht zwar, aber hier beschreibt WordPress selbst, dass es keinen FTP zugriff gewährt — deswegen fragte ich…
bei all-inkl schonmal jmd angetestet?
Haben Apache-Server wenn von einem Webhoster angeboten normalerweise mod_rewrite installiert und existiert da auch meist ein Engine On?
Sehr schöner Beitrag, aber für unwissende, interessierte Nutzer wäre es u.U. sinnvoll einen Link zu Erklärungen für mod_rewrite und co. zu geben, damit auch jeder weiss was er da tut (ist dann auch für Fehlersuche einfacher).
Habe erst gestern in ähnlicher Weise den phpMyAdmin abgesichert. Den Artikel nen Tag eher und ich hätte die Informationen nicht so zusammen suchen müssen 😉
Nur den Login-Prozess zu verschlüsseln bringt nicht viel, da man aus dem unverschlüsselten Webinterface nur noch das Cookie auslesen muss, und hat dann Vollzugriff. Das Verschlüsseln des Login-Prozesses verhindert nur, dass das Passwort ausgelesen wird und ist insofern nur ein Problem, wenn man das gleiche Passwort an mehreren Stellen verwendet.
@tobias:
Wenn man den Admin-Bereich (oder zumindest Teile davon) zusätzlich per .htaccess schützt dann kann man auch dem recht gut aus dem Weg gehen 🙂
@Jeffrey
Mein Schüler 😉
@Sergej:
Japp, von dir habe ich bereits schon einiges gelernt 🙂
@paradonym: Also wie es aussieht, kannst du auf https-Verschlüsselung zurückgreifen. Demnach sollte das ganze klappen. Muss ich nurnoch nen Fix für das Problem mit dem Uploader finden.
@Najtrok: Die meinsten Provider erlauben mod_rewrite, man muss es nur per .htaccess aktivieren.
Sorry Jungs, ich hab oben einen Fehler gemacht.
@caschy: Bitte passe die RewriteRule wie folgt an:
RewriteRule (.*)wp-admin(.*) https://%{SERVER_NAME}/$1wp-admin$2 [R,L]
Diese RewriteRule sollte allgemeingültig sein, auch wenn man WordPress in einem Unterverzeichnis benutzt. Habe leider eben erst bemerkt, dass man das http:// am Anfang der URL nicht so einfach per mod_rewrite auslesen kann.
P.S.: Ich bin dran am FlashUploader Problem. Mit dem HTTP-Uploader läuft es einwandfrei bei mir. In diesem Artikel wird detailliert auf das Problem mit SSL + FlashUploader eingegangen, bei mir hat das von demjenigen erstellte Plugin allerdings nur teilweise geholfen (Bild lädt hoch, aber WordPress bleibt beim „Crunching…“ hängen).
Sorry Jungs, ich hab oben einen Fehler gemacht. Die RewriteRule oben ist nicht funktionsfähig, da hab ich etwas gepatzt.
@caschy: Bitte passe die RewriteRule wie folgt an: http://nopaste.info/bc1dee61f8.html (konnte den Code so nicht hier posten)
Die neue RewriteRule sollte allgemeingültig sein, auch wenn man WordPress in einem Unterverzeichnis benutzt. Habe leider eben erst bemerkt, dass man das http:// am Anfang der URL nicht so einfach per mod_rewrite auslesen kann. Bei mir hatte ich die Abfrage mit http weggelassen, weil ich WordPress nicht in einem Unterordner betreibe.
P.S.: Ich bin dran am FlashUploader Problem. Mit dem HTTP-Uploader läuft es einwandfrei bei mir. In diesem Artikel wird detailliert auf das Problem mit SSL + FlashUploader eingegangen, bei mir hat das von demjenigen erstellte Plugin allerdings nicht geholfen (Bild lädt hoch, aber WordPress bleibt beim „Crunching…“ hängen).
Sorry Jungs, ich hab oben einen Fehler gemacht. Die RewriteRule oben ist nicht funktionsfähig, da hab ich etwas gepatzt.
@caschy: Bitte passe die RewriteRule wie folgt an:
RewriteRule (.*)wp-admin(.*) https://%{SERVER_NAME}/$1wp-admin$2 [R,L]
Die neue RewriteRule sollte allgemeingültig sein, auch wenn man WordPress in einem Unterverzeichnis benutzt. Habe leider eben erst bemerkt, dass man das http:// am Anfang der URL nicht so einfach per mod_rewrite auslesen kann. Bei mir hatte ich die Abfrage mit http weggelassen, weil ich WordPress nicht in einem Unterordner betreibe.
P.S.: Ich bin dran am FlashUploader Problem. Mit dem HTTP-Uploader läuft es einwandfrei bei mir. In diesem Artikel wird detailliert auf das Problem mit SSL und FlashUploader eingegangen, bei mir hat das von demjenigen erstellte Plugin allerdings nicht geholfen (Bild lädt hoch, aber WordPress bleibt beim Crunching… hängen).
Oh sorry caschy, bitte lösche den mehrfachen Kommentar. Ich hab den Kommentar eben öfters abgeschickt, weil die Seite nicht reagiert hat bzw. kurzzeitig garnicht mehr erreichbar war.
Ahoi, Patrik.
Ja, der Uploader. Deswegen sage ich in Artikeln meiner Sicherheitsreihe: Schützt nie den kompletten wp-admin Ordner mit Zugangsdaten via .htaccess. Nur die Login-Seite, praktisch die Eingangstür deiner Burg. Weil WordPress eben nicht konsequent genug mit der Trennung Backend/Frontend umgeht und Dateien aus dem Backend auch im Frontend einbindet. Oder halt den Flash-Uploader dabei killt. Daher ist beim Manipulieren des kompletten Admin-Verzeichnisses oberste Vorsicht geboten.
Und bis du einen Workaround für das Problem gefunden hast, würde ich einen Hinweis oben im Artikel vorschlagen. Denn Blogger, die dem Blog durch SSL etwas Gutes verpassen wollen, sollen ja nicht die zweit genutzte Funktion (Flash-Upload) unbewusst lahmlegen.