mgutt Posted March 26, 2021 Share Posted March 26, 2021 Was man auch noch umsetzen könnte wäre ein "Knock Knock" Prinzip. Und zwar habe ich bei einer meiner Websites eine Firewall realisiert die zb die Datei /firewall/11.22.33.44.txt erstellt, wenn ein Besucher mit der IP 11.22.33.44 eine Datei aufruft, die er nicht aufrufen darf. In der .htaccess prüfe ich dann einfach ob die Datei existiert und ein User mit der gesperrten IP bekommt dann ein Captcha präsentiert. Das Prinzip könnte man auch leicht umdrehen. Also alle IPs bis auf den Aufruf von nextcloud.example.com/secretfilename.php sind verboten und wenn diese aufgerufen wird, landet die aufrufende IP in einer Whitelist. Nach x Tagen lässt man diese automatisch wieder löschen. Außerdem kann man durch die secretfilename.php auch eine E-Mail senden lassen. Dann weiß man direkt, wenn die Datei jemand aufgerufen hat. Wenn daran Interesse besteht, kann ich das gerne mal in einer Anleitung verfassen. 2 Quote Link to comment
Anym001 Posted March 27, 2021 Share Posted March 27, 2021 15 hours ago, mgutt said: Wenn daran Interesse besteht, kann ich das gerne mal in einer Anleitung verfassen. Wäre super, würde mich interessieren. Quote Link to comment
MartinG Posted March 27, 2021 Share Posted March 27, 2021 18 hours ago, Anym001 said: - Regelmäßig den Nextcloud Scan machen https://scan.nextcloud.com/ Danke. Das kannte ich noch nicht. So ein grünes A+ beruhigt dann doch einigermaßen. 1 Quote Link to comment
mgutt Posted March 27, 2021 Share Posted March 27, 2021 9 hours ago, Anym001 said: Wäre super, würde mich interessieren. Teste mal: https://gutt.it/website-firewall-oder-wie-schuetze-ich-meine-private-cloud/ Quote Link to comment
Anym001 Posted March 27, 2021 Share Posted March 27, 2021 51 minutes ago, mgutt said: Teste mal: https://gutt.it/website-firewall-oder-wie-schuetze-ich-meine-private-cloud/ Wo genau muss die Datei platziert werden? Unter /mnt/user/appdata/nextcloud ? Wie bringe ich NPM dazu das er „HTTP_X_FORWARDED_FOR“ durchführt? Quote Link to comment
mgutt Posted March 27, 2021 Share Posted March 27, 2021 26 minutes ago, Anym001 said: Wo genau muss die Datei platziert werden? Da wo auch die index.php liegt. 30 minutes ago, Anym001 said: Wie bringe ich NPM dazu das er „HTTP_X_FORWARDED_FOR“ durchführt? Teste das mal: https://github.com/jc21/nginx-proxy-manager/issues/112#issuecomment-559219019 Quote Link to comment
Anym001 Posted March 30, 2021 Share Posted March 30, 2021 Also ich habe jetzt mal folgendes gemacht: 1. Bei NPM die Advanced Settings angepasst und folgendes hinzugefügt; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; Wie kann ich prüfen, ob er auch wirklich die IP Adresse sauber durchschleust? 2. Die firewall.php erstellt, mit deinem Inhalt gefüllt und unter "/mnt/user/appdata/nextcloud/nextcloud" abgelegt. 3. Aufruf meiner Nextcloud Website mittels: "https://meinedomain.goip.de/firewall.php" Daraufhin hat er eine firewall.php.bak Datei angelegt. Ein Verzeichnis für den key geht mir jedoch ab. Zugriff auf die Nextcloud Website ist nach wie vor möglich. Quote Link to comment
mgutt Posted March 30, 2021 Share Posted March 30, 2021 19 hours ago, Anym001 said: Daraufhin hat er eine firewall.php.bak Datei angelegt. Eine solche Funktion hat mein Script gar nicht. Hast du die Datei evtl mit dem Config Editor bearbeitet? Der macht das. 19 hours ago, Anym001 said: Zugriff auf die Nextcloud Website ist nach wie vor möglich. Was hast du denn gesehen als du firewall.php aufgerufen hast? Schau mal bitte in die .htaccess Datei. Wurde da der Firewall-Code hinzugefügt? EDIT: Version 0.2 enthält nun auch die deutsche Übersetzung: https://gutt.it/website-firewall-oder-wie-schuetze-ich-meine-private-cloud/ Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 9 hours ago, mgutt said: Hast du die Datei evtl mit dem Config Editor bearbeitet? Der macht das. Habe nun deine Datei, die du bereitgestellt hast, mittels Krusader in das besagte Verzeichnis kopiert. 9 hours ago, mgutt said: Was hast du denn gesehen als du firewall.php aufgerufen hast? Schau mal bitte in die .htaccess Datei. Wurde da der Firewall-Code hinzugefügt? Aufruf meiner Nextcloud Website mittels: "https://meinedomain.goip.de/firewall.php" Werde direkt auf den Login Screen weitergeleitet. Die .htaccess Datei wurde nicht bearbeitet und auch kein Verzeichnis /firewall angelegt. Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 2 hours ago, Anym001 said: Aufruf meiner Nextcloud Website mittels: "https://meinedomain.goip.de/firewall.php" Werde direkt auf den Login Screen weitergeleitet. Auch so eine Weiterleitung gibt es nicht in meinem Script. Für mich klingt das so, als sei die Datei nicht da. Oder könnte sie vielleicht die falschen Rechte besitzen... Check mal bitte: ls -la /mnt/user/appdata/nextcloud/nextcloud Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 4 minutes ago, mgutt said: Für mich klingt das so, als sei die Datei nicht da. Oder könnte sie vielleicht die falschen Rechte besitzen... Check mal bitte: ls -la /mnt/user/appdata/nextcloud/nextcloud Sollte eigentlich so passen: Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 Öffne mit F12 den Netzwerkmonitor des Browsers und öffne die firewall.php erneut, aber diesmal hängst du ein Fragezeichen dran: "https://meinedomain.goip.de/firewall.php?" Damit will ich sicherstellen, dass der die Weiterleitung nicht zwischengespeichert hat. Außerdem kannst du nun im Monitor sehen warum weitergeleitet wurde. Also 404 oder 403 oder 301 usw. Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 Kann es sein, dass in der .htaccess von Nextcloud eine Weiterleitung auf die login-Seite erzwungen wird? EDIT: Ja, da ist eine Weiterleitung drin. Sorry, ich hatte nie einen Login angelegt beim Testen ^^ Nach Anlegen des Logins fügt Nextcloud das in der .htaccess hinzu: ErrorDocument 403 // ErrorDocument 404 // <IfModule mod_rewrite.c> Options -MultiViews RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1] RewriteRule ^core/preview.png$ index.php [PT,E=PATH_INFO:$1] RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav)$ RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico$ RewriteCond %{REQUEST_FILENAME} !core/img/manifest.json$ RewriteCond %{REQUEST_FILENAME} !/remote.php RewriteCond %{REQUEST_FILENAME} !/public.php RewriteCond %{REQUEST_FILENAME} !/cron.php RewriteCond %{REQUEST_FILENAME} !/core/ajax/update.php RewriteCond %{REQUEST_FILENAME} !/status.php RewriteCond %{REQUEST_FILENAME} !/ocs/v1.php RewriteCond %{REQUEST_FILENAME} !/ocs/v2.php RewriteCond %{REQUEST_FILENAME} !/robots.txt RewriteCond %{REQUEST_FILENAME} !/updater/ RewriteCond %{REQUEST_FILENAME} !/ocs-provider/ RewriteCond %{REQUEST_FILENAME} !/ocm-provider/ RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.* RewriteCond %{REQUEST_FILENAME} !/richdocumentscode(_arm64)?/proxy.php$ RewriteRule . index.php [PT,E=PATH_INFO:$1] RewriteBase / <IfModule mod_env.c> SetEnv front_controller_active true <IfModule mod_dir.c> DirectorySlash off </IfModule> </IfModule> </IfModule> Man muss also nach "cron.php" noch diese Zeile ergänzen: RewriteCond %{REQUEST_FILENAME} !/firewall.php Erst dann kann man die firewall.php aufrufen. Das ist natürlich doof, da es die Installation der Firewall etwas verkompliziert. Ich hätte jetzt allerdings keine andere Idee wie man das lösen kann. Allerdings muss ich jetzt trotzdem etwas ändern, denn die Firewall muss zuerst ausgeführt werden, was aktuell nicht der Fall ist, da ich den Code am Ende der .htaccess hinzufügen lasse. Ich werde das in Version 0.3 korrigieren. Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 16 minutes ago, mgutt said: Kann es sein, dass in der .htaccess von Nextcloud eine Weiterleitung auf die login-Seite erzwungen wird? Folgender Eintrag in der .htaccess hat gefehlt: RewriteCond %{REQUEST_FILENAME} !/firewall.php Nun funktioniert es. Wie schaut das eigentlich mit bestehenden Verbindungen aus? zB mittels MobilerApp Werden die auch beeinflusst? Oder geht es hier nur um die Nextcloud Website direkt über den Browser? Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 Just now, Anym001 said: Wie schaut das eigentlich mit bestehenden Verbindungen aus? zB mittels MobilerApp Werden die auch beeinflusst? Wird alles blockiert. Die Apps greifen ja auf "deinedomain.de/remote.php" zu und werden daher von der Firewall abgewiesen. Also erst IP freischalten und dann ist Nextcloud erreichbar. Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 4 minutes ago, mgutt said: Wird alles blockiert. Die Apps greifen ja auf "deinedomain.de/remote.php" zu und werden daher von der Firewall abgewiesen. Also erst IP freischalten und dann ist Nextcloud erreichbar. Ah okay alles klar. Das heißt ich muss jedes Mal wenn sich meine IP Adresse ändert (somit jede Nacht), eine neue Freischaltung machen? Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 16 minutes ago, Anym001 said: Das heißt ich muss jedes Mal wenn sich meine IP Adresse ändert (somit jede Nacht), eine neue Freischaltung machen? Es wird die IP des Besuchers freigeschaltet, nicht die des Servers. Sollte sich die jeden Tag ändern, dann ja. Wäre es besser, wenn man eine komplette Range freischalten könnte? Ich weiß leider nicht ob sich die mobilen Clients über ein klassisches Cookie authentifizieren, sonst könnte man evtl ein Cookie prüfen. Was denke ich gehen sollte, dass wenn man die IP 1.2.3.4 hat, dass man im Firewall-Verzeichnis die Datei 1.2.3 erstellt und den .htaccess Code so anpasst, dass er nur die ersten drei Oktetts der IP prüft. Natürlich auch denkbar bei 1.2, also nur die ersten beiden. Laut dieser Website hat die Telekom zB die 2.160 bis 2.175: https://www.nirsoft.net/countryip/de.html Man müsste also 2.160, 2.161 usw als Datei im Firewall-Verzeichnis anlegen. Vorteil ist, dass man dann kaum noch was freischalten muss, Nachteil ist, dass man dann keinen Schutz vor Angreifern aus Deutschland hat. Wenn das interessant ist, probiere ich das mal aus. Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 (edited) 16 minutes ago, mgutt said: Wenn das interessant ist, probiere ich das mal aus. Für mich würde reichen, wenn die ersten beiden Stellen abgeprüft werden. Da es bei uns in Österreich nicht wirklich viele Anbieter gibt und ich mit den ersten beiden Stellen auf meinen persönlichen Anbieter einschränken könnte, wäre die Angriffsfläche schon mal um einiges reduziert. Edited March 31, 2021 by Anym001 Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 Ersetz mal den Firewall Code in der .htaccess dagegen: # ############ Firewall ############### <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} (\d+)\.(\d+)\.(\d+)\.(\d+) RewriteCond firewall/%1.%2.%3.%4 !-f RewriteCond firewall/%1.%2.%3 !-f RewriteCond firewall/%1.%2 !-f RewriteCond %{REQUEST_URI} !^/firewall\.php$ RewriteRule .* /firewall\.php [QSD,L,R=307] </IfModule> # ############ Firewall ############### Wenn du jetzt die Datei 12.34 in firewall/ erstellst, sollte der komplette Adressbereich "12.34.x.x" freigeschaltet sein. Muss ich mir jetzt nur mal überlegen wie man das umsetzt, dass das auch über die firewall.php angelegt werden kann. Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 (edited) Wenn ich also zB die Zeile "RewriteCond firewall/%1.%2 !-f" weglasse, werden nur die ersten 3 Stellen geprüft oder? 23 minutes ago, mgutt said: # ############ Firewall ############### <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} (\d+)\.(\d+)\.(\d+)\.(\d+) RewriteCond firewall/%1.%2.%3.%4 !-f RewriteCond firewall/%1.%2.%3 !-f RewriteCond firewall/%1.%2 !-f RewriteCond %{REQUEST_URI} !^/firewall\.php$ RewriteRule .* /firewall\.php [QSD,L,R=307] </IfModule> # ############ Firewall ############### Mir ist noch aufgefallen, dass die Dateien in /firewall zwar mit allen 4 Stellen erstellt wird, aber die letzte Stelle als Dateityp erkannt und umgeschrieben wird. Somit besteht die Dateibezeichnung selbst nur noch aus den ersten 3 Stellen. Edited March 31, 2021 by Anym001 Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 5 minutes ago, Anym001 said: Wenn ich also zB die Zeile "RewriteCond firewall/%1.%2 !-f" weglasse, werden nur die ersten 3 Stellen geprüft oder? Das kannst du alles so lassen. Solange keine entsprechende Datei da ist, macht die Regel auch nichts. 6 minutes ago, Anym001 said: Somit besteht die Dateibezeichnung selbst nur noch aus den ersten 3 Stellen. In Windows? Das ist egal. Liegt denke ich daran, dass du keine Dateiendungen anzeigen lässt. Aber wenn das einfacher ist, kann ich das ändern, so dass die Dateien mit der Endung .ip oder so angelegt werden. Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 Just now, mgutt said: 9 minutes ago, Anym001 said: Wenn ich also zB die Zeile "RewriteCond firewall/%1.%2 !-f" weglasse, werden nur die ersten 3 Stellen geprüft oder? Das kannst du alles so lassen. Solange keine entsprechende Datei da ist, macht die Regel auch nichts. Okay alles klar. 1 minute ago, mgutt said: 9 minutes ago, Anym001 said: Somit besteht die Dateibezeichnung selbst nur noch aus den ersten 3 Stellen. In Windows? Das ist egal. Liegt denke ich daran, dass du keine Dateiendungen anzeigen lässt. Aber wenn das einfacher ist, kann ich das ändern, so dass die Dateien mit der Endung .ip oder so angelegt werden. Scheint tatsächlich nur ein Darstellungsproblem zu sein. Verwende Krusader. .ip wäre vermutlich sprechender. Quote Link to comment
mgutt Posted March 31, 2021 Share Posted March 31, 2021 v0.3 ist fertig. Jetzt kann man IP-Bereiche freischalten, die Dateien enden auf .ip und der Firewall-Code steht nun ganz oben in der .htaccess. 1 Quote Link to comment
Anym001 Posted March 31, 2021 Share Posted March 31, 2021 Werde ich die Tage mal testen. Vielen Dank für deine Bemühungen! Was haltest du davon, wenn man bestimmte Länder mittels einer solchen Datei freigibt? Macht das überhaupt Sinn? Oder hebt das den eigentlichen Zweck der Firewall wieder auf? https://www.ip2location.com/free/visitor-blocker Meine IP’s passen nämlich leider nicht mehr zu deiner Liste von oben. Die scheint schon ziemlich alt zu sein. Wie kann man den aktuellen IP Bereich herausfinden? Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.