Anzeige
Anzeige
Software & Entwicklung
Artikel merken

Sicher bloggen: WordPress mit wenigen Kniffen vor Angriffen schützen

WordPress erfreut sich großer Popularität und rückt damit auch in das Visier von Menschen, die sich unbefugt Zutritt verschaffen wollen. Wie bei jeder Open-Source-Software können Entwickler wie auch Angreifer gleichermaßen den Code einsehen. Die Gefahr von Spam-Links, einer Zerstörung des Blogs und anderen Angriffen ist daher hoch – könnte man meinen. Doch wie dieser Artikel zeigt, sind die Möglichkeiten, WordPress abzusichern, sehr vielschichtig.

8 Min. Lesezeit
Anzeige
Anzeige

Es gibt viele Wege, um eine WordPress-Installation abzusichern. In diesem Artikel werden lediglich jene beleuchtet, die mit geringem Aufwand in WordPress realisiert werden können. Eine Gewichtung ist dabei nur schwer möglich und im Einzelfall immer abhängig von den unterschiedlichen zur Verfügung stehenden Möglichkeiten. Hat man beispielsweise die Option, auf die Konfiguration des Servers zuzugreifen, kann bereits im Vorfeld ein hohes Maß an Sicherheit erreicht werden. Hier soll es lediglich um Sicherheitseinstellungen innerhalb von WordPress gehen.

WordPress sicher installieren

Anzeige
Anzeige

WordPress ist für seine einfache und unkomplizierte Installation bekannt. Diese Tatsache hat unter anderem zur Popularität der Software beigetragen, sorgt aber ebenso dafür, dass viele Einstellungen auf unterschiedlichsten Installationen gleich sind. Dies ermöglicht es Hackern, auf diverse Ausgangspositionen aufzusetzen und sich unbefugten Zutritt zu verschaffen.

Bereits bei der Installation von WordPress sollte man deshalb einige Punkte beachten, die dazu beitragen, dass das eigene Blog weniger Gemeinsamkeiten mit einer Default-WordPress-Installation hat. Eine Installation, die vom Standard abweicht, erschwert potenziellen Eindringlingen den unauthorisierten Zugang. In diesem Zusammenhang sollte man einige Punkte beim Aufsetzen einer neuen Installation von WordPress beachten.

Anzeige
Anzeige

Alle Tipps beschränken sich auf die Möglichkeiten der Basisinstallation ohne Erweiterungen. Es existieren allerdings auch einige nützliche Plugins für mehr Sicherheit in WordPress, die besonders für weniger versierte Nutzer eine Alternative darstellen.

Anzeige
Anzeige

Tabelle-Präfix

Der Zugang zur Datenbank wird in der Datei wp-config.php konfiguriert. In dieser Datei wird auch das Tabellen-Präfix definiert, mit dem WordPress bei der Installation alle erforderlichen Tabellen anlegt. Standardmäßig handelt es sich hierbei um das Präfix „wp_“. Sie sollten immer ein fiktives Präfix vergeben, das nicht dem Standard entspricht. Außerdem sollten Sie darauf achten, dass Sie ausschließlich Zahlen, Buchstaben und Unterstriche verwenden, denn andere Zeichen werden nicht unterstützt.

Authentication Unique Keys

Ebenfalls in der Datei wp-config.php haben Sie die Möglichkeit, vier Sicherheitsschlüssel zu definieren, die die Sicherheit von WordPress erhöhen. Die Schlüssel erzeugen Sie entweder manuell oder über einen
Generator von wordpress.org [1]. Die vier Schlüssel sind verschiedenen Cookies zugeordnet und werden an unterschiedlichen Stellen genutzt, um die Sicherheit von WordPress zu erhöhen, daher ist es auch wichtig, dass jede Installation unterschiedliche Schlüssel hat. Die relevanten Schlüssel sind folgende:

Anzeige
Anzeige
AUTH_KEY Wird genutzt für unsichere Verbindungen via http.
SECURE_AUTH_KEY Mit dieser Konstante lässt sich eine gesicherte Verbindung über https realisieren.
LOGGED_IN_KEY Hält fest, ob sich ein Nutzer eingeloggt hat; nicht administrativer Cookie.
NONCE_KEY Kommt unter anderem bei $_POST-Abfragen von WordPress zum Einsatz und
kann durch Erweiterungen mit der Funktion wp_nonce() genutzt werden.

Wird eine bestehende Installation von WordPress aktualisiert, sollten die Schlüssel entsprechend ergänzt werden, hier am Beispiel von AUTH_KEY:

PHP
define('AUTH_KEY', 'put your unique phrase here'); // Hier gehört eine beliebige, möglichst zufällige Phrase rein

Listing 1

Datei- und Verzeichnisrechte

Unterscheiden Sie die Rechte der Dateien und Verzeichnisse angemessen. Je nach Arbeitsweise – ob Dateien in Themes und Plugins aus dem Backend heraus bearbeitet werden sollen oder ob Dateien abgelegt werden – sollten Sie die Rechte entsprechend setzen. Eingeschränkte Rechte erschweren es einem Angreifer, die Dateien und Verzeichnisse zu verändern.

Suchmaschinen nehmen in der Regel bis zu einer gewisse Tiefe, was sie bekommen können. Verhindern Sie mit Hilfe der Datei „robots.txt“ diesen Zugriff. Die internen Verzeichnisse von WordPress sollten in keinem Suchergebnis auftauchen – ein einfaches „Disallow“ genügt.

Anzeige
Anzeige

Je nach Serverkonfiguration besteht die Möglichkeit, dass man die Inhalte der Ordner im Browser listen kann. Dies gilt es zu verhindern, was durch das Ablegen einer leeren „index.html“ im jeweiligen Verzeichnis schnell erledigt ist. Alternativ kann dies mit Hilfe des Plugins „Secure WordPress“ [2] erledigt werden.

wp-content umbenennen

Alle Erweiterungen, Dateien und Themes werden bei der Standardinstallation im Ordner „wp-content“ abgelegt. Oft öffnen Themes oder Plugins eine Sicherheitslücke im System, daher ist es seit Version 2.6 möglich, diesem Ordner einen willkürlichen Namen zu geben und den Ordner an anderer Stelle abzulegen. Bei einer Neuinstallation ist das einfach und schnell gemacht. Es kann lediglich zu Problemen mit Plugins oder Themes führen, da nicht alle Autoren diesen Pfad mit Hilfe der bereitgestellten Konstanten und Funktionen abfragen. Daher ist diese Möglichkeit nur versierten Nutzern zu empfehlen.

Um den Ordner neu zu definieren, genügt es, diesen mit Hilfe der Konstanten in der wp-config.php festzulegen.

Anzeige
Anzeige
PHP
define('WP_CONTENT_DIR', ABSPATH . 'test');    // wp-content Directory
define('WP_CONTENT_URL', 'http://examble.com/test');    // wp-content UR

Listing 2

Gesicherter Zugang

Mit der Version 2.6 ist eine neue Möglichkeit hinzugekommen, das Backend der Installation abzusichern: der Zugriff via SSL – Secure Sockets Layer ist ein Verschlüsselungsprotokoll zur Übertragung von Daten. Ihr Webspace-Provider muss die Nutzung von SSL allerdings unterstützen. Ist dies der Fall, können Sie das Protokoll in der wp-config.php aktivieren. Um die Möglichkeiten von SSL im Bereich des Backend zu nutzen, müssen Sie die Konstante „FORCE_SSL_LOGIN“ mit „TRUE“ definieren. Von nun an werden alle Daten im Backend verschlüsselt übertragen.

PHP
define ('FORCE_SSL_LOGIN', true);

Listing 3

Sicherheit bestehender Installationen

Auch bestehende Blogs können mit einigen Handgriffen sicherer gestaltet werden. Ist das Blog bereits aktiv und die Datenbank gefüllt, kann das Ändern des Tabellenpräfix fatale Folgen haben. Trotzdem besteht auch hier die Möglichkeit, dem Standard-Präfix den Rücken zu kehren. Dazu sind diverse Schritte mit Hilfe von SQL nötig, die Sie in der dafür zuständigen Oberfläche ausführen. Alternativ kann man diesen Weg mit Hilfe eines Plugins beschreiten. Jede Änderung an der Datenbank bedarf einer Sicherung der aktuellen Datenbank im Vorfeld.

Um alle zehn Standard-Tabellen zu ändern, sind folgende SQL-Anweisungen notwendig. Habe Sie weitere Tabellen, zum Beispiel durch Plugins, müssen in der Regel auch dort die Präfixe geändert werden. Passen Sie das Beispiel „wp_i1d_“ Ihren Anforderungen an.

Anzeige
Anzeige
SQL
RENAME TABLE wp_comments to wp_i1d_comments;
RENAME TABLE wp_links to wp_i1d_links;
RENAME TABLE wp_options to wp_i1d_options;
RENAME TABLE wp_postmeta to wp_i1d_postmeta;
RENAME TABLE wp_posts to wp_i1d_posts;
RENAME TABLE wp_terms to wp_i1d_terms;
RENAME TABLE wp_term_relationships to wp_i1d_term_relationships;
RENAME TABLE wp_term_taxonomy to i1d_term_taxonomy;
RENAME TABLE wp_usermeta to wp_i1d_usermeta;
RENAME TABLE wp_users to wp_i1d_users;

Listing 4

Leider nutzt WordPress bei der Installation das vergebene Präfix auch, um einige Felder in den Tabellen „options“ und „usermeta“ eindeutig zu benennen. Daher müssen Sie auch diese Felder umbenennen.

SQL
UPDATE wp_i1d_options SET option_name = REPLACE(option_name, ’wp_’, ’wp_i1d_’);
UPDATE wp_i1d_usermeta SET meta_key = REPLACE(meta_key, ’wp_’, ’wp_i1d_’);

Listing 5

Da auch Plugins eventuell Felder mit dem Präfix anlegen können, ist es ratsam, wenn Sie nun die Datenbank nach dem alten Präfix durchsuchen und die gefundenen Werte ebenso ändern.

SQL
SELECT * FROM wp_i1d_options WHERE option_name LIKE ’wp_%’;
SELECT * FROM wp_i1d_usermeta WHERE meta_key LIKE ’wp_%’;

Listing 6

Username ändern

Der Benutzername der Standard-Installation ist admin und nicht nur Ihnen bekannt. Nach einer Installation gehört dieser Nutzer gelöscht. Sie sollten unbedingt einen neuen Administrator anlegen. Dies geschieht im Administrationsbereich und sollte die erste Tat nach dem initialen Login sein.

Anzeige
Anzeige

Damit ändern Sie nicht nur den Nutzernamen, sondern auch die ID, die nach der Erstinstallation 1 ist. Zwei Felder, die es einem Angreifer einfach machen, wenn Sie diese nicht ändern.

Möchten Sie sehr große Werte für die ID setzen, so ist die händische Variante im Backend sehr aufwändig, denn WordPress addiert bei jedem neuen Nutzer nur 1 auf. Alternativ können Sie diesen Wert auch per SQL oder mit dem Plugin „Suchen & Ersetzen“ [3] ändern.

SQL
UPDATE 'wp_users' SET 'ID' = '815' WHERE 'wp_users'.'ID' = 1;
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 'link_owner' = '815' WHERE 'wp_links'.'link_owner' = 1;

Listing 7

WordPress-Version nicht preisgeben

Die Version von WordPress wird an vielen Stellen des Blogs ausgegeben, so im Backend, in den Feeds und im Theme. Jede Version hat ihre Eigenarten und Fehler, die potenziellen Angreifern bekannt sind.

Anzeige
Anzeige

Aus diesem Grund sollten Fremde keine Information über Ihre WordPress-Installation erhalten. Die einfachste Form, um die Versionsinformationen aus allen Bereichen (außer dem Backend) zu entfernen, ist die Nutzung des Plugins „Secure WordPress“ [4]. Alternativ genügt es, die Funktion für die Veröffentlichung der Version zu unterbinden.

PHP
add_filter( ’the_generator’, create_function(’$a’, "return null;") );

Listing 8

Fehler- und Hinweismeldungen deaktivieren

Den Backendbereich von WordPress erreicht man via Login mit Benutzernamen und Passwort. Kommt es hier zu Fehlern durch den Nutzer, gibt WordPress entsprechende Tipps, um den Login zu erleichtern. So nützlich die Information für den Anwender ist, so nützlich ist sie auch für unerwünschte Eindringlinge.

Überlegen Sie, ob Sie diese Meldungen zulassen müssen oder wollen, ansonsten können auch diese mit dem bereits erwähnten Plugin „Secure WordPress“ deaktiviert werden.

Sollte in Ihrer wp-config.php die Konstante „WP-DEBUG“ definiert sein, müssen Sie diese auf den Wert „FALSE“ setzen oder löschen, denn ansonsten werden alle Fehler in WordPress im Browser ausgegeben. Diese Konstante sollte nur im Entwicklungsumfeld von WordPress genutzt werden.

PHP
define('WP_DEBUG', false);

Listing 9

Sicherheit per .htaccess

Die Möglichkeiten mit .htaccess sind vielfältig und so kann man auch
WordPress mittels .htaccess hinreichend absichern. Im Einzelnen sollten
die unterschiedlichen Anforderungen dabei geprüft werden, denn nicht
selten leidet die Benutzbarkeit unter den Sicherheitseinstellungen. Betrachten Sie die Sicherheit von WordPress
auch aus Sicht der Nutzer, nicht nur aus der des Administrators. Ebenfalls
sollten Sie die Konfiguration Ihres Webspace beachten, so dass es nicht
zu Fehlern kommt.

Prinzipiell kann jedes Verzeichnis geschützt werden, dabei kommt dem
Ordner „wp-admin“ eine erhöhte Bedeutung zu, denn dort sind die Dateien
für den Zugriff auf das Backend hinterlegt. Der Zugriff wird über
wp-login.php gesteuert und WordPress leitet immer dort hin um, egal
welcher Aufruf in wp-admin unauthorisiert erfolgt. Dabei muss
zusätzliche eine .htpasswd-Datei erzeugt werden, die User und Passwort enthält. Diverse Onlinegeneratoren können beim Erstellen der Dateiinhalte helfen.

PHP
# protect wp-login.php
<files wp-login.php>
AuthName "Admin-Bereich"
AuthType Basic
AuthUserFile /your_lokal_path/.htpasswd
require valid-user
</files>

Listing 10

Wie schon erwähnt, enthält die Datei „wp-config.php“ die Zugänge zur
Datenbank, was sie besonders schützenswert macht. Wenige Zeilen in der
.htaccess des Root helfen hierbei.

PHP
# protect wp-config.php
<files wp-config.php>
Order deny,allow
deny from all
</files>

Listing 11

Sollte die Serverumgebung eine offene Verzeichnisumgebung zulassen, empfiehlt es sich, entweder die angesprochene index.html im
jeweiligen Verzeichnis abzulegen oder per „Options Indexes“ in der
.htaccess den Zugriff zu sperren.

Auch die Ordner „wp-content“ und „wp-includes“ sind schützenswert. Die folgende Syntax zeigt eine
einfache Variante, um den jeweiligen Ordner zu schützen.

PHP
Order Allow,Deny
Deny from all
<Files ~ "js/tinymce/*.$">
Allow from all
</Files>
<Files ~ "\.(css|jpe?g|png|gif|js)$">
Allow from all
</Files>

Listing 12

Die Dateiformate sollten also unbedingt angepasst sowie gegebenenfalls erweitert und getestet werden.
Als Alternative steht Ihnen auch hier eine Plugin-Lösung bereit, die die Sicherheit stark erhöhen kann und Ihnen die Arbeit abnimmt: AskApache Password Protect [5].

Fazit

PHP und Sicherheit wurden und werden häufig im Zusammenhang diskutiert, mitunter treibt dieses Thema Web-Programmierern den Schweiß auf die Stirn. Sicherheit mit PHP ist jedoch keine „Geheimwissenschaft“, bereits mit wenigen Grundlagen kann man eine WordPress-Erweiterung sicherer machen. Auch WordPress selbst liefert dazu Funktionen. WordPress wird viel genutzt, unter unterschiedlichen Konfigurationen und PHP-Versionen, so dass man das Thema vielschichtig und komplex behandeln kann. Die vorgestellten Tipps sind einfache und fast überall umsetzbare Hinweise, die man nicht leichtfertig ignorieren sollte, wenn man sein Blog kontrolliert administrieren will.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
3 Kommentare
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Frank

Zum Theme „Username ändern“ möchte ich noch ergänzen, da ich hier im Artikel einen Eintrag in der Datenbank vergessen habe; eventuell kann man das im Artikel nachpflegen.

UPDATE `wp_users` SET `ID` = '815' WHERE `wp_users`.`ID` = 1;
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 `link_owner` = '815' WHERE `wp_links`.`link_owner` = 1;

Antworten
Florian Endres

Die Änderung wurden eingetragen. Der Code ist nun so, wie von Frank in den Kommentaren angemerkt.

Antworten
Hier Viel mehr

Okay, meckern können wir alle. Wie wäre es mit etwas Konstruktivem, Mr. Kreativ…? Ich hätte mir am Ende des Artikels schon ein paar mehr Fakten erwünscht. So bleibt es einfach nur ein billiger Abklatsch von Weisheiten, die wir schon aus “Fight Club” kennen. Sorry. Von Leuten, die auf hohem Niveau meckern, halte ich GAR NICHTS.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige