WordPress ist das weit verbreitetste CMS überhaupt. Doch nach der ersten Betriebsnahme denken die meisten nicht weiter an die Sicherheit. Deshalb sind Schwachstellen in WordPress besonders lukrativ. Veraltete Versionen, für welche öffentliche Schwachstellen bekannt sind, werden durch sogenannte Crawler und Bots erkannt und angegriffen. Dies passiert meist vollautomatisch. Oft ist das Ziel dieser automatisierten Angriffe das CMS dazu zu missbrauchen, Phishing-Seiten zu hosten und Spam zu versenden.
So weit muss es aber gar nicht kommen. Das WordPress Handbuch und die Entwickler selbst empfehlen, dass eine Standard-Installation nicht ausreicht, um sich effektiv vor Angriffen zu schützen. Deshalb gibt es den sogenannten offiziellen “WordPress Hardening Guide“. Dieser umfasst Maßnahmen, welche das WordPress Team zur Absicherung empfiehlt. Leider wird genau diese wichtige Empfehlung häufig bei der Installation ausgelassen.
Ohne ein Security Monitoring bekommt man von diesen automatisierten Angriffen gar nichts mit. Doch mit nur wenigen Plugins und Schritten kann man den Schutz immens verbessern und das Risiko für eine Kompromittierung verringern. Ziel dieses Artikels ist es eine kurze Checkliste mitzugeben, mit welcher die Sicherheit eines WordPress Blogs verbessert werden kann.
Dass all diese zusätzliche Maßnahmen (auch diese aus dem “Hardening Guide”) sehr wichtig sind, zeigt auch diese kritische Schwachstelle, welche im Juni 2020 veröffentlicht wurde. Über ein Jahr lang hatte es gedauert, bis das WordPress Team diese endlich geschlossen hat. Danach durfte der Sicherheitsforscher Details zur Schwachstelle veröffentlichen.
Im folgenden habe ich eine priorisierte Checkliste bereitgestellt, die bei der Absicherung deines WordPress CMS helfen kann.
Security Checkliste für WordPress – Stand August 2020
- Wenn möglich, ein managed WordPress Hosting verwenden
Dadurch können mehrere WordPress-Installationen automatisiert auf dem aktuellen Stand (Core, Plugins, Themes) gehalten bleiben. Außerdem wird ständig der Sicherheitsstatus geprüft. Im Screenshot zu sehen ist das Plesk WordPress Toolkit. Auch viele der Sicherheitsmaßnahmen lassen sich durch ein managed Hosting einfach aktivieren.
- WordPress Core, Plugins und Themes aktuell halten
Automatische Scanner (wie WPScan), welche von Angreifern verwendet werden, halten Ausschau nach verwundbaren Plugins. Veraltete Plugins können bekannte Schwachstellen beinhalten. Daher soll die Auto-Update Funktion (seit WordPress Version 5.5 verfügbar) aktiviert werden. Optimalerweise hat das managed WordPress Hosting eine automatische Update-Funktion.
- Offiziellem WordPress Hardening Guide folgen
Der offizielle Hardening Guide beschreibt detailliert Maßnahmen, die vor allem auf administrativer Seite anfallen. Dazu gehört beispielsweise die Dateirechte einzuschränken, die Ausführung von PHP Dateien zu beschränken und das Bearbeiten von Dateien innerhalb von WordPress zu deaktivieren.
Ob auszugsweise eine dieser Maßnahmen umgesetzt ist, lässt sich dies einfach prüfen, indem man testet, ob die folgende Readme-Datei aufrufbar ist: https://example.org/support/readme.html
Der folgende Screenshot zeigt das Controlpanel des Plesk WordPress Toolkits, durch welches ebenfalls einige dieser Maßnahmen kontrolliert und umgesetzt werden können. - Login-Versuche limitieren, evtl. MFA aktivieren, XML-RPC deaktivieren
Bots versuchen sich hunderte Male am Tag von verschiedenen IP-Adressen im WordPress einzuloggen. Mit einem zusätzlichen Plugin werden IP-Adressen nach einer festgelegten Anzahl an fehlgeschlagenen Logins blockiert. Der Screenshot zeigt die durch das Plugin protokollierten Loginversuche, die offenbar von einem Botnet ausgingen.
Plugin: Limit Login Attempts
Viele dieser Loginversuche (wie im Screenshot zu sehen) stammen über das XML-RPC Gateway. Daher empfiehlt es sich diese ungenutzte Api zu deaktivieren.
Plugin: Disable XML-RPC - Ungenutzte Plugins und Themes deinstallieren
Nicht benötigte Plugins sollten deinstalliert werden. Jedes installierte Plugin erhöht die potentielle Angriffsfläche, sollte für dieses Plugin eine Schwachstelle bekannt werden.
- Captchas aktivieren
Um die Bruteforcing und Credential Stuffing Angriffe einzudämmen sollte ein Captcha-Schutz für alle wichtigen Funktionen (Login, Registrieren, evtl. Kommentare) aktiviert werden.
Zusätzlich sollte auch der Standard “admin”-Account umbenannt werden. Zudem sollten natürlich nur sichere Passwörter verwendet werden.
Plugin: Advanced noCaptcha & invisible Captcha - Web-Application-Firewall (WAF) aktivieren
In der Vergangenheit kam es bereits vor, dass sogenannte Zero-Day-Schwachstellen verfügbar waren, durch welche urplötzlich alle Installationen eines bestimmten CMS für einen Angriff anfällig werden. Daher empfiehlt es sich eine WAF, wie beispielsweise von Cloudflare oder Sqreen, vorzuschalten. Sollte es zu einem solchen Szenario kommen, also dass noch kein Update verfügbar ist, um sich vor einem neuartigen Angriff zu schützen, dann wurden bereits von Cloudflare Regeln festgelegt, um diese Angriffe zu blockieren.
Tool: Sqreen für WordPress
Ein bedeutsames Praxisbeispiel zeigt der folgende Screenshot aus Sqreen. Dort werden zahlreiche Vulnerability Scanner erkannt und blockiert. Ein Grundrauschen an Traffic, was sonst gänzlich unerkannt bleiben würde. Diese Aufrufe wurden erfasst nachdem eine Sicherheitslücke im WordPress Plugin “wp-file-manager” bekannt wurde.
Auch interessant: Run a targeted watering hole attack with your WordPress Blog
Hallo Javan,
zuerst einmal toller Artikel.
Zu Punkt 1: Ich dachte immer wieder diese Toolkits wären eher Fluch als Segen aber anscheinend hat sich da viel gemacht. Als ich zum ersten mal damit zutun hatte war das über Confixx, was aber sehr viele Jahre her ist. Das war damals mehr schlecht als recht, weil es einen mehr einschränkte als wirklich half. Wie es mir scheint hat sich viel in den letzten Jahren getan.