WordPress Blog mit Basic Auth und TLS absichern

WordPress gehört zu den beliebtesten Blogsystemen, die es aktuell zu finden gibt. Betreiben lässt sich so ein Blog direkt bei WordPress oder auf einem eigenen Webspace. Den Einsatz auf einem Raspberry Pi kann ich nicht unbedingt empfehlen, da dieser je nach Besucherzahlen schnell aus dem letzten Loch pfeift. Die Variante mit dem eigenen Webspace setzt voraus, dass man sich um die Absicherung des Systems selbst kümmert. Kommerzielle Hoster übernehmen hier schon mal einen Großteil. Um das WordPress Backend, den Admin Bereich, muss man sich selber kümmern. Dazu gehört auf jeden Fall die Kommunikation über TLS (https). Ansonsten gehen Kennwörter unverschlüsselt über die Leitung.

Das Problem bei vielen Hostern ist, dass sie keine eigenen SSL Zertifikate für die günstigeren Webspace Pakete anbieten. Um nicht komplett unverschlüsselt zu kommunizieren, stellen die meisten Anbieter einen globalen SSL Proxy zur Verfügung, der für die eigene Webpräsenz genutzt werden kann. So ein SSL Proxy bietet nicht denselben Komfort wie ein eigenes SSL Zertifikat. Zum einen muss die URL um den SSL Proxy erweitert werden, was viele Anwender erstmal „zu Recht“ argwöhnisch werden lässt. Zum anderen ist der Traffic nur bis zum SSL Proxy verschlüsselt. Der Weg vom Proxy zum eigenen Webserver ist unverschlüsselt. Da dies jedoch innerhalb des Rechenzentrums des Anbieters ist, ist es halbwegs verschmerzbar. Die angepasste URL ist für einen abgesicherten Admin Bereich auch irrelevant, da normale Blogbesucher davon nichts merken. Im Folgenden wird erklärt, wie sich ein WordPress Blog, welches bei HostEurope gehostet wird mit einem SSL Proxy absichern lässt. In der root des WordPress Blogs auf dem Webspace, muss die .htaccess Datei erweitert werden.

# SSL Proxy settings
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl.webpack\.de$ [NC]
RewriteRule ^wp-admin https://ssl.webpack.de/blog.beispiel.de/wp-login.php [L] 

Die URL blog.beispiel.de muss an die eigene URL angepasst werden. Um die URL zu testen, kann diese einfach im Browser aufgerufen werden. Wenn das WordPress Login angezeigt wird, gibt es 100 Punkte. Zusätzlich muss in die „wp-config.php“ folgender Block vor die Zeile „/* That’s all, stop editing! Happy blogging. */“

// start ssl proxy redirect

if( isset( $_SERVER['HTTP_X_FORWARDED_SERVER'] ) ) {
# access with ssl proxy
    $_SERVER['HTTPS']='on';
    $_SERVER['HTTP_HOST'] = 'ssl.webpack.de';
    $_SERVER['REQUEST_URI']='/blog.beispiel.de'. $_SERVER['REQUEST_URI'];
    define('WP_SITEURL', 'https://ssl.webpack.de/blog.beispiel.de');
    define('WP_HOME', 'http://blog.beispiel.de');
} else {
# access without ssl proxy
    define('WP_SITEURL', 'http://blog.beispiel.de');
    define('WP_HOME', 'http://blog.beispiel.de');
}

// end ssl proxy redirect

Ab sofort wird ein Aufruf der URL http://blog.beispiel.de/admin auf https://ssl.webpack.de/blog.beispiel.de/wp-login.de umgeleitet und die Anmeldedaten werden verschlüsselt übertragen. Allerdings hat diese „gebastelte“ Funktion zwei kleine Nachteile. Die Artikelvorschau funktioniert jetzt nicht mehr wie gewohnt. Der Artikel wird über den SSL Proxy erstellt. Die Vorschau wird jedoch über die „normale“ http Verbindung angezeigt. Daher gibt es einen Fehler wegen nicht ausreichender Berechtigungen. Die URL kann aber manuell an den SSL Proxy angepasst werden, damit die Vorschau angezeigt wird. Beim Veröffentlichen bzw. nachträglichen Bearbeiten des Blogs gibt es keine Probleme. Eingefügte Objekte werden nun auch über den SSL Proxy verlinkt. Technisch hat das keine Auswirkungen. Wer sich aus „kosmetischen“ Gründen daran stört, muss bzw. kann die Links nachträglich anpassen. Wer sein Blog noch zusätzlich absichern möchte, kann dies durch Basic Authentifizierung tun. Dabei wird beim Aufruf des Adminbereichs die Eingabe einer zusätzlichen Benutzer- Passwortkombination erforderlich, die unabhängig der WordPress Installation ist. Dazu muss im WordPress Root Verzeichnis die „.htaccess“ Datei mit folgendem Inhalt erweitert werden.

<FilesMatch "(wp-login|xmlrpc)(.*)">
SetEnvIf X-Forwarded-Host ^$ goforit
AuthType Basic
AuthName "WordPress Admin"
AuthUserFile /is/htdocs/EIGENES PRODUKT/www/wordpress/wp-admin/.htpasswd
Require valid-user
Order deny,allow
Deny from all
Allow from env=goforit
Satisfy any
</FilesMatch>

Der bei „AuthUserFile“ verwendete Pfad kann im HostEurope KIS unter „Administration > *IHR PRODUKT* >*IHR PAKET* > Allgemeines > Allgemeine Informationen“ kopiert werden. Zusätzlich wird im Verzeichnis „wp-admin“ eine neue Datei „.htpasswd“ benötigt. Der Inhalt der Datei kann auf http://www.htaccesstools.com/htpasswd-generator/ erstellt werden. Sobald die neue Dateie im Verzeichnis „wp-admin“ vorhanden ist und die „.htaccess“ angepasst wurde, kommt eine weitere Loginmaske bevor das übliche WordPress Login erscheint. Die Daten werden auch hier über den SSL Proxy verschlüsselt.

An dieser Stelle noch ein dickes Danke an Tino. Sein Blog war mir für dieses Thema eine große Hilfe. http://tino.cc

Ähnliche Beiträge:

Kommentare sind geschlossen.