WordPress Sicherheit erhöhen und verbessern

Will man mit einer WordPress-Webseite erfolgreich sein, muss man in der heutigen, digitalisierten Zeit auf einen elementaren Faktor besonders achten: Die WordPress Sicherheit. Wer seine Webseite nicht richtig gegen Hackerangriffe, Schadsoftware und sonstige Störfaktoren absichert, riskiert nicht nur seinen potentiellen Umsatz durch unnötige Website-Downtime, sondern auch die Sicherheit der eigenen Besucher, die wertvolle Position im Google Index oder im Worst Case – Schriftverkehr mit den Anwälten von Opfern leergeräumter Bankkonten aus der Schweiz.

Damit derartige unangenehme Szenarien nicht eintreten und du dich vollständig auf die Entwicklung deines Business fokussieren kannst, erklären wir in diesem WordPress Security Guide alle wesentlichen Aspekte der Websicherheit und wie man eine WordPress Webseite richtig schützt und gegen Angriffe absichert.

Wichtig: Die hier aufgelisteten Eingriffe und Methoden setzen zum Teil ausgiebiges Fachwissen für die Umsetzung voraus. Unsachgemäß ausgeführte Schritte können die Funktionsfähigkeit der Webseite erheblich beeinträchtigen und weitreichende Schäden verursachen. Es existiert keine 100%ige Sicherheit gegen jegliche Art von Angriffen. Die folgenden Maßnahmen dienen lediglich dazu, die Wahrscheinlichkeit für einen erfolgreichen Angriff oder Exploit zu minimieren. Wir übernehmen keine Haftung für Schäden, die aufgrund falscher Handhabung der hier aufgelisteten Informationen entstehen.

Wir empfehlen vor jeder umfassenden Änderung an Dateien, Verzeichnissen oder dem WordPress-Code eine Sicherung der Datenbank und des Webspace auszuführen, damit im Fall der Fälle keine Panik ausbricht. Wenn du Hilfe bei der Umsetzung der Sicherheitsmaßnahmen benötigst,  nutze gerne unser WordPress Security Modul für sichere WordPress-Webseiten oder kontaktierte unseren Support für auftretende Fragen.

Einfache Sicherheitsmaßnahmen und kostenlose Plugins für mehr WordPress Sicherheit

Bereits mit wenigen einfachen Maßnahmen kann die allgemeine WordPress Sicherheit um einen großen Faktor erhöht werden. In der heutigen Zeit von Internet-of-Things werden Brute-Force Angriffe, DDos-Attacken und die Angriffe auf bekannte Systemschwachstellen immer häufiger vorkommen und jegliche Web-Systeme bedrohen. 24 Stunden. Rund um die Uhr. 365 Tage im Jahr. Aus Rücksichtnahme der eigenen Webseiten-Sicherheit und der Sicherheit der Besucher ist eine adäquate Sicherheit kein Vorteil, sondern absolute Pflicht. Die folgenden Maßnahmen tragen zum Schutz der WordPress Webseite bei und lassen sich mit wenigen Handgriffen umsetzen.

WordPress aktuell halten

Klingt zwar banal, aber regelmäßige Updates sind ein Muss. Nur wer seine WordPress-Version auf dem aktuellen Stand hält, ist zumindest vor bekannten Sicherheitslücken geschützt. Die von der WP-Community regelmäßig nachgeschobenen Updates können bequem über das Dashboard installiert werden und machen es Angreifern schwerer, die bekannten Sicherheitslücken veralteter WP-Versionen auszunutzen. Ein einfacher Tipp, der aber eine nicht zu unterschätzende Bedeutung hat. Gleich gilt übrigens auch für sämtliche Betriebssysteme, Server-Software wie Apache oder Programmiersprachen wie PHP.

Admin Benutzer löschen und „Mediendirektor“ anlegen

Wenn nicht bereits bei der Installation geschehen, sollte spätestens vor dem Live-Betrieb der WP-Installation der standardmäßige Admin-User gelöscht werden und ein neuer Admin angelegt werden. Warum? Ganz einfach. Nahezu alle Brute-Force Angriffe, die darauf abzielen, durch oft verwendete Username/Passwort-Kombinationen Zugriff in das Backend zu erlangen, nutzen diese Schwachstelle vieler unbedachter Webseitenbtreiber aus. Ein „admin“-User mit dem Passwort „qwe123asd“ ist dank moderner Hardware beispielsweise in nur wenigen Sekunden geknackt. Der folgende Screenshot zeigt so einen Brute-Force Angriff über den eben beschriebenen Nutzer.

admin-brute-force

Ein Brute-Force Angriff auf den WordPress Standardnutzer „admin“

Natürlich kommt die Webseite nicht gänzlich ohne Admin-Konto aus. Dazu sollte ein Nutzername gewählt werden, der nichts mit der Domain, dem Betreiber der Webseite oder etwaigen öffentlich zugänglichen Informationen zu tun hat. Das Admin-Konto dient dann lediglich zur Verwaltung spezifischer Admin-Aufgaben. Die gesamte Content-Produktion und Verwaltung wird über eine Art „Mediendirektor“ ausgeführt.

Ein einfaches Konto mit Redakteur-Berechtigung, das lediglich Inhalte editieren und löschen kann, aber keinen Zugriff auf die elementaren WordPress-Funktionen hat. Grundsätzlich sollte ein einziges Admin-Konto für die Verwaltung einfacher WordPress Seiten ausreichen. Das macht die Kontrolle und Überwachung des Kontos deutlich einfacher.

Hier findest du eine vollständige Übersicht über die standardmäßigen Benutzerrollen in WordPress.

Passwörter sicher wählen

Wo wir schon beim Thema Benutzerverwaltung sind, können wir auch direkt einen weiteren unangenehmen Aspekt der WordPress Sicherheit ansprechen: Die Passwortstärke. Auch wenn gerne das eigene Geburtsdatum, die Bank-PIN oder der Vorname mit einer Jahrgangs-Ziffer für ein Passwort herhalten müssen, bietet eine derartige (schwache) Kombination in der heutigen Zeit definitiv keine ausreichende Sicherheit mehr!

WordPress besitzt eine hauseigene Funktion zur Passwortgenerierung, die zur Analyse der Passwortstärke eine externe Bibliothek nutzt. Zudem existiert eine Art dynamisch generierte Blacklist aus Keyword-Begriffen, die in keinem (sicheren) Passwort vorkommen dürfen. Das sind u.a.:

  • Seitentitel
  • Seiten-URL
  • Alle Werte aus den Benutzer-Informationen (Vorname, Nachname, Spitzname, biografische Angaben etc.)

Die Mindestanforderungen an ein sicheres Passwort sind demnach wie folgt:

  • Keine Verwendung benutzerspezifischer Daten wie Vorname, Nachname etc.
  • Passwortlänge von mehr als 12-14 Zeichen
  • Bestehend aus Klein- und Großbuchstaben sowie Sonderzeichen

Eine gute Referenz für die Passwortsicherheit ist eine Überprüfung mit dem integrierten Tool, das unter „Profil bearbeiten“ zur Verfügung steht.

Sicheres WordPress Passwort wählen kann vom Administrator erzwungen werden

Sicherheits-Plugins

Grundsätzlich gilt, je mehr Plugins verwendet werden, desto größer wird das Risiko einer Sicherheitslücke, die durch oftmals nicht ausreichend gesicherte oder veraltete Plugins geöffnet wird. Es existieren jedoch Plugins, die definitiv die WordPress Sicherheit erhöhen. Dazu gehören WordFence und iThemes Security.

WordFence bietet einen Allround-Sicherheitspaket für verbesserte WordPress Sicherheit inkl. Firewall, Loginlimitierung, IP-Blocking und Malware-Scans oder Strong Password Forces, mit denen sich die eigene WP Installation effizient absichern lässt.

Das Plugin iThemes Security bietet einen ähnlichen Funktionsumfang, allerdings in deutscher Sprache und mit Zusatzfunktionen wie der Umbenennung des wp-content directorys oder der Admin-URL. Allerdings können diese Maßnahmen auch manuell ausgeführt werden, wie hier beschrieben ist.

Anti Spam Maßnahmen – Spam Kommentare verhindern

Spam-Kommentare sind ein weiteres, nicht zu unterschätzendes Sicherheitsrisiko. Dabei können die Kommentare auf vielfältige Weise als Spam gelten. Automatische Spam-Kommentare werden von Skripten und Bots generiert und sind i.d.R. an ihrer englischen oder russischen Sprache zu erkennen, enthalten eine Vielzahl von ausgehenden (unnatürlichen und ggf. schadhaften) Links, CSS Hacks sowie unseriöse Call-to-Action Hinweise. Automatisierter Spam kann von gängigen Anti-Spam Plugins wie Antispam Bee oder Akisment wirkungsvoll unterbunden werden.

Etwas schwieriger verhält es sich bei manuellem Spam. Zu erkennen durch völlig überspitzte Kommentare mit einer stilistischen Schreibweise á la „Ein toller Artikel, ich bin froh, ihn gefunden zu haben!“. Wenn der User dann noch Herbert heißt und seine verlinkte Homepage vergleichstest24-365.info lautet, weißt du Bescheid.

Und genau hier liegt das Ziel. In der Hoffnung auf Backlinks verfassen professionelle und mit Bitcoin bezahlte Spammer derartige Kommentare, die nur einen Backlink deiner Seite generieren sollen. Um das zu unterbinden, kann man die Kommentarfunktion auch gänzlich abschalten oder zumindest die Kommentaroptionen durch eine gezielte Konfiguration (nofollow, Keyword-Blacklist) so weit absichern, dass unerwünschter Inhalt direkt als Spam markiert und aussortiert wird.

Ein klassisches Beispiel für Kommentar-Spam in WordPress

Ein klassisches Beispiel für Kommentar-Spam in WordPress

Firewall für maximale WordPress Sicherheit

Ähnlich wie eine konventionelle Firewall im Router oder auf dem Rechner, schützt auch eine Web-Firewall in WordPress vor schädlichem Datenverkehr, der die Webseite von außen konfrontiert oder sogar aus den eigenen Reihen der Webseite kommt und Informationen an Angreifer übermittelt.

Firewalls blockieren diesen Traffic durch den gezielten Einsatz von Filterregeln. Damit können DDos-Attacken, Brute-Force Angriffe oder weitere Angriffsmethoden zumindest teilweise unterbunden werden. Wer ein Plugin wie WordFence nutzt, kann auf eine wirkungsvolle Firewall setzen, sofern diese richtig konfiguriert ist.

Loginversuche limitieren und Captcha einsetzen

Eine Vielzahl der Angriffe auf WordPress Webseiten ist auf Brute-Force Attacken zurückzuführen. Dabei greift ein Skript aus unterschiedlichen IP-Pools (meistens sind das Botnetzwerke gekaperter Rechner oder Webserver der Angreifer)  immer wieder auf die Login-Funktion der Webseite zu.

Dabei wird mehrfach eine gewisse Benutzer/Passwortkombination ausprobiert, bis der Algorithmus alle erdenklichen (programmierten oder selbständig generierten) Kombinationen ausprobiert und die „Lösung“ gefunden hat. Nicht viel mehr als eine rein mathematische Aufgabe, die sich mit ausreichend Rechenleistung in aktzeptabler Zeit lösen lassen würde, sofern die Passwortstärke zu gering ist.

  • Die Limitierung von Login-Versuchen kann z.B. über ein Plugin wie WordFence oder WP Limit Login Attempts geregelt werden. Nach x Fehlversuchen wandert die beim Login gescheiterte IP auf eine Black- bzw. Sperrliste, die zeitlich limitiert sein kann oder den User gänzlich vom Login ausschließt.
  • Eine weitere wirkungsvolle Variante, mit dem man nervige Bots lahmlegen kann, ist eine Captcha-Funktion für den Login. Bots sind i.d.R. nicht fähig, dieses Captcha zu umgehen und scheitern so schon bevor der eigentliche Login-Versuch starten kann. Das oben genannte Plugin bietet eine derartige Funktion von Haus aus, es gibt aber auch smarte Einzellösungen wie z.B. Captcha by BestWebSoft

    captcha-einsetzen bei WordPress

    Nicht nur Bots scheitern bei den z.T. nicht gerade anspruchslosen mathematischen Rätseln!

WordPress Sicherheit durch manuelle Anpassungen an Dateien und Code erhöhen

Die Umsetzung der vorherigen Maßnahmen ist das Mindestmaß für einen einigermaßen ruhigen Schlaf. Wer sich mit einer wachsenden Paranoia in puncto Sicherheit konfrontiert sieht, sollte die nachfolgenden manuellen Sicherheitsmaßnahmen in jedem Fall umsetzen! Wie gesagt, 100%ige Sicherheit gibt es nicht, aber diese technischen Schritte tragen nochmal ein gewaltiges Stück zu einer hohen WordPress Sicherheit bei. Wer beim Anlegen einer Excel-Tabelle aber schon an seine persönlichen Grenzen stößt, sollte diese Maßnahmen aber lieber von einem Profi ausführen lassen. Sicher ist sicher sicherer.

SSL / TLS Verschlüsselung aktivieren

TLS (Transport Layer Security) oder auch SSL (Secure Sockets Layer ) ist ein hybrides Verschlüsselungsprotokoll zur sicheren Übertragung von Daten im Internet, das mittlerweile als weltweiter Standard für jegliche Transaktionen im Web gilt – oder besser gesagt: gelten sollte. SSL/TLS Zertifikate werden gerne in Kombination mit dem https-Prokoll (HyperText Transfer Protocol Secure) genutzt. Dabei dient das klassische HTT-Protokoll als Anwendungsprotokoll und die Daten werden, anders als beim HTTP, verschlüsselt via TLS / SSL zum Webserver übertragen.

Diese Technologie ist die Grundvoraussetzung für eine gesicherte (verschlüsselte) Übertragung von Webseiten-Daten zu einem Server und ist z.B. beim Einsatz von WooCommerce die Voraussetzung für die Nutzung von Zahlungsschnittstellen von Kreditkarten-Dienstleistern, PayPal oder anderen Anbietern. Eine SSL-verschlüsselte Webseite erkennt man (je nach Browser) an einem Schloss vor der URL. Das SSL Zertifikat muss nicht zwingend zertifiziert sein (grünes Schloss/Markierung), um seine Wirkung zu entfalten. Offiziell zertifizierte SSL-Zertifikate kosten einige hundert Euro pro Jahr und sind heute i.d.R. nicht mehr nötig.

Unser Hosting-Partner All-Inkl bietet in seinen Webhosting-Tarifen beispielsweise kostenlose SSL-Zertifikate von Let’s Encrypt* an. Diese Organisation ist ein Zusammenschluss bekannter Tech-Konzerne wie Cisco, Facebook oder auch Automattic (das Unternehmen hinter WordPress), die es sich auf die Fahnen geschrieben haben, den SSL/TLS Standard weltweit durchzusetzen und eine zentrale und kostenfreie Zertifizierungsstelle anzubieten. Ein großer Teiler aller Webseitenbetreiber konnte sich die vormals sehr teuren Zertifikate nicht immer leisten.

Die Umstellung auf SSL-Zertifikate in WordPress und das https-Protokoll sollte möglichst vor dem Aufbau einer Webseite erfolgen. Eine nachträgliche Umstellung der Zertifikate ist zwar grundsätzlich möglich, je nach verwendetem Datenbanksystem bzw. Software auf dem Server aber mit erheblichem Anpassungsaufwand verbunden.

Das Verzeichnis wp-content umbenennen 

Eine häufige Schwachstelle vieler WordPress Installationen ist das Unterverzeichnis WordPress/wp-content. In diesem Content-Verzeichnis verwaltet WordPress alle Themes, Plugins und auch Uploads, die von Usern oder z.B. einem Shopsystem wie WooCommerce angelegt werden.

Der Schutz dieses Verzeichnisses hat nicht nur für den Verkauf digitaler Produkte enorme Bedeutung. Falsche Einstellungen können dazu führen, dass das gesamte Verzeichnis ausgeräumt oder schadhafter PHP oder Java-Code in das upload directory eingeschleust wird, welches standardgemäß als eines der Hauptziele gängiger Exploits und Hackerangriffe gilt.

Ein kleiner Kniff kann hier einen bedeutenden Anstieg unserer WordPress-Sicherheit bieten. Wir benennen einfach das Verzeichnis wp-content um.

So entziehen wir Standard-Skripts die Angriffsfläche und machen unsere Webseite ein wesentliches Stück sicherer. Am einfachsten ist diese Änderung bei einer frischen WP-Installation ohne bestehende Inhalte in der Datenbank. Sollte deine WordPress Seite bereits Inhalte haben, müssen die Datenbankeinträge am Ende einmal angepasst werden.

Wie das genau funktioniert, haben wir in unserem Artikel wp-content umbenennen erklärt.

Datei- und Verzeichnisrechte / User-Berechtigungen anpassen und kontrollieren

Das Lieblingsthema aller Hacker. Eine 777er wp-config ist für den Hacker wie das abendliche Netflix & Chill für den gut situierten Entrepreneur mit weiblicher Begleitung. Will heißen: Dem Schutz von Datei- Verzeichnisrechten kommt in der täglichen Webpraxis eine unvergleichliche Bedeutung zu. Falsch gesetzte Datei- und Verzeichnisrechte öffnen potentiellen Angreifern im schlimmsten Fall die Vordertür zum Schlafgemach der Liebsten. Aber das ist zu verhindern!

Verzeichnisse und Dateien auf einem Webserver sind mit einer Berechtigungsstruktur versehen, die den unterschiedlichen Nutzergruppen (Eigentümer/Besitzer, Gruppen, öffentliche/andere) entsprechende Berechtigungen für die Dateiverwaltung zusprechen. Das sind im Wesentlichen Schreiben (engl. write), Lesen (engl. read) und Ausführen (engl. execute). Wie sich Dateirechte genau zusammensetzen haben wir in unserem Artikel über die Schreibrechte für Dateien und Verzeichnisse erklärt.

Für WordPress gilt:

  • Dateirechte sollte grundsätzlich auf 644 stehen
  • Verzeichnisse sollten rekursiv mit 755 versehen werden
  • Einzelne Dateien oder Verzeichnisse können abhängig von den Benutzerrechten auf dem Webserver abweichen und müssen ggf. manuell angepasst werden
  • Die wp-config.php kann zusätzlich auf 444 bzw. 400 abgesichert werden. Damit müssen die Berechtigungen für etwaige Änderungen zwar angepasst werden, das sichert die Datei aber zusätzlich ab.

Die wp-config.php für mehr WordPress Sicherheit anpassen

Diese Datei bildet das technische Herz deiner WordPress Seite, weil in ihr alle wichtigen Konfigurationsparameter enthalten sind. Datenbankzugänge, Sicherheits-Schlüssel, Tabellen-Präfixe oder grundlegende Konfigurations-Informationen sind Bestandteil der wp-config.php und rücken diese kleine Datei in den Fokus der WordPress Sicherheit!

Doch mit einigen Anpassungen der wp-config.php lassen sich nicht nur Sicherheitsrisiken minimieren, sondern auch einige Funktionalitäten der WordPress Website erweitern. In den folgenden Abschnitten nehmen wir einige Ergänzungen des PHP-Codes vor, die aber erst nach erst nach einem Backup der Datei erfolgen sollten und vor der folgenden Codezeile eingefügt werden müssen:

/* That's all, stop editing! Happy blogging. */

Die Rechte der wp-config.php und .htaccess anpassen

Zunächst eine allgemeine Anpassung. Die Dateirechte der wp-config.php können grundsätzlich auf 400 bzw. 444 gesetzt werden (je nach Serverkonfiguration des Hosters), für die .htaccess reichen 644 oder 444. Höhere Rechte sind i.d.R. nicht nötig, sofern WordPress keine automatischen Änderungen an der Datei vornehmen muss. Das kann bei einigen Plugins temporär der Fall sein (z.B. WP Super Cache).

Sicherheitsschlüssel (keys & salts) in der wp-config.php verändern

Könnten Sie mir bitte das Salz reichen? Nein! Keys und Salts sind streng geheim und stets zu schützen! Einen wesentlichen Beitrag zur WordPress Sicherheit trägt die Verschlüsselung auf Basis kryptographischer Hashfunktionen bei. Wer bereits einmal eine WP-Installation manuell durchgeführt hat, ist spätestens bei der Einrichtung der wp-config.php auf die folgenden Codezeilen für die AUTH_KEYS und die SALTS gestoßen.

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');

WordPress nutzt nämlich keine PHP-Sessions für die Verifizierung und Speicherung von temporären Login-Daten wie Passwörtern, Nutzernamen oder Session-Timestamps, sondern einfache Cookies. Diese Informationen werden aber nicht als Klartext gespeichert, sondern gehasht. Die KEYS und SALTS sind Bestandteil dieser Hashfunktionen und verschlüsseln die gespeicherten Informationen der Cookies auf nicht reproduzierbare Weise – vorausgesetzt die KEYS & SALTS sind auch sicher vor dem Zugriff Unbefugter!

Somit müssen diese 8 Schlüssel bei jeder WordPress Installation in der wp-config.php konfiguriert und gespeichert werden, damit das Hashing von sensiblen Informationen auch reibungslos funktionieren kann. Dazu bietet WordPress eine API, die diese Schlüssel kostenfrei generiert.

Allerdings sollte jeder Schlüsselsatz nur einmal verwendet werden: https://api.wordpress.org/secret-key/1.1/salt/

Sobald die Keys generiert sind, sollten diese in etwa so aussehen:

define('AUTH_KEY',         'L`jogdpj>8-)j%9Gi^<Sm*.tYL]|r?o((qsv9._Q(CpIbfKG;jx,OyOtO;Hku] a');
define('SECURE_AUTH_KEY',  'yX;h@5Fem.YU-11h!Jw8Dt(Al4u+W=B#*<J>d-stOeJ[Df+-HQR?!k5O0#y?$qj#');
define('LOGGED_IN_KEY',    '69](0PJZ~;+xwTOlqUf,}xy~$3k)w1/NOF-XU8C,|p|3H gU`.nTeoj4ah&|:qq+');
define('NONCE_KEY',        '2MYlncatW`Xyt:nG0c|[jzKk}D(-c09<;Yi>#Rs[:1b<Qndh/j:}]&ur(w1K2~m ');
define('AUTH_SALT',        'gwd#65UYWds0svs-j+o4il+5`+P9pU9,s!sXnM.,#s~h-jE;GCaRlAqhoSMw!<Y]');
define('SECURE_AUTH_SALT', 'R/Hpb6!zc(}F[F2$d7O354tgx|QC/Z9U/sEBy8EdUY%9U]6@_,r`J4X2ol;O0LId');
define('LOGGED_IN_SALT',   'OeyYfNtA<|O3Tz,pv&rA)Zbz}nT#=Ol{t;I4Z}Hk9wLd)tTcOw+tRl0|;d]D|gKO');
define('NONCE_SALT',       '&yQtu.2X|}zV+W.*Xu+Uhc<7Rb4E2YHo%4%JXN-ea%:Hb^:Q?V_hgd|{ tm+kx6:');

Es empfiehlt sich, den gesamten Schlüsselsatz von Zeit zu Zeit zu erneuern. Die Schlüssel müssen dabei nicht gemerkt oder abseits der wp-config.php gespeichert werden. Nach jedem Schlüssel-Release werden alle bestehenden Logins aktiver Nutzer ungültig. Somit müssen sich alle Nutzer nach dem Austausch der Schlüssel erneut anmelden.

Die  wp-config in übergeordnetes Verzeichnis verschieben

Viele standardisierte Angriffe zielen auf die wp-config.php ab, die sich normalerweise im Root-Verzeichnis der WordPress Installation befindet. Durch das simple Verschieben der Datei in das übergeordnete Verzeichnis (z.B. webspace/ data/ webseiten/ webseite1/ wordpress) kann der direkte Zugriff auf die wp-config.php für viele Skripte und Exploits entzogen werden, die Sicherheitslücken im System ausnutzen, um Zugriff auf die sensiblen Daten der wp-config zu erhalten.

Dazu kann die Datei einfach via FTP-Client in das übergeordnete Verzeichnis verschoben werden. In unserem Beispiel liegt die wp-config.php standardmäßig im wordpress-Verzeichnis. Wird diese von dort in das Verzeichnis „webseite1“ verschoben, sucht WordPress automatisch nach der wp-config und funktioniert wie gehabt. Ob das wirklich immer sinnvoll ist oder einen eher unnötigen Schutz darstellt, wurde in den WP-Foren schon oft diskutiert.

Verschlüsselten Login erzwingen

Force SSL Admin sagt so ziemlich alles aus. Damit beim Login keine sensiblen Passwörter oder Cookies abgefangen werden können, kann der Login in das Backend via SSL/TLS abgesichert werden. Dazu bedarf es einer kleinen Anpassung in der wp-config und einem validen SSL-Zertifikat, wie z.B. durch Zertifikate von Let’s Encrypt, die du z.B. über unseren Premium-Hoster All Inkl.* beziehen kannst.

Nach der Aktivierung der SSL-Verschlüsselung werden die Login-Informationen nur noch verschlüsselt übertragen und sind somit vor Sniffing an den Übertragungsschnittstellen durch Unbefugte geschützt.

define( 'FORCE_SSL_ADMIN', true );

Login-Fehlermeldungen abschalten

Wo wir schon beim Thema Login sind, können wir auch direkt die Fehlermeldungen aufgrund nicht korrekter Loginversuche abschalten. Fehlerhafte Loginversuche produzieren eine Fehlermeldung wie z.B: „Wrong Password“. Nett von WordPress, dass es darauf hinweist. Für Angreifer ist diese Information pures Gold wert und stellt eine ernsthafte Gefahr für die WordPress Sicherheit dar. Wenn nur noch das Passwort falsch ist, scheint der Benutzername ja schon zu stimmen (…)

Einfach den folgenden Code in die functions.php des Child-Themes einfügen und das Problem hat sich erledigt:

add_filter('login_errors',create_function('$a', "return null;"));

WordPress Fehlermeldungen (debugging) deaktivieren

Fehlermeldungen sind auch im Live-Betrieb keine Seltenheit. Ein neues Update im WordPress Core inklusive neuer Variablen-Deklarationen im PHP-Code und schon unterstützt das veraltete Lieblings-Plugin den neuen Code nicht mehr und produziert fleißig Fehlermeldungen, die potentiellen Angreifern unangenehm viele Informationen über Verzeichnisse, Pfade, Plugins, Themes oder andere Dateien ausgeben.

Am einfachsten unterbindet man das, indem die gesamte Debug-Funktion in der wp-config deaktiviert:

define('WP_DEBUG', false);

Das birgt jedoch die Gefahr, dass potentiell gravierende Fehler im Quellcode oder Webseiten-Betrieb übersehen werden. Eine andere Möglichkeit ist die Aktivierung des WP_DEBUG Log-Modus, bei dem alle Informationen in ein separates Logfile ausgelagert werden.

Das bedeutet jedoch, dass das File sensible Daten enthält und konsequenten Größenzuwachs hat. Man sollte daher im Verzeichnis /wpcontent/debug.log ständig die Dateigröße überwachen.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );

Man sollte den Debug-Modus auch nur wirklich dann aktivieren, wenn man auch debuggen möchte. Ansonsten ist der Default-Wert „false“ die richtige Wahl!

Backend Editor für Themes und Plugins deaktivieren

Damit im Backend kein Schindluder durch Missbrauch des Inhouse-Editors von WordPress getrieben wird, kann man das Editieren von Themes, Plugins und Co. einfach deaktivieren. So wird einem potentiellen Einbrecher in das Backend die Möglichkeit genommen, unmittelbar ausführbaren Code in den Quellcode einzuschleusen und die Webseite noch weiter zu kompromittieren.

Einfach die folgende Variable in der wp-config.php anpassen und im Handumdrehen haben wir unsere WordPress Sicherheit wieder um ein bedeutendes Stückchen verbessert.

define( 'DISALLOW_FILE_EDIT', true );

WordPress Versionsnummer entfernen oder verstecken

Standardgemäß können Angreifer die aktuell installierte Version einer WordPress Installation auslesen und damit auf aktueller Sicherheitslücken der WordPress Version oder installierter Plugins schließen. In den gängigen Exploit-Datenbanken werden aktuelle Sicherheitslücken bekannter Softwaresysteme gelistet.

Lücken in der WordPress Sicherheit laufen auch hier auf, werden aber schnell durch Sicherheits-Patches geschlossen – vorausgesetzt, dass du deine WP Site auch regelmäßig updatest. Die regelmäßige Pflege einer WordPress-Webseite ist also ein fundamentaler Faktor für eine möglichst hohe WordPress Sicherheit!

Um die Versionsnummer zu entfernen, kannst du das folgende Snippet einfach in die functions.php des Child-Themes einfügen und das Theater mit den Versions-Exploits hat ein absehbares Ende. Allerdings heißt das noch lange nicht, dass die WordPress-Versionsnummer nun unter keinen Umständen herausgefunden werden kann. Wer es wirklich drauf anlegt, findet die Versionsnummer früher oder später trotzdem heraus.

<?php
remove_action( 'wp_head', 'wp_generator' );
function remove_script_version( $src ) {
  $parts = explode( '?', $src );
  return $parts[0];
}
add_filter( 'script_loader_src', 'remove_script_version', 15, 1 );
add_filter( 'style_loader_src', 'remove_script_version', 15, 1 );
?>

Datenbankpräfix verändern

Noch während der Installation von WordPress hat der findige Webseiten-Admin die Möglichkeit, das Datenbank-Präfix der zugehörigen MySQL-Datenbank zu verändern. Das Präfix bestimmt den Anfang der Tabellennamen in der Datenbank, die parallel bzw. zeitgleich mit der WordPress Installation angelegt werden.

So werden zwar keine Schwachstellen im Code geschlossen, jedoch können Exploits wie SQL-Injections zunächst nichts mit etwaigen Schwachstellen anfangen, wenn die Skripte auf das Standard-Tabllenpräfix „wp_“ ausgelegt sind. Wer diesen Wert in der wp-config.php ändert, lässt jegliche SQL-Injections zunächst ins Leere laufen. Dazu einfach  das DB-Präfix mit Hilfe unternehmerischer Kreativität abändern:

$table_prefix  = 'becreative_';

Das Präfix sollte in der Praxis aber nicht mehr als 2-5 Zeichen enthalten. Andernfalls kann es beim Anlegen einiger WordPress-Tabellen (z.B. durch das Shopsystem WooCommerce) zu Problemen kommen.

Mehr Maßnahmen für die WordPress Sicherheit

Wie du siehst, lassen sich bereits durch recht einfach umsetzbare Sicherheits-Maßnahmen erhebliche Sicherheitslücken schließen und die grundlegende Website-Security verbessern. Damit erhöhst du aber nicht nur aktiv die WordPress Sicherheit, sondern minimierst auch das Risiko für wirtschaftliche Schäden, die durch eine kompromittierte oder gehackte WordPress-Webseite auftreten können.

Wenn du Fragen zum Thema WordPress Sicherheit hast oder bei der Umsetzung von Sicherheitsmaßnahmen Hilfe benötigst, kannst du dich selbstverständlich auch an unseren WordPress Support wenden oder unseren WordPress Security Service in Anspruch nehmen.