Hallo! Hier ist ein Artikel zum Security für WordPress! – somit zum Plug-in NinjaFirewall. Das Security ist alleweil zur Sicherheit wie Feuerwall der WordPress-Installation sehr gut! NinjaFirewall ist eigentlich kein Plug-in, es sieht und fühlt sich nur so an. Es ist eine eigenständige Web Application Firewall, die jede HTTP- und HTTPS-Anforderung, die an ein PHP-Skript gesendet wird, scannt, ablehnt oder bereinigt, bevor es WordPress und eines seiner Plugins erreicht. – also echt Security für.
Die Vorlage des Artikels ist von Autor ‘Frank’. Das ist von einer Website, welche so nicht mehr im Web ist. In Nachfrage zum Artikel hat der Autor Frank zugestimmt, diesen Artikel aus den Urgründen des Web wiederzugeben. Ich hoffe so zur Erhaltung von wertvollem Content beizutragen.
- Der Artikel von WaybackMachine ist hier als Vorlage und eine Erweiterung meines Beitrag WordPress absichern.
Danke an Autor Frank! – so im Heute siehe
Anklicke das Emblem tekki-tipps.de! – das ist Website mit HUGO.
So und nun aber zum Thema NinjaFirewall!
Voranstellend!
Voranstellend! – zum WordPress Security
Es ist ja so mit Shared-Webhosting-Services, dass das Managed des Servers inklusive ist, also auch das zur Sicherheit im Bereich Hosting ist. Darum ist so Fragestellung an den Host wie das so zu verstehen ist.
Fragestellung an Web-Host-Server bplaced
Auf wegerl.at ist das Plug-in NinjaFirewall installiert. Nun die Frage, ob zum WordPress absichern so Plug-ins im Share-Hosting notwendig sind? – da ja hier das bplaced Share-Hosting das Gesamte managet beinhaltet.
Die Antwort
Das Plug-in ist soweit auf einer anderen Ebene, also gar nicht systemnah. Es kann aber sicherlich durch diverse Taktiken zur Abwehr von Bots beitragen, … kann also bleiben.
NinjaFirewall. –
Was kann das Security Plug-in?
WordPress Plug-in:
https://wordpress.org/plugins/ninjafirewall/
- Das Plug-in NINJAFIREWALL, im Titel Geheimtipp der Security Plugins.
Etwas kompliziertere Installation. Umfangreiches Security. Daten werden auf eigenem Webspace gespeichert und nicht irgendwo. Bisher keine Probleme.
Alle Scripte, die sich in den Verzeichnissen und Unterverzeichnissen der WordPress-Installation befinden, werden geschützt. Auch solche, die nicht Teil des WordPress Pakets sind. Selbst codierte PHP-Skripte, potentielle Backdoors und Shell-Skripte werden von NinjaFirewall gefiltert. Das ist cool und macht das zu einer echten Firewall. Und wahrscheinlich zu einer der stärksten Sicherheitsanwendung für WordPress.
Aber Sie müssen vorsichtig sein.
- Migrieren (auf einen anderen Server umziehen) Sie NICHT Ihre Website mit installierter NinjaFirewall. Stattdessen exportieren Sie die Konfiguration, deinstallieren Sie NinjaFirewall und migrieren Sie Ihre Website. Nach dem Migrieren installieren Sie NinjaFirewall neu und Reimportieren Sie die Konfiguration. Das geht alles über das Dashboard.
- Sichern Sie vor der Installation das WordPress Verzeichnis und die WordPress MySQL-Datenbank.
NinTechNet, der Hersteller hält sich nach eigener Aussage strikt an die WordPress Plug-in Developer Guidelines. Die Software NinjaFirewall (WP Edition) ist kostenlos, Open Source und voll funktionsfähig, keine “Trialware”, keine “crippleware”. Es ist nicht erforderlich, dass ein Registrierungsprozess oder ein Aktivierungsschlüssel installiert oder verwendet wird. Es werden laut NinTechNet keine Benutzerdaten gesammelt und es wird nicht nach Hause telefoniert.
Eigenschaften von NinjaFirewall
Wenn Sie bei einem Webhoster ganz normalen Webspace Paket gemietet haben, haben Sie aus Sicherheitsgründen keinen Zugriff auf die php.ini
von PHP
. Die php.ini
können Sie per SFTP deshalb auch nicht finden. Mehr dazu weiter unten.
Während der Installation erstellt NinjaFirewall die Datei php.ini
mit einem eigenen Eintrag in Ihrem wordpress
-Verzeichnis. Diese zusätzliche php.ini
Anweisung bewirkt, dass jede Anfrage auf Ihrer Website abgefangen und die Anforderungen und der Verkehr mit umfangreichen Regeln (und einer Whitelist) gefiltert werden. Um „gute” Anfragen von bösartigen zu trennen. Die „schlechten” Anfragen werden gelöscht, während normale Anfragen an Ihre WordPress Website weitergeleitet werden. Das Ziel ist eine Brandmauer, die verhindert, dass Ihre Website gehackt wird.
NinjaFirewall hat eine Reihe von Regeln, nach denen es funktioniert. Diese Regeln sind meist Zeichen oder Signaturen von Angriffen, die sie zu verhindern versucht. Gemäß der Dokumentation werden die Regeln aus dem WordPress.org-Repository stündlich (konfigurierbar auch abschaltbar) heruntergeladen, um auf weltweit erkannte Bedrohungen zu reagieren. Das Plugin kontaktiert die NinTechNet-Server während des Aktualisierungsvorgangs nicht.
Die Installation
Sichern Sie vor der Installation bitte Ihr WordPress-Verzeichnis und die WordPress-MySQL-Datenbank. Sollte etwas komplett kaputt gehen, können Sie so wieder auf einen funktionsfähigen Stand zugreifen. Außerdem sollten Sie folgende Dinge vorab mit Ihrem Provider klären:
- Welcher HTTP-Server und welche PHP Server API verwendet der Provider für Ihre Domain?
- Welche *.ini wird für das PHP Ihrer Domain verwendet –
php.ini
,user.ini
oderphp5.ini
?
Wählen Sie im Dashboard den Menüpunkt Plug-ins aus. Klicken Sie danach auf den Installieren-Button und suchen nach NinjaFirewall. Auswählen und installieren. Nach dem installieren und aktivieren des Plugin wird im Admin-Dashboard ein neuer Menüpunkt „NinjaFirewall“ angezeigt und es werden verschiedene Auswahlmöglichkeiten für die endgültige Installation abgefragt.
Wenn während Ihrer Installation andere Dinge abgefragt / angezeigt werden, kann das auch an einer neueren Version (neuer als 3.6) oder an einer anderen Server-Umgebung liegen:
NinjaFirewall fragt, ob die Installation im Full WAF mode oder im WordPress WAF mode durchgeführt werden soll.
Full WAF mode
Im Full WAF Modus wird NinjaFirewall jede HTTP und HTTPS Anfrage, die an ein PHP Skript gesendet wird, abfangen, scannen, ablehnen oder sanitisieren, bevor sie WordPress, seine Plugins oder sogar die Datenbank erreicht. Alle Skripte, die sich in den Blog-Installationsverzeichnissen und Unterverzeichnissen befinden, werden geschützt, auch solche, die nicht Teil des WordPress-Pakets sind. – Security.
Selbst verschlüsselte PHP Skripte (z.B. ionCube), potentielle Backdoors und Shell Skripte (z.B. c99, r57) werden von der Firewall gefiltert.
Das macht NinjaFirewall zu einer echten Firewall und gibt Ihnen das höchstmögliche Maß an Schutz: Sicherheit ohne Kompromisse. Um NinjaFirewall im Full WAF Modus zu betreiben, muss Ihr Server die Verwendung der auto_prepend_file
PHP Direktive erlauben.
PHP Direktive auto_prepend_file
wird benötigt, um den PHP-Interpreter anzuweisen, die Firewall vor WordPress oder einem anderen Skript zu laden. In den meisten Fällen funktioniert dies sofort, oder es sind nur einige kleine Anpassungen erforderlich. Aber in einigen wenigen Fällen, vor allem wegen der Beschränkungen einiger Shared-Hosting-Angebote, kann es einfach überhaupt nicht funktionieren.
WordPress WAF mode
Der WordPress WAF Modus erfordert das Laden von NinjaFirewall über das WordPress wp-config.php
Skript. Dieser Prozess macht es einfach zu installieren und die Installation wird immer erfolgreich sein, unabhängig von den Einschränkungen Ihres Hostingplans. NinjaFirewall wird noch vor WordPress, seinen Plugins und der Datenbank geladen und läuft genauso schnell wie der Full WAF Modus.
Der Nachteil dieses Modus ist, dass NinjaFirewall nur HTTP-Anfragen an WordPress abfangen und filtern kann. Einige Funktionen wie File Guard, URL Access Control und Web Filter (nur WP+ Edition) sind eingeschränkt. Obwohl er weniger leistungsfähig ist als der Full WAF Modus, bietet er dennoch ein höheres Schutzniveau und eine höhere Leistung als jedes andere Sicherheitsplugin.
Installation
Wir empfehlen, zunächst die Option Full WAF Mode zu wählen. Sollte dies nicht gelingen, können Sie mit diesem Installationsprogramm problemlos zum WordPress-WAF-Modus wechseln.
Übersetzt mit www.DeepL.com/Translator
Plug-in NinjaFirewall und
der Full WAF mode
„Wenn ich den Schutz schon installiere, dann will ich auch so viel Schutz wie möglich.“
Damit NinjaFirewall anstatt WAF-WP-Modus im vollständigen WAF*-Modus ausgeführt werden kann, muss der Server die Verwendung der PHP-Direktive auto_prepend_file
zulassen.
*WAF ist eine Web Application Firewall oder Web Schild, ein Verfahren, das Webanwendungen vor Angriffen über das Hypertext Transfer Protocol (HTTP) schützen soll. S. Web Application Firewall
Betreff Full WAF-Mode Host-Support
Plug-in NinjaFirewall vollständigen WAF-Modus würde die PHP-Direktive auto_prepend_file
gebraucht. Meine Frage: Ist das über Webhosting „bplaced pro“ möglich?
Die Antwort
Dem sollte nichts im Wege stehen. Die Regel auto_prepend_file
ist in der PHP-Installation standardmässig auf no value gestellt. S. auch phpinfo.bplaced.net.
Du kannst da selbst eine .php.ini
Datei erstellen (der Punkt vor dem PHP ist wichtig, denn so wird sie als Systemdatei erkannt). Das mit dem Eintrag:
php_value auto_prepend_file on
… und in das Webseitenverzeichnis – also in den Ordner www
– uploaden. Auf dem Webspace sollte nach Minuten die Funktion aktiv sein.
So weit das zum Security auf Wegerl-Array.
NinjaFirewall: Die Konfiguration
Jetzt kommen wir zur Konfiguration. Es gibt diverse Einstellungen.
Firewall Options
Update sind von oben nach unten.
UPDATE
Wegen der DSGVO die Einstellung für IP anonymization auf ON gestellt. Weitere Infos stehen unter Rechtssicherheit weiter unten im Beitrag.
WordPress Plugin NinjaFirewall IP anonymization
Dashboard | NinjaFirewall | Firewall Options
UPDATE
Seit Version 3.6.2 gibt es die angekündigte Option, die Log-Einträge nach einer vorgegebenen Zeit zu löschen. Dadurch kann auf die IP-Anonymisierung verzichtet werden. Option wieder deaktiviert.
Firewall Policies
Standardeinstellungen plus folgende Änderungen.
Basic Policies
Protect against username enumeration: Through the author archives, Through the login page, Through the WordPress REST API
Mit dieser Einstellung, – die wirklich funktioniert, wird der richtige Benutzername geschützt. Bei Eingabe von https://tekki-tipps.de?author=x wird die Startseite angezeigt und nicht der URL-Pfad mit https://tekki-tipps.de/author/benutzername. Der wirkliche, für das Log-in wichtige Benutzername kann dadurch geschützt werden.
Ein sehr gutes Feature. Viele Berichte weisen bei Log-in schützenden Maßnahmen immer darauf hin, dass der Log-in Benutzername kein Schutz ist. Weil über die o. g. Abfrage jeder Benutzername herausgefunden werden kann. Auch das verhindert NinjaFirewall.
File Guard
Enable File Guard: Yes – warten Sie die ersten E-Mails ab. In den E-Mails wird genau angegeben, welche Files auf dem Server verändert wurden. Für diese Pfade können Sie dann ein Exclude einrichten.
File Check
Snapshot erstellen.
Enable scheduled scans: Hourly
Event Notifications
Hier habe ich nichts geändert.
Log-in Protection
Enable brute force attack protection: Yes, if under attack.
XML-RPC API: Apply the protection to the xmlrpc.php script as well.
Signature: Disable the Brute-force protection by NinjaFirewall signature on the protection page.
Eine „brute force” Attacke – siehe dazu auch https://de.wikipedia.org/wiki/Brute-Force-Methode – ist der Versuch, durch automatisierte, tausendfache Eingabe von Benutzername und Passwort das Log-in eines Benutzers festzustellen. WordPress hat standardmäßig keinen Schutz, um dies zu verhindern und was genauso schlimm ist, kein Log, in dem solche Versuche dokumentiert werden.
Sie bemerken also überhaupt nicht, dass jemand versucht, in Ihre WordPress-Website einzubrechen.
Auch davor schützt Sie NinjaFirewall. Allerdings müssen Sie dies in den Einstellungen von „Log-in Protection“ zulassen. NinTechnet verwendet dazu die „HTTP-Authentifizierung“ – siehe dazu https://de.wikipedia.org/wiki/HTTP-Authentifizierung. Es wird also ein zusätzliches Log-in vor der eigentlichen Log-in-Seite von WordPress hinzugefügt. Aber keine Angst, die zusätzliche HTTP-Authentification wird nur im “brute force”-Fall abgefragt. So nervt sie im Normalfall nicht.
Original Hilfetext von NinjaFirewall
NinjaFirewall verarbeitet eingehende HTTP-Anfragen vor Ihrem Blog und seinen Plugins und ist damit das einzige Plugin für WordPress, das in der Lage ist, es vor sehr großen Brute-Force-Angriffen zu schützen, einschließlich verteilter Angriffe von mehreren tausend verschiedenen IPs.
HTTP-Authentifizierung für das WP-Log-in
NinjaFirewall bietet zwei Möglichkeiten der HTTP-Authentifizierung für die WordPress Login Protection an.
- Always ON, das bedeutet, es wird generell vor der
wp-login.php
Seite ein weiteres Login im Stil von WordPress geschaltet. - Yes, if under attack, wenn die Login Seite angegriffen wird, wird die HTTP-Authentifizierung automatisch davor geschaltet.
Der Benutzername und das Passwort für die HTTP-Authentifizierung wird auf der Konfigurationsseite gespeichert. Das Log kann auch in Server AUTH log geschrieben werden. Dies ist auf gemieteten Webspace nicht möglich und sollte deswegen nicht aktiviert werden. Wenn die Konfiguration auf „Yes, if under attack“ eingestellt wird, werden die „brute force“ Attacken im Firewall log dokumentiert.
NinTechnet vergleicht im folgenden Link NinjaFirewall, WordPress selber und diverse Plug-ins in Bezug auf „brute force“ Attacken: https://blog.nintechnet.com/wordpress-brute-force-attack-detection-plugins-comparison-2015/
Weitere interessante Seiten:
- https://blog.nintechnet.com/brute-force-attack-protection-in-a-production-environment/
- https://nintechnet.com/ninjafirewall/wp-edition/help/
Relevante Einschränkung der Login Protection
Die Login Protection von ähnlichen WordPress Plugins basieren darauf, dass immer dieselbe IP-Adresse für die „brute force“ Attacke benutzt wird. Je professioneller die Attacke ist, umso eher wird die IP-Adresse bei jedem Zugriff gewechselt. Ich hoffe, Nintechnet hält, was es verspricht und wehrt auch Angriffe mit dauernd wechselnden IP-Adressen ab. Ein möglichst täglicher Blick in das Log ist aber trotzdem notwendig.
Firewall Log
Auto delete log auf 7 Tage eingestellt.
Rechtssicherheit und Security
Dies ist keine Juristische und keine Rechtsberatung. Dieser Hinweis ist leider nötig. :-/
Update sind von oben nach unten.
UPDATE
Das Speichern von IP-Adressen ist durch die ab Mai 2018 geltenden neuen Datenschutzbestimmungen der DSGVO (EU GDPR) noch problematischer als vorher. Da es noch keine Gerichtsurteile gibt, weiß auch niemand so genau, wie hart die Bestimmungen ausgelegt werden.
Aber wenn gespeichert wird, dann nur für kurze Zeit. NinjaFirewall bietet zurzeit eine begrenzte Speicherung in den Log-Files nicht an. Die IP-Adressen können aber anonymisiert werden. In einem Supportbeitrag hat der Hersteller Nintechnet die Bereitschaft signalisiert, die IP-Adresse nach einem Zeitraum zu anonymisieren und wenn das nicht gehen wird, die IP-Adresse zu löschen. So war dann die Einstellung unter ‚Firewall Options‘ erst einmal auf anonymisieren zu stellen.
UPDATE
Seit Version 3.6.2 gibt es die angekündigte Option, die Log-Einträge nach einer vorgegebenen Zeitraum zu löschen. Dadurch kann auf die IP-Anonymisierung verzichtet werden. Option wieder deaktiviert und unter ‚Logs‘ Zeitraum eingestellt.
Statistik von Hackversuchen, bspw.
Monat | Critical | High | Medium | Gesamt |
2020-01 | 30 | 165 | 82 | 277 |
2020-02 | 2 | 41 | 98 | 141 |
2020-03 | 29 | 64 | 58 | 151 |
2020-04 | 0 | 1 | 11 | 12 |
2020-05 | 179 | 60 | 99 | 338 |
2020-06 | 2 | 94 | 61 | 157 |
Einarbeitung brauch es zum Know-how.