Wordpress
Wordpress (auch: WordPress) ist ein Weblog Publishing System (auch Content Management System), das hauptsächlich bei der Erstellung von häufig zu aktualisierenden Websites (hauptsächlich Weblogs) eingesetzt wird. Es basiert auf der Skriptsprache PHP und benötigt eine Mysql-Datenbank.
Konzepte
Installation
- Installing WordPress (WordPress.org)
Voraussetzungen:
- PHP >= 4.2
- MySQL >= 4.0
1. Herunterladen und entpacken des Wordpress-Pakets:
$ tar xzf wordpress-2.3.tar.gz
2. Anlegen einer Datenbank für Wordpress auf dem Webserver sowie eines MySQL-Benutzers, der alle Berechtigungen für den Zugriff und für Veränderungen besitzt:
$ mysql -u root -p Enter password: mysql> create database mikiblog; mysql> grant all on mikiblog.* to wordpressuser@localhost identified by 'password'; Query OK, 0 rows affected (0.07 sec) mysql> show grants for wordpressuser@localhost; mysql> flush privileges;
3. Umbenennen der Datei "wp-config-sample.php" zu "wp-config.php" und Setzen der Konfigurationseinträge.
$ cd /backup/software/wordpress $ mv wp-config-sample.php wp-config.php $ vi wp-config.php define('DB_NAME', 'mikiblog'); define('DB_USER', 'wordpressuser'); define('DB_PASSWORD', 'password'); define('DB_HOST', 'localhost'); $table_prefix = 'wp_'; define('WPLANG', 'de_DE');
4. Verschieben der Dateien nach "/var/www" und Änderung des Benutzers.
# cd /backup/software # mv wordpress /var/www/mikiblog # cd /var/www && chown -R wiki:wiki mikiblog
5. Ausführen des Installationsskripts durch Aufruf von "wp-admin/install.php" im Webbrowser.
http://hostname/mikiblog/wp-admin/install.php
Wordpress wird nun installiert, dabei wird der Benutzer "admin" mit einem Passwort angelegt. Über folgende URL kann dann ins neu angelegte Weblog eingeloggt werden:
http://deaddodo.org/mikiblog/wp-login.php
Konfiguration
Deutsche Sprachdatei
Herunterladen der deutschen Sprachdatei unter Download > Sprachdatei (Wordpress-Deutschland.org)
Achtung: Die Sprachdatei kann nicht direkt bearbeitet werden! Infos dazu finden sich unter Bearbeitung der Sprachdatei (Wordpress-Deutschland.org)
Erstellen des Verzeichnisses "languages" unter "/var/www/mikiblog/wp-includes" als Benutzer "wiki".
$ cd /var/www/mikiblog/wp-includes $ mkdir languages && cd languages $ cp /backup/software/de_DE.mo.zip . $ unzip de_DE.mo.zip && rm de_DE.mo.zip
Anpassen des Parameters "WPLANG" in der Datei "wp-config.php".
$ vi /var/www/mikiblo/wp-config.ph define ('WPLANG', 'de_DE');
Die Datei "de_DE.mo" kann auch einen anderen Namen haben, (z. B. "de.mo" oder "deutsch.mo"), sie muss in diesem Fall aber auch in der Datei "wp-config.php" so heissen.
Zum Anzeigen des schweizerischen Datumsformats müssen im Menü "Einstellungen > Allgemein > Datum und Uhrzeit" folgende Einstellungen gemacht werden:
Standard-Datumsformat:
l, j. F Y
Standard-Zeitformat (damit das "Uhr" nicht fälschlich als Variable erkannt wird, muss den Buchstaben jeweils ein umgekehrter Schrägstrich voran gestellt werden):
G:i \U\h\r
Theme hinzufügen
1. Theme herunterladen und Dateien entpacken. Die Dateistruktur muss erhalten bleiben.
2. Mit einem FTP-Client wird das Theme auf den Server geladen. Das Theme sollte sich im Verzeichnis "wp-content/themes" befinden.
3. Aktivierung des Theme als Administrator im Menü "Themes".
Plugin "Bannage"
Das Plugin "Bannage" kann Spam-Kommentare nach folgenden Kriterien sperren:
- URI
- Benutzername
- E-Mail-Adresse
- IP-Adresse
1. Herunterladen und Auspacken der Plugin-Datei "bannage.php".
$ cd /tmp $ wget http://www.justinshattuck.com/bin/plugins/bannage02.zip $ unzip bannage02.zip
2. Hinstellen der Datei "bannage.php" ins Plugin-Verzeichnis von Wordpress.
$ mv bannage.php /var/www/mikiblog/wp-content/plugins $ chown wiki:wiki /var/www/mikiblog/wp-content/plugins/bannage.php
3. Aktivierung des Bannage-Plugins über die Administrationsoberfläche von Wordpress.
Sicherheit
Wordpress gilt mit seinen in der Vergangenheit aufgetretenen Anfälligkeiten (von XSS-Angriffen bis zu SQL-Injektion) als berüchtigt. Secunia.com listet allein für 2007 33 Schwachstellen (Stand: 9. November 2007). Dazu kommen Verwundbarkeiten einzelner Plugins oder Themes. Die Software hat insbesondere auch Schwächen bei der Umsetzung des Datenbankzugriffs über PHP.
Angreifer versuchen mit Vorliebe, Spam-Links zu hinterlegen oder Blogs zu zerstören.
Schlüssel und Tabellenpräfixe bestimmen
Durch die einfache Installation von Wordpress gleichen sich viele Installationen, was Angreifern den unbefugten Zugriff erleichtert; eine vom Standard abweichende Installation kann so einem Eindringling den Zugang erschweren.
Der Zugang zur Datenbank wird in der Datei "wp-config.php" konfiguriert. Hier wird auch das Tabellenpräfix bestimmt, mit dem Wordpress bei der Installation alle notwendigen MySQL-Tabellen anlegt - gewöhnlich handelt es sich um das Präfix "wp_". An dieser Stelle sollte immer ein vom Standard abweichendes Präfix vergeben werden - erlaubt sind Zahlen, Buchstaben und Unterstriche.
Ebenfalls in der Datei "wp-config.php"werden drei Konstanten bestimmt, um die Sicherheit von Wordpress zu erhöhen. Die Software verwendet diese vier Schlüssel an unterschiedlichen Stellen, um Informationen in den Cookies der Anwender besser zu verschlüsseln. Um willkürliche Zeichenketten zu erzeugen und so den Standard zu verändern, bietet Wordpress den Online-Dienst Authentication Unique Keys Generator, der es erlaubt, die vier Konstanten neu zu bestimmen - mit jedem Aufruf der Seite werden die vier Schlüssel neu erzeugt.
Rechte für Dateien und Verzeichnisse setzen
Die Rechte der Dateien und Verzeichnisse sollten angemessen unterschieden werden. Gleichgültig, ob die Dateien über das Wordpress-Backend oder FTP abgelegt werden, sollten die Rechte entsprechend restriktiv gesetzt werden, da eingeschränkte Rechte es einem Angreifer erschweren, Dateien und Verzeichnisse zu verändern.
Üblicherweise sammeln Suchmaschinen bis zu einer gewissen Hierarchiestufe auf einer Webseite alle Informationen, an die sie herankommen. Mit Hilfe der Datei "robots.txt" im Wurzelverzeichnis der Wordpress-Installation werden unerwünschte Onlinedurchsuchungen verhindert. Die internen Verzeichnisse von Wordpress sollten in keinem Suchergebnis auftauchen. Der Zusatz "Disallow: /wp-admin/" genügt, und die Suchmaschinen umgehen künftig das Verzeichnis "wp-admin".
Bei verschiedenen konfigurierten Servern besteht unter Umständen die Möglichkeit, dass der Webbrowser des Besuchers die Inhalte sämtlicher Verzeichnisse und Dateien der Wordpress-Installation auflistet, wenn die Adressen direkt aufgerufen werden (z. B. "http://mydomain.xx/wp-content/"). Um dies zu unterbinden wird in den jeweiligen Verzeichnissen eine leere Datei namens "index.html" abgelegt. Alternativ leistet dies auch das Plugin WordPress Login Sicherheit - Secure WP.
Verschleiern und Verschlüsseln
Wordpress legt gewöhnlich alle Erweiterungen, Dateiablagen und Themes im Verzeichnis "wp-content" ab - oft schleusen aber Themes und Plugins Sicherheitslücken ins System. Seit Wordpress 2.6 darf diesem Verzeichnis deshalb ein beliebiger Name gegeben und er kann auch an einer anderen Stelle amgelegt werden. Eine Neuinstallation erledigt das einfach und schnell, doch kann dieser Schritt Probleme mit Plugins oder Themes erzeugen: Nicht alle Autoren fragen den Pfad über die von Wordpress bereitgestellten Konstanten und Funktionen ab. Um das Verzeichnis neu zu bestimmen, werden in der Datei "wp-config.php" einige Konstanten wie folgt abgeändert:
define('WP_CONTENT_DIR', ABSPATH . 'test'); # wp-content Verzeichnis define('WP_CONTENT_URL', 'http://example.xx/test'); # wp-content URL define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins'); # Plugin-Verzeichnis
Seit Wordpress 2.6 kann das Backend über den Zugriff via SSL abgesichert werden. Unterstützt der verwendete Webspace das Protokoll, so kann SSL in der Datei "wp-config.php" wie folgt aktiviert werden:
FORCE_SSL_LOGIN true
Einfache Absicherung bestehender Installationen
Der Benutzername der Standardinstallation lautet "admin" - nach einer Installation sollte dieser Benutzer gelöscht und ein neuer Administrator angelegt werden. Dies kann im Administrationsbereich erledigt werden, am besten gleich nach der ersten Anmeldung. Damit wird nicht nur der Benutzername geändert, sondern auch die zugehörige ID-Nummer, die Wordpress automatisch vergibt - zwei Komponenten diue andernfalls von Angreifern ausgenutzt werden können.
Zur Verwendung hoher Werte für die ID-Nummer erweisen sich händische ÄNderungen im Backend als aufwendig - Wordpress zählt bei jedem neuen Benutzer schlicht um eins hoch. Der Wert kann über das Plugin WP - Suchen und Ersetzen (de) oder noch besser direkt mit dem folgenden SQL-Befehl geändert werden:
UPDATE 'wp_usermeta' SET 'user_id' = '815' WHERE 'wp_usermeta'.'user_id' = 1; UPDATE 'wp_posts' SET 'post_author' = '815' WHERE 'wp_posts'.'post_author' = 1; UPDATE 'wp_links' SET 'lonk_owner' = '815' WHERE 'wp_links'.'link_owner' = 1;
Seine Versionsnummer gibt Wordpress im Backend, in den Feeds und im Theme aus. Jede Version hat ihre Eigenarten und Fehler, weshalb Fremden keine Information über die aktuelle Wordpress-Installation gegeben werden sollte. Mit Hilfe des Plugins WordPress Login Sicherheit - Secure WP kann die Versionsbezeichnung einfach aus allen Bereichen entfernet werden. Nur das Backend muss die Versionsnummer kennen, da neben Wordpress selbst auch einige weitere Plugins diese Information benötigen.
Kein Zugriff dank Apaches ".htaccess"
Auch Wordpress kann unter Apache mit Hilfe der Datei ".htaccess" abgesichert werden. Grundsätzlich kann so jedes Verzeichnis geschützt werden, allerdings sollte dabei die Benutzbarkeit im Auge behalten werden.
Die Konfigurationsdatei "wp-config.php" verwaltet die Zugänge zur Datenbank und ist damit besonders schützenswert. Um sie zu schützen wird im Verzeichnis "wp-admin" der Wordpress-Installation die Datei ".htaccess" mit folgendem Inhalt angelegt:
<files wp-config.php> Order deny,allow deny from all </files>
Lässt die Webserverumgebung eine offene Verzeichnisumgebung zu, so sollten jeweils leere Dateien mit dem Namen "index.html" in den jeweiligen Verzeichnissen angelegt werden. Alternativ kann der Zugriff über den Eintrag "Options -Indexes" in der Datei ".htaccess" gesperrt werden.
Auch die Verzeichnisse "wp-content" und "wp-includes" sind schützenswert, was allerdings Anwendern das Leben schwer macht, da einige Plugins Daten aus diesen Verzeichnissen benötigen. Mit folgenden Einträgen in der Datei ".htaccess" können diese Verzeichnisse geschützt werden, sodass externe Anwender nur Bilder, Stylesheets und Javascript-Dateien aus ihnen holen können.
Order Allow,Deny Deny from all <Files ~ "js/tinymce/*.$"> Allow from all </Files> <Files ~ "\.(css|jpe?g|png|gif|js)$"> Allow from all </Files>
Wie sicher ist meine Wordpress-Installation?
Über Wordpress und Sicherheit lässt sich viel sagen. Blogsecurity bietet eine Online-Version des [http.//blogsecurity.net/cgi-bin/wp-scanner.cgi WP-Scanners] an und aktualisiert diesen regelmässig - mit seiner Hilfe kann das eigene Blog geprüft werden.
Alternativ kann die Sicherheit auch direkt im Wordpress-Backend über Plugins wie die folgenden geprüft werden:
- WP Security Scan (Wordpress.org)
- WordPress Exploit Scanner (Ocaimh.ie)
- WordPress Plugins für mehr Sicherheit (Bueltge.de)
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wordpress | eng | Wordpresswbm | |
Inpsyde | ger | Wordpress Deutschlandwbm |
|
Wikipedia | ger | Wordpresswbm | Enzyklopädischer Artikel |
Software Guide | ger | Wordpress Blog-Systemwbm | |
Frank Bültge | ger | Wordpress sicherer machenwbm | Sicherheit |
Cywhale | ger | Wordpress absichernwbm | Sicherheit |