Mit mehreren hundert Millionen Installationen ist WordPress weltweit das beliebteste Content-Management System (CMS). Diese Beliebtheit macht WordPress-Installationen aber auch zu einem der Top-Ziele für Angriffe und Einbruchsversuche. Natürlich wird das System fortlaufend weiterentwickelt und etwa auftretende Sicherheitslücken umgehend geschlossen. Darüber hinaus kann aber jeder Betreiber einer WordPress-Installation mit ein paar einfachen Maßnahmen die Sicherheit seines Systems erheblich verbessern.

Die Installation – Sicherheitslücken von Anfang an schließen

Die einfache Installation dürfte einer der Hauptgründe für die Beliebtheit von WordPress sein. Um es auch weniger technikaffinen Nutzern leicht zu machen, werden die individuellen Einstellungen auf ein Minimum reduziert, so dass lediglich ein paar Einträge in der Konfigurationsdatei „wp-config.php“ genügen, um die Installation vorzubereiten. Damit einher gehen jedoch Standardeinstellungen, die es Angreifern unnötig leicht machen. Dies betrifft das Tabellen-Präfix und den Standard-Nutzernamen.

Standardeinstellungen ändern: Ordnernamen, Tabellen-Präfix „wp_“ und Nutzername „admin“

Häufig werden die WordPress-Dateien auf dem Server in einem Unterordner abgelegt, und dieser Ordner bekommt dann den Namen „wordpress“ oder „wp“. Das ist zwar übersichtlich, erleichtert es einem Angreifer aber auch zu erkennen, welches System auf dem Server installiert ist. Wählen sie deshalb einen Namen, der keinen Bezug zu WordPress enthält.

Viele Provider erlauben im jeweiligen Konfigurationsbereich ihrer Kunden eine automatische Installation von WordPress. Auch hier werden die WordPress-Dateien dann in aller Regel in ein Unterverzeichnis mit Namen „wordpress“ kopiert. Unmittelbar nach der Installation können sie dieses Verzeichnis z.B. via FTP-Zugang einfach umbenennen. Solange sie keine Inhalte erstellt oder Dateien über WordPress hochgeladen haben, wird das System auch unter der geänderten Adresse einwandfrei funktionieren.

Bei der Installation legt WordPress die erforderlichen Tabellen in der verwendeten Datenbank an. Um diese Tabellen eindeutig zu kennzeichnen, wird jedem Tabellennamen ein einheitliches Präfix vorangestellt. Standardmäßig ist das „wp_“. Gelingt es einem Angreifer die Datenbankinformationen auszulesen, erkennt er an diesem Präfix sofort, dass es sich um eine WordPress-Installation handelt und kann dann gleich die richtigen Hebel ansetzen.

Es ist daher sinnvoll, das Standardpräfix durch ein eigenes zu ersetzen. Dazu braucht vor der Installation lediglich der entsprechende Eintrag in der Konfigurationsdatei „wp-config-php“ geändert zu werden:

$table_prefix  = 'wp_';   // Nur Zahlen, Buchstaben und Unterstriche bitte!

Ebenfalls in der Konfigurationsdatei „wp-config.php“ werden die Sicherheistsschlüssel festgelegt:

/**#@+
* Sicherheitsschlüssel
*
* Ändere jeden KEY in eine beliebige, möglichst einzigartige Phrase.
* Auf der Seite {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} 
* kannst du dir alle KEYS generieren lassen.
* Bitte trage für jeden KEY eine eigene Phrase ein. Du kannst die Schlüssel jederzeit wieder ändern, 
* alle angemeldeten Benutzer müssen sich danach erneut anmelden.
*
* @seit 2.6.0
*/
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

Anhand dieser Schlüssel werden die Daten verschlüsselt, die beim einloggen eines Nutzers in Form sogenannter Cookies auf dessen Rechner gespeichert werden. Zwar funktioniert WordPress auch ohne diese Schlüssel, sicherer ist es aber mit! Vor der Installation also einmal die angegebene URL besuchen und die dort angezeigten Angaben einfach in die „wp-config.php“ kopieren.

Unmittelbar vor der Installation werden in einem Formular einige Grundeinstellungen abgefragt, darunter auch der Benutzername für den Administrationszugang. WordPress schlägt hier standardmäßig „admin“ vor. Wählen sie unbedingt einen anderen Nutzernamen! Mehr dazu direkt im nächsten Abschnitt.

Sicherheit geht über Bequemlichkeit – sichere Benutzernamen und Passwörter.

Kennen sie die weltweit beliebtesten Passwörter? Sie lauten „password“ und „123456“! (http://t3n.de/news/beliebtesten-passworter-welt-403475/) Sehr beliebt sind auch der eigene Name, die Namen von Partner und Kindern oder der Firma. Solche Passwörter lassen sich zwar leicht merken, können aber ebenso leicht erraten werden.

Screenshot WordPress Installation

„admin“ wird bei der Installation von WordPress als Nutzername vorgeschlagen. Wählen sie unbedingt einen anderen Namen!

Bei der Installation von WordPress muss immer der Zugang für den Administrator angelegt werden. Unsinnigerweise schlägt WordPress selbst an dieser Stelle als Benutzernamen „admin“ vor. Wird nun als Passwort „123456“ gewählt, haben sie praktisch der gesamten Menschheit automatisch Zugang zum Administrationsbereich ihrer Website gestattet!

Sichere Benutzernamen und Passwörter haben keinen Zusammenhang zu ihrem Namen oder dem von Angehörigen oder ihrer Firma, und auch nicht zu ihrem Geburtsdatum oder Hochzeitstag. Sichere Benutzernamen und Passwörter bestehen aus einer zufälligen Abfolge von Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen, wie z.B.:

Benutzername: ,s=$eVL)0/<b
Passwort: q_O_71Puf?Av

Solche Passwörter kann niemand erraten. Dummerweise kann sie sich aber natürlich auch niemand merken, doch dafür gibt es praktische kleine Helferlein, genannt Passwortmanager. Bereits jeder gängige Browser verfügt über diese Funktion. Ist sie aktiviert, werden nach Aufrufen des Login-Formulars automatisch Benutzername und Passwort eingetragen. Bei mehreren möglichen Benutzern erhalten sie eine Auswahlliste. Der Browser speichert diese Zugangsdaten verschlüsselt auf ihrem Rechner.

Alternativ gibt es auch Stand-Alone-Anwendungen, die sie z.B. auf einem USB-Stick ablegen können. Um auf ihre gesammelten Zugangsdaten zugreifen zu können, vergeben sie ein Master-Passwort – selbstredend nicht „123456“. Genauso sichern sie auch ihren PC oder ihr Notebook ab.

Screenshot Firefox Einstellung Passwörter speichern

Aktivierung des Passwortmanagers von Firefox unter Einstellungen -> Sicherheit.

Screenshot WordPress Passwortstärke

WordPress bewertet das gewählte Passwort als schwach.

Screenshot WordPress Passwortstärke

WordPress bewertet das gewählte Passwort als stark.

Tipp:

WordPress prüft während der Eingabe die Passwortstärke und zeigt sie in Form eines Farbfeldes an. Beachten sie die Anzeige und wählen sie nur starke Passwörter!

Tipp:

Für alle denen es zu mühsam ist, sich solche Zeichenkombinationen selbst auszudenken, gibt es Passwortgeneratoren. Dort können sie sowohl die Länge einstellen, als auch erlaubte und verbotetene Zeichen definieren. Es gibt auch entsprechende Addons für alle gängigen Browser, z.B. https://addons.mozilla.org/de/firefox/addon/pwgen-password-generator/.

Screenshot WordPress Login

Der eingebaute Passwortmanager trägt die Zugangsdaten automatisch ein.

Tipp:

Sie haben WordPress bereits installiert und dabei „admin“ als Nutzernamen eingestellt? Kein Problem! Sie können auch nachträglich zu einem sichereren Nutzernamen wechseln, indem sie unter dem Menüpunkt „Benutzer“ einen neuen Nutzer mit Administratorrechten anlegen, sich abmelden, dann mit dem neuen Nutzernamen anmelden und den alten Benutzer „admin“ löschen. Alle Inhalte des alten Nutzers „admin“ können dann automatisch auf den neuen Nutzer übertragen werden. Eine ausführliche Anleitung gibt es hier: http://www.business2community.com/tech-gadgets/delete-the-wordpress-admin-user-to-improve-security-0172558.

Dateien vor fremdem Zugriff schützen mit .htaccess

Die meisten Hoster betreiben ihre Server mit dem Betriebssystem Linux. Unter Linux lassen sich Datei- und Verzeichniszugriffe durch geeignete Anweisungen in einer Datei mit Namen „.htaccess“ steuern. Diese Datei kann normalerweise vom Nutzer verändert werden und erlaubt eine ganze Reihe von Sicherheitsmaßnahmen. So lässt sich z.B. die Konfigurationsdatei „wp-config.php“ vor fremdem Zugriff schützen. Die Informationen in dieser Datei können dann nicht von außen gelesen werden, sondern nur noch vom WordPress-System auf dem eigenen Server.

Codebeispiel für den Zugriffsschutz der Dateien „wp-config.php“, „liesmich.html“ und „readme.html“

<FilesMatch "(wp-config.php|liesmich.html|readme.html)">
  order deny,allow
  deny from all
</FilesMatch>

(Quelle: http://torstenlandsiedel.de/2012/08/16/wordpress-und-die-sicherheit/)

Hinweis:

Bei korrekt konfiguriertem Webserver ist diese Massnahme nicht erforderlich, da alle WordPress-Dateien bei der Installation mit sicheren Dateiberechtigungen versehen werden. Sie können das einfach überprüfen, indem sie versuchen, die „wp-config.php“ in ihrem Browser aufzurufen: www.ihredomain/wordpress-verzeichnis/wp-config.php. Auch ohne zusätzlichen Schutz mit Hilfe der „.htaccess“ sollte der Zugriff verweigert werden.

Hinweis:

Über die Datei „.htaccess“ lassen sich sehr viele Einstellungen vornehmen und bei Veränderungen dieser Datei ist deshalb größte Sorgfalt geboten. Tippfehler, fehlerhafte Anweisungen oder Konflikte durch sich gegenseitig beeinflussende Konfigurationen können dazu führen, dass ihre Webseite nicht mehr aufgerufen werden kann. Prüfen sie deshalb genau, ob eine veränderte „.htaccess“ auch tatsächlich funktioniert und machen sie vor jeder Veränderung immer ein Backup ihrer ursprünglichen „.htaccess“.

WordPress tarnen: Generator-Meta-Tag entfernen

Standardmäßig schreibt WordPress Informationen über sich selbst in den HTML-Kopf jeder an einen Browser gesendeten Webseite, z.B.

<meta name="generator" content="WordPress 3.4.2">

Damit erhält ein Angreifer nicht nur die Information, dass es sich hier um eine WordPress-Installation handelt, er erfährt sogar noch die Version und kann nun gleich noch gezielter bei deren spezifischen Schwachstellen ansetzen.

Mit einer kleinen Code-Zeile in der Datei „functions.php“ des aktiven Themes kann die Anzeige dieser Informationen unterdrückt werden:

remove_action('wp_head', 'wp_generator');

Schutz vor Script-Injection

Durch das böswillige Einschleusen von Datenbank-Befehlen kann ein Angreifer Daten ausspähen oder verändern und im Extremfall sogar Administrationsrechte im System erlangen. Zusätzlich zu den in WordPress bereits eingebauten Sicherheitsmassnahmen können SQL-Injections durch ein paar Code-Zeilen in der oben bereits vorgestellten Datei „.htaccess“ abgefangen werden:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\&lt;|%3C).*script.*(\&gt;|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

(Quelle: http://wp.tutsplus.com/tutorials/security/imposing-ssl-and-other-tips-for-impenetrable-wp-security/)

Hinweis:

Über die Datei „.htaccess“ lassen sich sehr viele Einstellungen vornehmen und bei Veränderungen dieser Datei ist deshalb größte Sorgfalt geboten. Tippfehler, fehlerhafte Anweisungen oder Konflikte durch sich gegenseitig beeinflussende Konfigurationen können dazu führen, dass ihre Webseite nicht mehr aufgerufen werden kann. Prüfen sie deshalb genau, ob eine veränderte „.htaccess“ auch tatsächlich funktioniert und machen sie vor jeder Veränderung immer ein Backup ihrer ursprünglichen „.htaccess“.

Es kann nur einen geben: Keine unnötigen Administratorrechte für weitere Benutzer

Der Zugriff auf unterschiedliche Inhalte durch verschiedene Benutzer gehört zu den elementaren Funktionen eines CMS. So können z.B. mehrere Autoren Beiträge verfassen oder eigenständige Bereiche einer Internetpräsenz pflegen. WordPress sieht dafür verschiedene Benutzergruppen vor, die über genau definierte Rechte verfügen. „Autoren“ können lediglich ihre eigenen Beiträge und Seiten einsehen und bearbeiten. „Redakteure“ haben Zugriff auf alle Seiten und Beiträge, können aber keine Systemeinstellungen verändern. Nur „Administratoren“ haben Zugriff auf sämtliche Funktionen und nur ein Administrator kann weitere Benutzer anlegen.

Sind für ihre Internetpräsenz mehrere Benutzer erforderlich, sollten diese immer nur über die unbedingt erforderlichen Rechte verfügen. Und es sollte nur einen Administrator geben. Die Zugangsdaten jedes zusätzlichen Benutzers sind eine weitere Tür in den Administrationsbereich ihrer WordPress-Installation. Verwenden sie deshalb immer sichere Benutzernamen und Passwörter, wie oben bereits beschrieben.

Benutzernamen verschleiern mit „Edit Author Slug“

Wer in seinem WordPress-Theme das Template für die Ausgabe der Beiträge/Artikel eines Autors nutzt (author.php) oder anderweitig zu den Benutzernamen verweist, verrät über die Links die Nutzernamen für den Login. Ein Beispiel:

www.ihreseite.de/author/xy-login/

Dieser Link verweist auf alle Beiträge des Benutzers mit dem Login-Namen xy-login. WordPress verwendet im Link nämlich nicht den Klarnamen des Nutzers, sondern einen sogenannten „slug“. Und der besteht einfach aus dem Login-Namen! Damit ist einem potenziellen Angreifer bereits eine Hälfte eines Accounts bekannt. Gibt es nur einen Nutzer, kennt der Angreifer damit sogar den Login-Namen des Administrators! Alle sorgfältig beachteten Tipps zu sicheren Nutzernamen wären damit ausgehebelt!

Abhilfe schafft das kleine Plugin „Edit Author Slug„, mit dessen Hilfe man den slug im Link durch einen beliebigen Namen ersetzen kann. Nach Aktivierung erscheint am Ende der Profilseite ein neues Feld für den neuen slug, in das Sie dann z.B. den Klarnamen in Form von „vorname-nachname“ (am besten nur Kleinbuchstaben und Bindestrich verwenden, keine Leerzeichen) eingeben. Der Beispiellink oben ändert sich damit in

www.ihreseite.de/author/vorname-nachname/

und verrät nichts mehr über den Login-Namen.

Abwehr von Brute-Force-Attacken

Passwörter können allein dadurch geknackt werden, dass mit Hilfe eines Computerprogramms automatisch und schnell hintereinander die möglichen Zeichenkombinationen ausprobiert werden. Solche Brute-Force-Attacken sind mit die häufigsten Einbruchsversuche in den Administrationsbereich von WordPress-Installationen.

Die wichtigste Maßnahme zur Abwehr sind sichere Benutzernamen und Passwörter. Allein durch einen anderen Nutzernamen als „admin“ wird den meisten derartigen Angriffen bereits ein Riegel vorgeschoben. Denn die meisten Programme die automatisch das Netz nach WordPress-Installationen durchsuchen und dann versuchen durch simples ausprobieren dort einzubrechen, versuchen es mit dem Standardbenutzernamen.

Screenshot WordPress Plugin Limit Login Attempts

Mit dem Plugin Limit Login Attempts lassen sich Brute-Force-Attacken einfach abwehren.

Screenshot WordPress Plugin Antivirus

Das Plugin Antivirus scannt die Template-Dateien automatisch auf eingeschleußte Schadsoftware.

Zusätzliche Sicherheit verschafft das kleine Plugin Limit Login Attempts. Es registriert Login-Versuche und sperrt nach einer zuvor festgelegten Anzahl falscher Eingaben weitere Versuche von dem jeweiligen Rechner. In den Einstellungen kann genau festgelegt werden, wieviele Login-Versuche zulässig sind und wie lange die IP-Adresse eines Rechners gesperrt wird.

Allerdings gibt dieses Plugin keine absolute Sicherheit. Bei sogenannten Distributed-Brute-Force-Attacken wechselt schon nach wenigen Versuchen der angreifende Rechner und damit wird eine IP-Sperre unterlaufen. Dagegen helfen dann in erster Linie sichere Nutzernamen und Passwörter.

Template-Dateien automatisch auf Schadsoftware prüfen

Erlangt ein Angreifer Zugriff auf die Dateien eines WordPress-Themes, kann er dort Schadsoftware einschleusen, wie etwa Spamversand. Das Plugin Antivirus scannt automatisch die Template-Dateien des aktiven Themes und meldet verdächtige Veränderungen.

Screenshot WordPress Plugin BackWPup

Das Plugin BackWPup erlaubt die automatische Sicherung von Datenbank und Dateien.

Automatisches Backup von Datenbank und Dateien

Stets aktuelle Sicherungskopien einer WordPress-Installation begrenzen den Schaden nach erfolgreichen Angriffen ebenso wie bei Datenverlust durch Hardware-Probleme oder fehlerhafte Bedienung. Ein regelmäßiges Backup der Datenbank und auch des gesamten Systems gehört deshalb unbedingt zu jeder WordPress-Installation. Es gibt dafür eine ganze Reihe verschiedener Plugins, besonders gute Erfahrungen habe ich mit BackWPup gemacht.

BackWPup sichert wahlweise Datenbank, Dateien und Uploads. Es können verschiedene Backup-Aufträge definiert und in beliebigen Zeitintervallen automatisch ausgeführt werden. Die Datensicherungen lassen sich auf dem Server abspeichern, aber auch automatisch in diversen Cloud-Diensten ablegen oder an eine E-Mail-Adresse versenden.

Screenshot WordPress Aktualisierungen

Mit wenigen Klicks bringen sie Plugins und WordPress auf den aktuellen Stand.

WordPress aktuell halten

WordPress wird permanent weiterentwickelt. Dabei werden nicht nur Funktionen und Bedienung verbessert und erweitert, es werden auch Sicherheitslücken geschlossen. Die neueste WordPress-Version ist daher auch immer die sicherste. Halten sie deshalb ihre WordPress-Installation immer auf dem neuesten Stand. Sobald eine neue Version verfügbar ist, werden sie im Dashboard darüber informiert und können mit wenigen Klicks updaten. Gleiches gilt auch für die verwendeten Plugins.

Hinweis:

Wer Plugins nutzt – und wer tut das nicht – muss vor einem Update von WordPress selbst die Plugins ebenfalls auf den neuesten Stand bringen. Es kann dabei passieren, dass verwendete Plugins nicht in der gleichen Geschwindigkeit weiterentwickelt werden, wie WordPress, und unter Umständen mit der neuesten Version nicht kompatibel sind. In diesem Fall müssen sie mit dem Update warten, bis auch das Plugin aktualisiert ist. Oder sie suchen nach einem alternativen Plugin. Informationen dazu finden sie auf der jeweiligen Plugin-Seite im offiziellen WordPress Plugin-Directory.

Administration über SSL verschlüsseln

SSL bzw. neu TLS ist ein Internetprotokoll zur verschlüsselten Übertragung von Informationen. Sowohl der Login als auch der Administrationsbereich selbst können bei WordPress über dieses Übertragungsprotokol betrieben werden. Damit ist es für Angreifer erheblich schwieriger etwa Zugangsdaten abzufangen.

Um SSL verwenden zu können muss dieses Übertragungsprotokoll jedoch von ihrem Webserver unterstützt werden. Zudem wird ein sogenanntes Zertifikat benötigt, für dessen Verwendung in der Regel zusätzliche Kosten in der Größenordnung von 60 Euro pro Jahr anfallen.

Wird SSL unterstützt und ist ein Zertifikat vorhanden genügen zwei einfache Anweisungen in der Konfigurationsdatei „wp-config.php“ um Login und Adminstrationsbereich verschlüsselt zu betreiben:

/* SSL-Verschlüsselung aktivieren */
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Ohne Zertifikat wird zwar auch das Verschlüsselungs-Protokoll genutzt – sofern vom Server unterstützt – da die sichere Übertragung aber nicht geprüft werden kann, bietet dieses Vorgehen keinen Schutz gegen sogenannte Man-in-the-Middle-Angriffe.

Fazit

Mit ein paar einfachen Maßnahmen kann jede WordPress-Installation zusätzlich gegen Angriffe und Einbruchsversuche abgesichert werden. Am wichtigsten ist dabei die Wahl von sicheren Nutzernamen und Passwörtern.

 

10. Januar 2013 | Blog, Tutorial, Webdesign | 16.177 views

Tags: , , ,