Das CMS WordPress erfreut sich großer Beliebtheit und hat sich in den letzten Jahren zum führenden CMS im Open-Source Bereich gemausert. Damit rückt WordPress aber auch immer mehr ins Fadenkreuz von Hackern, die geschickt Sicherheitslücken und Flüchtigkeitsfehler im Bezug auf die WordPress Sicherheit ausnutzen. In meinem Beitrag verrate ich euch, wie ihr Angreifern das Leben zur Hölle macht und eure WorPress Website zu einer wahren Festung aufrüstet.

Der WordPress Security Guide wird kontinuirlich aktualisiert und ergänzt. Letzte Aktualisierung: 04.06.2016.

Installation – WordPress Sicherheit von Anfang an

Bereits bei der Installation gibt es einige Sicherheitsmaßnahmen zu beachten. Während der Installation könnt ihr für eure Datenbanktabellen eine Präfix angeben. Der Standard bei WordPress ist die Tabellen-Präfix “wp_”. Diese kleine Zeichenbeigabe wird allen euren Tabellennamen in eurer MySQL-Datenbank vorangestellt. Die Namen der Tabellen würde also z.B. “wp_posts”, “wp_comments”, usw. lauten.

Das ist natürlich eher suboptimal, da Angreifer bei einer SQL-Injection Attacke zuerst diese Präfix ausprobieren werden. Ihr solltet also bei der Installation eine andere Präfix verwenden wie beispielsweise “f33xZ_”. Was aber, wenn ihr bereits eine WordPress-Website im laufenden Betrieb habt und jetzt feststellt, dass eure Datenbanktabellen mit der Standard-Präfix beginnen? Kein Problem… ihr könnt die Präfixe der Tabellen auch im Nachhinein noch ändern. Geht dazu einfach wie folgt vor:

  1. Öffnet die Datei wp-config.php in eurem WordPress-Verzeichnis. Hier solltet ihr jetzt nach dieser Zeile suchen
    $table_prefix = 'wp_';

    und diese wie folgt ändern (ich bleibe unserem Beispiel-Präfix “f33xZ_”)

    $table_prefix = 'f33xZ_';
  2. Loggt euch in eure Datenbank ein (z.B. phpMyAdmin) und wählt die Datenbank eurer Website aus. Mit diesem SQL-Code ändert ihr die Namen eurer Tabellen
    RENAME TABLE 'wp_commentmeta' TO 'f33xZ_commentmeta';
    RENAME TABLE 'wp_comments' TO 'f33xZ_comments';
    RENAME TABLE 'wp_links' TO 'f33xZ_links';
    RENAME TABLE 'wp_options' TO 'f33xZ_options';
    RENAME TABLE 'wp_postmeta' TO 'f33xZ_postmeta';
    RENAME TABLE 'wp_posts' TO 'f33xZ_posts';
    RENAME TABLE 'wp_terms' TO 'f33xZ_terms';
    RENAME TABLE 'wp_term_relationships' TO 'f33xZ_term_relationships';
    RENAME TABLE 'wp_term_taxonomy' TO 'f33xZ_term_taxonomy';
    RENAME TABLE 'wp_usermeta' TO 'f33xZ_usermeta';
    RENAME TABLE 'wp_users' TO 'f33xZ_users';
  3. Aktualisiert jetzt ebenfalls in der SQL-Eingabekonsole die User-Meta Felder
    UPDATE 'f33xZ_usermeta' SET 'meta_key' = REPLACE( 'meta_key', 'wp_', 'f33xZ_' )
  4. Zum Schluss müsst ihr nur noch die Options-Tabelle von WordPress aktualisieren
    UPDATE 'f33xZ_options' SET 'option_name' = 'f33xZ_user_roles' WHERE 'option_name' = 'wp_user_roles'

Ok… SQL-Befehle sind nicht jedermanns Sache, auch wenn es sehr fix geht und ihr nicht auf externe Tools angewiesen seid. Als automatische Alternative gibt es natürlich auch dafür ein WordPress-Plugin – Change DB Prefix.

Benutzernamen – Häufige Fehler & Best-Practice

Als nächstes solltet ihr euch euren Benutzern widmen – vor allem dem Administrator-Konto. Überlegt euch für den Benutzernamen des Administrators eine individuelle Namenskombination. Ihr solltet dabei auf keinen Fall die Standardnamen wie z.B. “admin”, “administrator”, “test”, “demo”, “wordpress”, “webmaster”, “webadmin” oder “benutzer”  verwenden! Nutzt auch nicht euren Vornamen, Nachnamen oder die Kombination Vorname + Nachname. All diese Namensvarianten werden zuerst bei einer Brute-Force Attacke getestet. Habt ihr keinen dieser Benutzernamen, dann macht ihr es dem Angreifer schon sehr viel schwerer bis fast unmöglich euren Benutzernamen zu erraten. Ein elementarer Tipp, um eure WordPress Sicherheit zu erhöhen!

Aber bleiben wir noch etwas beim Administrator-Konto… das ist nämlich noch lange nicht alles was ihr beim Administrator beachten solltet. Dieses Konto solltet ihr wirklich nur für die technische Verwaltung (z.B. Updates, Backups, Installationen, etc.) nutzen. Für die tägliche Arbeit auf eurer Website, also Beiträge schreiben und Kommentieren, solltet ihr euch einen gesonderten Benutzer anlegen, der nur die Benutzerrechte eines Autors hat.

Für den täglichen Gebrauch ist diese Rechtestufe völlig ausreichend. Aber warum das Ganze? Wenn ihr mit eurem Autor schreibt und die Beiträge/Seiten veröffentlicht, wird euer Administrator nirgendwo auf eurer Seite erwähnt geschweige denn verlinkt. Bei der Wahl des Benutzernamens solltet ihr, trotz der niedrigeren Rechte des Autors, Sorgfalt bei der Namensvergabe walten lassen. Berücksichtigt also die gleichen Anforderungen, die ich bereits beim Administrator angesprochen habe. Kein “admin”, Vorname… und so weiter.

Starke Passwörter für mehr Sicherheit

Einer der zweitgrößten Fehler bei der WordPress Sicherheit ist ein zu leichtes Passwort. Mittlerweile hat WordPress eine hauseigene Funktion die euch zeigt ob euer Passwort sicher ist.

WordPress Passwort Sicherheit in 4 Stufen (ganz schwach, schwach, mittel, stark)

WordPress Passwort Sicherheit: Das System zeigt euch die Stärke eures Passworts in 4 Stufen an – ganz schwach, schwach, mittel, stark.

Mit Hilfe dieser Prüfpunkte wird euer Passwort bombensicher:

  • Mindestens 12 Zeichen lang
  • Groß- und Kleinschreibung, Sonderzeichen und Ziffern werden genutzt
  • Keine Wörter aus dem Wörterbuch benutzen
  • Keine Standard-Tastaturmuster wie z.B. “asdfgh” oder “123456abcdef” verwenden
  • Nicht einfach nur eine Zahl und eine Zahl am Ende eures Passworts anhängen

Sehr hilfreich sind übrigens Passwort-Generatoren. Im Bruchteil einer Sekunde habt ihr so ein sicheres Passwort erzeugt.

Benutzerrechte korrekt vergeben

Nicht jeder Benutzer darf und muss als Administrator unterwegs sein. Macht euch daher mit den Rollen und Rechten von WordPress vertraut. Damit erlangt ihr ein grundlegendes Verständnis, wie ihr am besten die Rechte eurer Benutzer vergebt und damit eure WordPress Sicherheit erhöht.

Berücksichtigt dabei die folgenden Grundsätze:

  • Höhere Rechte nur an Benutzer vergeben, die diese auch wirklich benötigen
  • Vergebt die Rechte nur, wenn diese wirklich benötigt werden
  • Vergebt die Rechte nur solange, wie diese benötigt werden

Ein einfaches Beispiel: Ein Entwickler in eurem Unternehmen muss sich die Konfigurationsmöglichkeiten eines Plugins anschauen. Er benötigt dafür ca. 1/2 Tag. Nur für diesen Zeitraum erhält er auf seinen Benutzer die Administratorrechte. Am Ende der Frist wird der Account entweder komplett gelöscht oder wieder auf die alte Berechtigung herabgesetzt.

WordPress Secret-Keys ändern

Nach der Installation solltet ihr noch die Secret-Keys in der wp-config.php ändern. Die Keys dienen der Verschlüsselung und werden z.B. beim Login-Cookie verwendet. Nutzt dafür am besten den Secret-Key Generator von WordPress und ersetzt die vorhandenen Keys durch die neuen. Bei jedem Laden der Seite werden übrigens neue Schlüsselpaare generiert.

WordPress Security Keys - auch Salts genannt.

WordPress Sicherheit – Die Security Keys: Die Keys (auch Salts genannt) werden zur Verschlüsselung genutzt.

Zugriffsschutz für die wp-config.php und die .htaccess

Die wp-config.php und die .htaccess sind die zwei mächtigsten Dateien einer WordPress-Website. Mit der .htaccess gebt ihr eurem Server direkte Befehle und Konfigurationen mit. So könnt ihr z.B. den PHP-Speicher steuern, Weiterleitungen einrichten und vieles mehr. Die Sicherheitsbefehle für die .htaccess werdet ihr im weiteren Verlauf  auch einsetzen. Die wp-config.php ist die Konfigurationsdatei eurer WordPress-Installation. Hier werden u.a. die Zugangsdaten und das Tabellen-Präfix gespeichert.

Diese beiden Dateien beinhalten also Informationen, die unter keinen Umständen in die falschen Hände geraten sollten! Der externe Zugriff auf diese Dateien muss im Sinne einer soliden Wordpress Sicherheit also unbedingt verhindert werden!

Für die wp-config.php gibt es im Grunde 2 Möglichkeiten:

  1. WordPress erlaubt es euch die wp-config.php in eine höhere Verzeichnisebene zu verschieben. Diesen Punkt erachte ich allerdings als nicht zielführend. Denn beim Ausnutzen einer Sicherheitslücke im PHP-CGI Interpreter kann der Quelltext der PHP-Datei trotzdem ausgelesen werden. Das Verschieben der Datei bringt euch also nur bedingt etwas. Deshalb setze ich auf Variante 2, mit der wir auch unsere .htaccess schützen.
  2. Die wesentlich zuverlässigere Sicherungsmethode ist das Setzen eines Zugriffsschutzes auf die wp-config.php, wodurch ein Aufruf im Browser vollständig unterbunden wird.

Um also eure wp-config.php und die .htaccess abzusichern müsst ihr nur folgende Codezeilen in eure .htaccess einfügen:


  order allow,deny
  deny from all

  order allow,deny
  deny from all

Mit dieser Anweisung wird nun nicht mehr einfach ein leeres Browserfenster angezeigt und die Datei ausgeführt, sondern es wird der Zugriff verweiger und der Status-Code 403 zurückgegeben.

Zugriffsschutz auf die wp-config.php

Zugriffsschutz auf die wp-config.php – Es wird der Statuscode 403 zurückgegeben.

Verzeichnis-Browsen deaktivieren

Standardmäßig sollte das Verzeichnis-Browsen bei jedem Webserver deaktiviert sein. Ihr könnt es bei eurer Website ganz einfach testen in dem ihr z.B. www.example.com/wp-content eingebt. Der Browser sollte euch nichts anzeigen. Sollte dies nicht der Fall sein, dann könnt ihr dies über die .htaccess steuern:

# Deactivate Directory Listings
Options -Indexes

Habt ihr keinen Zugriff auf die .htaccess, dann kontaktiert euren Hosting-Anbieter! Das ist eine wichtige und einfache Maßnahme für eure WordPress Sicherheit, bei der euch euer Hoster mit Freuden unterstützen sollte!

Datei-Editor deaktivieren

Sollte sich doch einmal ein unliebsamer Besucher einen Zugang zu eurem WordPress-Backend verschafft haben, kann er über den Datei-Editor ganz bequem Schadcode in eure Website einschleusen. Den Editor erreich ihr unter Design -> Editor & Plugins -> Editor.

Um dies zu verhindern, solltet ihr den Datei-Editor über die wp-config.php deaktivieren, indem ihr folgende Zeile hinzufügt bzw. ändert:

define('DISALLOW_FILE_EDIT', true);

Risikofaktor: Die XML-RPC Schnittstelle

Die XML-RPC Schnittstelle (Blogger API, metaWeblog API, Movable Type API, Pingback API) dient der Kommunikation mit externen Diensten um z.B. Blogbeiträge über Word, Smartphone-Apps und anderen Diensten zu veröffentlichen bzw. zu bearbeiten. Den meisten von euch dürfte aber die Pingback- und Trackback-Funktion von WordPress am bekanntesten sein. Über diese Schnittstelle werdet ihr informiert, wenn eine andere WordPress-Website auf euch verlinkt. Im Gegenzug werden andere WordPress-Websites informiert, wenn ihr einen Link auf ihre Seite setzt.

Im Grunde bietet die XML-RPC Schnittstelle eine komfortable und interessante Funktionserweiterung für WordPress. Vor allem die Pingback API erachte ich als äußerst nützlich.

Allerdings hat die XML-RPC Schnittstelle im Bezug auf die WordPress Sicherheit eine große Schwäche! Bei jeder Kommunikation mit der API findet eine Authentifizierung über den Benutzernamen und das Passwort statt. Diese Kommunikation übernimmt die xmlrpc.php Datei, worüber sagenhafte 500 Loginabfragen gleichzeitig an eure Website geschickt werden können. Das Schöne/Schlimme dabei ist, dass euer Server dabei eine Antwort zurücksendet, welche Zugangsdaten denn nun richtig oder falsch waren.

Damit ist eine Brute-Force Attacke noch wesentlich effizienter als über die wp-login.php. Ein Traum für jeden Angreifer also! Um euch davor zu schützen könnt ihr die XML-RPC vollständig über die .htaccess deaktivieren, was zu einem HTTP-Status 403 (Forbidden) führt:

#Deny access to xmlrpc.php

 order allow,deny
 deny from all

Anschließend noch die Schnittstelle in eurer functions.php deaktivieren und schon sind keine Angriffe über die Schnittstelle möglich. Der schöne Nebeneffekt ist, dass ihr euren Server durch das Unterbinden der unnötigen Aufrufe zusätzlich entlastet.

/**
 * Disable XML-RPC API
 */
add_filter( 'xmlrpc_enabled', '__return_false');
/**
 * Remove XML-RPC from Head
 */
remove_action( 'wp_head', 'rsd_link');

Aber Achtung! Manche Plugins wie z.B. Jetpack benötigen die XML-RPC Schnittstelle. Erkundigt euch im Einzelfall, wie ihr die API am besten absichert. Wie das für Jetpack funktioniert, erfahrt ihr hier.

Achtung bei externen Plugins und Themes!

Mit jedem Plugin und Theme holt ihr euch Fremdcode auf eure Seite, die wiederum ein unbekanntes Risiko darstellen. Geht daher in Puncto Qualität und Quantität immer sorgfältig bei der Wahl eurer WordPress Erweiterungen vor. Ganz nach dem Motto: “So viel wie nötig, aber so wenig wie möglich”.

Denn je mehr Plugins installiert sind, desto größer ist die Chance, dass sich Plugins gegenseitig in die Quere kommen oder Sicherheitslücken aufweisen. Leider sind nicht alle Plugins nach den schärfsten WordPress-Sicherheitsstandards programmiert worden. Theoretisch kann nämlich jeder ein eigenen Plugin erstellen und veröffentlichen.

Aber häufig bietet so manches Plugin auch nur Mini-Funktionen, die ihr auch selbst ganz leicht über die functions.php nachrüsten könntet. Der Vorteil ist ganz offensichtlich… ihr kennt euren eigenen Programmcode und vermeidet unnötigen Ballast.

Alle eingesetzten Themes und Plugins solltet ihr gründlichst prüfen. Dabei spielt zunächst die Bezugsquelle eine wesentliche Rolle. Greift bei kostenlosen Plugins und Themes möglichst auf das offizielle WordPress Repository zurück. Auch bei kostenpflichtigen Plugins und Themes solltet ihr ausschließlich auf vertrauenswürdige und bekannte Quellen zurückgreifen. Hier meine Empfehlungen:

Um zu überprüfen, ob das Plugin etwas taugt, solltet ihr folgende Punkte prüfen:

  • Anzahl der Downloads/Verkäufe
  • Anzahl und Qualität der Bewertungen
  • Kompatibilität zur aktuellen WordPress-Version
  • Letzte Aktualisierung
  • Supportanfragen auf der Support-Seite

WordPress Security Plugins

Limit Login Attempts

Das Plugin Limit Login Attempts beschränkt die Anmeldeversuche bei falscher Eingabe. Werden die Login-Daten x-Mal falsch eingegeben, wird die Anmeldung für einen fest definierten Zeitraum gesperrt. Passiert dies nochmals, so wird die Anmeldesperre erneut verlängert. Das Security Plugin schützt euch damit vor Brute-Force-Attachen.

Google Authenticator

Mit dem Google Authenticator Plugin schützt ihr euren Login-Bereich mit Hilfe einer 2-Faktor Authentifizierung. Installiert das Plugin von der WordPress-Seite und ladet euch die App für Android oder das iPhone herunter. Dadurch braucht ein Angreifer nicht nur euren Benutzernamen und das Passwort, sondern auch den Code des Google Authenticator.

Sucuri Security

Sucuri Security Plugin

Sucuri WordPress Security: Das Plugin um eure WordPress-Website auf Infizierungen zu überprüfen.

Sucuri ist eine der weltweit bekanntesten Sicherheitsschmieden im Bereich Website-Security. Das Sucuri Plugin bietet u.a. Monitoring, Malware-Scanning, Blacklist-Monitoring und noch einiges mehr. Werft am besten selbst einen Blick auf den Funktionsumfang.

Das Tool schützt euch zwar vor Schadsoftware (Ausnahme ist das Firewall Ad-On), dafür seht ihr aber sofort, wenn mit eurer Website etwas nicht in Ordnung ist.

Sehr interessant ist auch der Sucuri Instant-Check. Wer seine Seite rundum geschützt haben möchte und einen großen Wert auf seine WordPress Sicherheit legt, der sollte sich den Sucuri-Service einmal genauer anschauen.

AntispamBee

Das Standard Antispam-Plugin Askiment, welches IP-Adressen an US-Server übermittelt, ist nach deutschen Recht nicht wirklich datenschutzkonform. Eine bessere Lösung ist hier das von Sergej Müller entwickelte AntispamBee Plugin. Das deutsche Plugin schützt euch vor nervigem Kommentar-Spam, welche wiederum gefährliche Datebank- und CSS-Injections beinhalten können. Dieses Plugin ist eine sehr gute Empfehlung, um eure WordPress Sicherheit zu erhöhen.

BackWPup

BackWPup Datensicherung als Bestandteil der WordPress Sicherheit

BackWPup – Schon in der kostenlosen Version könnt ihr ein sehr gutes Datensicherungskonzept realisieren und so eure WordPress Sicherheit erhöhen.

Wie der Name schon sagt, ist BackWPup ein Plugin zur Datensicherung. Für mich ist es das Non-Plus-Ultra unter den kostenlosen Backup-Plugins.

Aber warum zähle ich ein Plugin für Backups zur WordPress Sicherheit? Ganz einfach… eine zuverlässige Datensicherungsroutine ist ein elementarer Bestandteil einer jeden Sicherheitsstrategie. Trotz aller Sicherheitsmaßnahmen kann ein Einbruch jederzeit erfolgen. Dann ist es elementar wichtig, dass ihr ein ordentliches Datensicherungskonzept für eure WordPress-Website implementiert habt. So könnt ihr schnell einen sicheren Restore durchführen und eure Seite wieder ans Netz schicken.

Das Plugin hat allerdings einen kleinen Nachteil: Es kommt auf 32-bit Systemen nur mit Sicherungen bis 2GB klar. In der Version BackWPup Pro erhaltet ihr noch zusätzliche Features. Vor allem der mysqldump ist eine wichtige Funktion bei großen Datenbanken, da es die stabilste Möglichkeit des Datenbank-Exports darstellt.

Updates zeitnah einspielen und auf dem Laufenden bleiben

Es gibt kaum eine Software, bei der keine Sicherheitslücken gestopft werden müssen. Daher solltet ihr auch im Bezug auf die WordPress Sicherheit zeitnah auf das einspielen von Core- und Sicherheitsupdates achten. Genauso bei Plugins und Themes – wartet nicht zu lange mit den Updates!

Macht vor dem Update immer ein Backup eurer Seite + Datenbank. Falls etwas schief geht oder das Skript hängen bleibt, könnt ihr den letzten Stand schnell wiederherstellen und neu starten. Noch ein Grund mehr, warum ein Datensicherungskonzept für mich zur WordPress Sicherheit zählt. Optimal ist natürlich eine Spiegelung eurer Website auf einer unzugänglichen Subdomain, wo ihr vor allem bei größeren Updates einen sicheren Durchlauf im Testsystem durchführen könnt.

Aber was, wenn ihr eine einfache Unternehmenswebsite habt und euch nur sehr selten in das Backend einloggt? Dann seht ihr natürlich nicht, dass wichtige Updates zum Download zur Verfügung stehen. Ein kleiner Helfer ist das Plugin WP Updates Notifier. Ich finde ja, dass diese Funktion in die Core-Funktionen von WordPress aufgenommen werden sollte.

Auch bei Plugins und Themes aus den oben genannten Shops werdet ihr nicht immer im Backend über verfügbare Updates informiert. Allerdings bieten die meisten Shops eine E-Mail-Benachrichtigung, wenn neue Updates eurer gekauften Produkte verfügbar sind. Diese Funktion solltet ihr unbedingt nutzen!

Hier noch 2 wichtige Quellen, die euch über aktuelle Sicherheitspatches auf dem Laufenden halten:

Das richtige Hosting

Das günstigste Hosting ist bekanntlich nicht immer das beste Hosting. Je nach Ziel können die Webhosting Anforderungen ganz unterschiedlich sein. Im Bezug auf eure WordPress Sicherheit sollte eurer Hosting folgende Punkte erfüllen:

  • Gutes Backup-Konzept
  • Redundante Firefalls
  • Malware-Scanning (nicht nur 1x im Monat)
  • DDoS-Schutz

Aber auch auf den Einsatz von aktueller Technik solltet ihr großen Wert legen, da in alten Versionen häufig Sicherheitslücken vorhanden sind:

  • Welche Webserver-Version von Apache, Lightpd und nginx ist im Einsatz?
  • Welche PHP- und MySQL-Versionen sind im Einsatz? Sind es die aktuellen?
  • Werden Updates der Webserver-Software, PHP & MySQL zeitnah nach Release ausgerollt?
  • Ist die FTP-Verbindung auch verschlüsselt (SFTP) möglich?

Wenn ihr auf ein Shared-Hosting setzt, dann müsst ihr noch ein weiteres Risiko in Kauf nehmen… nämlich eure Nachbarn am gleichen Server. Was bringt es euch, wenn ihr vorne die stärksten Schutzmauern hochgezogen habt, eure Nachbarn aber einen Tunnel zu eurer Seite bieten. Bei einem gut konfiguriertem Shared-Hosting sind solche Sprünge zwischen Hosts zwar sehr unwahrscheinlich und wenn überhaupt nur von echten “Profis” zu realisieren.

Ähnlich verhält es sich, wenn ihr mehrere Websites auf einem Server betreibt. Achtet bei all euren Seiten auf die gleichen Sicherheitsstandards und lasst diese in einem eigenen Host laufen. Das ist ein eigener Account mit separatem Benutzer, FTP, Dantenbankzugang, etc.

Sichere Kommunikation zum Server mit SFTP und HTTPS

SFTP ist die verschlüsselte Version des File-Transfer-Protokolls. Das “S” in SFTP steht dabei wahlweise für SSH oder Secure. Beide Varianten sind geläufig.

Der Vorteil von SFTP ist, dass der Datentransfer und die Logindaten verschlüsselt übertragen werden. Gute Programme, die SFTP unterstützen, sind z.B. FileZilla, WinSCP und CyberDuck. Mein persönlicher Favorit ist FileZilla, mit dem ich seit vielen Jahren sehr zufrieden bin.

Das HTTPS-Protokoll wird via TLS-Zertifikat (früher SSL-Zertifikat, aber SSL wird aus Gewohnheit häufig noch gesagt… passiert mir auch manchmal) genutzt und stellt eine verschlüsselte Verbindung zwischen Server und Browser her. Das ist vor allem beim Login wichtig, da so die Login-Daten verschlüsselt vom Browser zum Server übertragen werden. Solche Zertifikate gibt es schon ab ca. 30 – 80 Euro, je nach Stufe und Laufzeit des TLS-Zertifikats. Die kostenlose Alternative ist ein Zertifikat von Let’s Encrypt, welches viele Hosting-Anbieter mittlerweile unterstützen.

Vergesst nach dem einbinden des Zertifikats jedoch nicht, die HTTPS-Verschlüsselung auch für das Backend von WordPress freizuschalten. Dafür müsst ihr nur eine kleine Änderung in der wp-config.php vornehmen:

define( 'FORCE_SSL_ADMIN', true );

Die Verschlüsselung schützt euch somit vor Man in the Middle Angriffen, bei denen sich ein Angreifer zwischen euch und euren Server setzt und die Datenübertragung abfängt und manipuliert.

Unterwünschten Bots den Zugriff verweigern

Bots (auch Robots, Spider oder Crawler genannt) sind automatisierte Skripte die den Quellcode eurer Website herunterladen und nach definierten Parametern analysieren. Die bekanntesten Bots sind wohl die von Google, welche gerne gesehen Besucher auf jeder Website sind.

Allerdings gibt es auch nicht ganz so nette Vertreter. Diese Parasiten fallen förmlich über eure Website her, rauben euch kostbare Ressourcen und sind unter Umständen sogar gefährlich. Denn nicht wenige Bots sind auf das Ausspähen von Systeminformationen spezialisiert, was der Vorbereitung eines Angriffs dient.

Auf eurem Apache Webserver könnt ihr die Bots aussperren und einen Zugriff auf eure Seite verbieten. Optimal ist natürlich ein globaler Eintrag in der Server-Config. Aber auch über die .htaccess kommt ihr mit dem folgenden Befehl zum Ziel. Aber zuerst einmal eine Übersicht von mir bekannten Bots, die regelmäßig einen Besuch abstatten:

  • Performance-Testing: ApacheBench, LoadTimeBot
  • Harvester: CareerBot, GrapheshotCrawler, iCjobs, magpie-crawler, proximic, QuerySeekerSpider, Vagabondo, WBSearchBot
  • Nutzlose und bösartige Bots: CMS Crawler, Ezooms, ^Java, libwww-perl, niki-bot, updown_tester
  • SEO & Backlinks: AiHitBot, BLEXBot, Cliqzbot, DotBot, linkdexbot, MJ12bot, SEOkicks-Robot, SearchmetricsBot, SISTRIX, AhrefsBot, BacklinkCrawler, dlcbot, spbot

Es gibt natürlich noch eine Menge anderer Bots. Diese identifiziert ihr am besten über eure Server-Logfiles. Übrigens, die Bots von SISTRIX, Searchmetrics und Ahrefs sperre ich nicht aus, da ich ja auf diese Arbeit zähle und die kleinen Spinnentierchen wichtige Daten für die SEO-Branche erheben. 😉

Jetzt aber der Code, womit ihr die anderen Bots von eurer Seite aussperrt:


 SetEnvIfNoCase User-Agent (AiHitBot|BLEXBot|Cliqzbot|DotBot|linkdexbot|MJ12bot|SEOkicks-Robot|BacklinkCrawler|dlcbot|spbot|200PleaseBot|ApacheBench|LoadTimeBot|CareerBot|GrapeshotCrawler|iCjobs|magpie-crawler|proximic|QuerySeekerSpider|Vagabondo|WBSearchBot|Ezooms|^Java|libwww-perl|niki-bot|updown_tester) keep_out
 SetEnvIfNoCase User-Agent ^$ keep_out
 
 
  Order Allow,Deny
  Allow from all
  Deny from env=keep_out 
 

Maßnahmen zur WordPress Sicherheit, die ihr getrost ignorieren dürft

Hin und wieder lese ich über etwas fragwürdige WordPress Security Tipps. Manche davon schaden nicht wirklich, bringen aber auch nicht wirklich etwas. Andere hingegen können euch mehr Probleme bereiten, als euch lieb ist.

Ein typisches Beispiel ist das Entfernen der WordPress-Version aus dem HEAD-Bereich. Dieser Tipp bringt euch nicht wirklich etwas, schadet aber auch nicht. Wenn ein Angreifer wirklich etwas über eure WordPress-Installation wissen will, dann hat er alle wichtigen Infos mit ein paar Klicks zusammengetragen (Stichwort: *Linux + WPScan*).

Was ich immer wieder zu hören bekomme… “Warum verschiebst du eigentlich nicht die Login-Seite?“… ganz einfach: Das Verschieben kann mehr Problem im täglichen Betrieb verursachen, als ihr an Sicherheit dazu gewinnt.

Ein weiterer Klassiker ist das Verschieben des wp-content Ordners. Auch dabei habt ihr im Bezug auf Plugins und Themes mehr Probleme als Sicherheitsvorteile.

Fazit zur WordPress Sicherheit

WordPress ist ein sehr sicheres CMS. Allerdings verhält es sich wie bei jeder großen und bekannten Software. Für Angreifer ist das Aufstöbern von Sicherheitslücken einfach wesentlich lohnenswerter als bei kleinen unbekannten Systemen.

Mit den oben genannten WordPress Security Maßnahmen macht ihr eure Website wirklich dicht! Da heißt natürlich nicht, dass eure Website nicht mehr gehackt werden könnte. Durch Plugins, Themes und fehlende Updates besteht das größte Risiko eines Einbruchs. Bleibt hier also immer besonders wachsam und achtet darauf, welche Software ihr in eurem System nutzt.

Häufige Fehler sind aber vor allem die DB-Präfixe, falsche oder schlechte Benutzer und Passwörter sowie Flüchtigkeitsfehler wie die Anzeige eurer Dateistruktur via Verzeichnis-Browsing.

Habt ihr noch weitere Tipps, die in diesem Guide zur WordPress Sichereheit unter keinen Umständen fehlen dürfen? Dann ab damit in die Kommentare oder schreibt mich via Mail oder Facebook an. Ich freue mich auf eure Ergänzungen und Erfahrungen!

 

Bildquelle zum Beitragsbild: © welcomia / Shutterstock.com*