WordPress absichern - Sicherheit erhöhen per .htaccess + Firewall
Wie lässt sich WordPress am einfachsten und effektivsten vor Hackerangriffen schützen? Zum Thema WordPress Sicherheit gibt es bereits viele umfangreiche Artikel und verschiedene Herangehensweisen, wie man WordPress absichern kann. In diesem Artikel geht es darum, mit wenig Aufwand deutlich mehr Sicherheit zu schaffen.
Dieser Blogpost ist absichtlich kurzgehalten. Was nicht viel bringt, zu kompliziert ist oder ohne Fachkenntnisse kaum umsetzbar, wurde bewusst weggelassen.
WordPress Sicherheit - effektive Maßnahmen für erweiterten Schutz
Um WordPress sicher zu betreiben, ist allem voran die Wartung des Systems sehr wichtig. Regelmäßige Updates, besonders das schnellstmögliche Einspielen sicherheitskritischer Updates stehen klar im Vordergrund. Es sollte immer jemand ein Auge darauf haben.
WordPress absichern - was bedeutet das eigentlich?
Bevor wir zu den erweiterten Absicherungsmaßnahmen kommen, eine Kurzzusammenfassung der Basics:
- Starke Passwörter (Admin Konto, FTP/SSH, Datenbank, Hosting Control Panel).
- HTTPS/SSL für die gesamte Site erzwingen.
- So wenige Plugins und Themes wie möglich installieren (ungenutzte löschen).
- Themes und Plugins nur aus sicheren/originalen Quellen beziehen.
- Regelmäßige Backups (z.B. per "UpdraftPlus Backup Plugin").
- Eine sichere Hosting Umgebung.
- Mehrere WordPress Instanzen sollten unbedingt isoliert, unter jeweils eigenen Systemusern laufen (-> vermeidet Massenhacks).
Einfache Hostingpakete, in denen eine Trennung nicht möglich ist, sind für das Hosting mehrerer Sites ungeeignet.
- Mehrere WordPress Instanzen sollten unbedingt isoliert, unter jeweils eigenen Systemusern laufen (-> vermeidet Massenhacks).
- Sichere Endgeräte, von denen aus auf die Website zugegriffen wird.
Über diese grundlegenden Dinge hinaus haben sich die folgenden Maßnahmen für das weiterführende Hardening bewährt.
1) Die .htaccess im Hauptverzeichnis ergänzen
Die Macht der .htaccess-Datei ist in Sachen Sicherheit unübertroffen. Einzelne Dateiaufrufe lassen sich darüber sperren und sogar ganze Verzeichnisse abriegeln.
Im Stammverzeichnis kann man die .htaccess Datei wie folgt ergänzen, damit nur noch die PHP Dateien aufgerufen werden können, welche einen Direktaufruf benötigen.
# Blockiert alle *.php Aufrufe außer index.php und ausgewählte Core Dateien im Document Root.
# Die Unterverzeichnisse (wp-admin|wp-content|wp-includes) bleiben davon unberührt.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-content|wp-includes)
RewriteCond %{REQUEST_URI} !^/(index|wp-login|wp-comments-post|wp-cron|wp-trackback|xmlrpc)\.php
RewriteRule ^(.*\.php)$ - [R=403,L]
2a) Absicherung per .htaccess - wp-content schützen
Gerade beim sehr dynamischen und umfangreichen /wp-content Verzeichnis macht das überaus viel Sinn. Eingeschleustem PHP-Code und Backdoors wird so der Garaus gemacht.
Angenommen ein Hacker hätte unter
https://www.webseite-bereinigen.de/wp-content/plugins/akismet/wrapper.php
einen Backdoor-Code platziert, ist diese Datei bei abgesichertem wp-content Verzeichnis nicht aufrufbar (403 - Forbidden). Gleiches gilt für alle anderen Dateien, die sich in den Tiefen von wp-content befinden oder, wie auch immer, eingeschleust werden.
In der Vergangenheit gab es Angriffe auf Plugin-Sicherheitslücken, die sich allein durch die .htaccess Absicherung sogar vollständig abwehren ließen.
Siehe WP File Manager und Contact Form 7 Vulnerabilities.
Das WordPress Verzeichnis überhaupt - wp-content absichern
Die .htaccess Anweisungen können einfach in eine neu erstellte oder unter /wp-content/.htaccess bereits bestehende Datei kopiert werden. In sehr seltenen Fällen sind weitere Ausnahmen nötig. Falls hier etwas noch nicht erfasst sein sollte, bitte die Kommentar Funktion unten nutzen.
Upload-Ordner schützen
Auch der /wp-content/uploads Ordner kann noch mal eigenständig mit einer .htaccess Datei geschützt werden. PHP Dateien haben darin grundsätzlich nichts zu suchen - daher sollte man alle .php Aufrufe sperren. Die /wp-content/.htaccess deckt zwar auch schon das uploads Verzeichnis ab - fall diese mal abhanden kommen sollte (versehentlich gelöscht wird), kann dieser doppelte Schutz jedoch nicht schaden.
2b) Nginx Konfiguration für den wp-content Schutz
Das .htaccess Konzept wird nur vom Apache Webserver unterstützt. Die Nginx Konfiguration lässt sich leider nur bei wenigen Hostern anpassen.
3) WordPress mit einer Firewall absichern (NinjaFirewall)
Als hochwirksame und performante Firewall ist das Plugin "NinjaFirewall" zu empfehlen. Entgegen anderer Lösungen gibt es hier keine datenschutzrechtlichen Bedenken - die Firewall telefoniert nicht nach Hause. Zudem ist die NinjaFirewall eine der performantesten Firewalls, da sie die Datenbank nicht mit Logeinträgen befeuert, wie z.B. Wordfence.
Neue Sicherheitsregeln werden allen Usern gratis zur Verfügung gestellt. Standardmäßig wird stündlich gecheckt, ob es Updates gibt, die vor neuartigen Hacks schützen.
Ein weiteres nützliches Feature sind die E-Mail Benachrichtigungen bei ausstehenden Sicherheitsupdates.
4) Den WordPress Login absichern - /wp-admin & wp-login.php verriegeln oder verstecken (optional)
Aktuelle WordPress-Hacks stehen vielfach auch im Zusammenhang mit unerwünschten oder gestohlenen Admin User Zugängen - Logins über /wp-admin oder wp-login.php mit anschließendem malicious Plugin/Theme Upload.
Wenn es darum geht, den WordPress Login zusätzlich abzusichern, kann man entweder die Login Protection der NinjaFirewall nutzen (dafür gibt es einen Menüpunkt) oder man versteckt den Login - ändert die Login-URL einfach ab.
Eine weitere Lösung für mehr Sicherheit ist die im WordPress Umfeld noch wenig etablierte 2-Faktor-Authentifizierung.
4a) 2-Faktor-Authentifizierung einrichten und für Admin User erzwingen
WebAuthn - passwortloser Login als 2FA Alternative
Eine moderne Möglichkeit, sich ohne direkte Passworteingabe einloggen zu können, ist der WebAuthn Standard (ein FIDO2-Projekt des W3C).
Anstelle des Passworts können hier Apples Touch/Face ID, Windows Hello (Pin, Gesichtserkennung) und die biometrische Bildschirmsperre unter Android für die Authentifizierung genutzt werden.
Einmal eingerichtet, kann die Anmeldemethode in den Benutzereinstellungen als primär gewählt werden und sorgt so für eine schnelle, komfortable und sichere Anmeldung.
WPS Hide Login
Als zweite Variante kann es durchaus Sinn machen, den Login komplett zu verstecken. Eher weniger Nutzen hat das natürlich, wenn es einen Frontend Login gibt (wie z.B. den Kundenlogin im Shop).
Für die Umbenennung des Logins bietet sich das Plugin "WPS Hide Login" an. Nach der Aktivierung lässt sich unter Einstellungen -> Allgemein am Seitenende nun eine individuelle Login-URL festlegen - /admin-in beispielsweise.
wp-login.php und /wp-admin sind dadurch ausgeloggt nicht mehr aufrufbar. Dementsprechend wird es gar nicht mehr zu Login Versuchen über die Standard URLs kommen.
Bei vielen Hacks aus der Vergangenheit wurden Plugins/Themes hochgeladen. Aus vielen Logs ersichtlich per Einstieg über wp-login.php / wp-admin.
0815-Passwörter/Privilege Escalation/Session Hijacking oder Cookie Stealing sind die Ursachen.
Die Login Absicherung nach einer der hier vorgeschlagenen Möglichkeiten setzt dem einen Riegel vor.
Wer sich detaillierter mit dem Thema WordPress Sicherheit befassen möchte, kann sich hier eine 7-teilige Artikelserie dazu anschauen: https://www.kuketz-blog.de/basisschutz-wordpress-absichern-teil1/
Zusammenfassend betrachtet ist die Maximierung der Sicherheit kein Hexenwerk - WordPress absichern für Aufsteiger - in erster Linie NinjaFirewall sei Dank.
- Details
- Zuletzt aktualisiert: 22. März 2022
Nginx ist allerdings in Sachen Sicherheit ziemlich leistungsfähig. Auch was die Verwendung von Resourcen und die Performance im Allgemeinen angeht...
Ich habe letztens einen guten Badbotblocker installiert. Seitdem ist auf dem Server Ruhe eingekehrt.
github.com/.../...
Auch XSS, CSP header usw. lassen sich relativ einfach einrichten.
Vielen Dank für den Beitrag!
Hier sollte aber beachtet werden, dass viele Chache-Programme ihre php Dateien dort ablegen. Z.B. WP-Rocket.
es gibt sehr vereinzelt Themes oder Theme Bestandteile, die über PHP Skripte in /wp-content ihre Ressourcen laden - mit WP Rocket generell gibt es keine Probleme - nutze ich auch häufig in dem Setup.
Um sicherzugehen, dass nichts ungewollt blockiert wird, sollte man die Site mit Blick auf den Netzwerk Tab der Browser Konsole durchtesten. Einige Ausnahmen für gängige Plugins gibt es ja schon - ob ggf. weitere nötig sind, sieht man dann.
Meistens liegt es daran, dass die Leute sich nicht die Zeit nehmen, wichtige Updates und Wartungsarbeiten an ihrer Website durchzuführen.
Sie haben einige großartige Wege beschrieben, wie man die Website zu 100% sichern kann. Echt gut! Hoffentlich werden mehr Leute diese Anleitungen lesen.
Vielen Dank für die Zusammenstellung des Artikels! :)
Kollegiale Grüße - Adriano
Gruß
Argin
LG
Im laufenden Betrieb bevorzuge ich die NinjaFirewall als beste Lösung.
Lieben Gruß Mia
Danke und weiter so!