Jump to content

mgutt

Moderators
  • Posts

    11,356
  • Joined

  • Last visited

  • Days Won

    124

Everything posted by mgutt

  1. Ja, aber nur gegen Bares: https://www.ip2location.com/web-service/ip2location Ja, ist jetzt nicht "meine" Lösung. Der Code von ip2location macht ja ähnliches. Auf jeden Fall würde ich immer IPs vom Server selbst sperren lassen. Man kann so eine Firewall auch mit einer Blacklist umsetzen, dann wäre der Server sogar sicher gegen DoS Attacken. Ich nutze das auf meinen Websites aber nur gegen "Schnüffler". Also Bots, die nach Sicherheitslücken suchen. Dazu habe ich "Honeypots" verteilt wie zb ein leeres phpmyadmin/ oder wp-admin/ Verzeichnis und wenn das aufgerufen wird, wird die IP direkt gesperrt. Das aber eigentlich nur, damit diese Bots nicht meinen Server mit unsinnigen Anfragen bombardieren. Ich erstelle als nächstes ein Paket mit den IP-Ranges. Was ich gerade überlege: Man könnte auch eine E-Mail an den Admin senden lassen, wenn jemand die remote.php aufruft. Der könnte dann einen Freischaltungslink anklicken um eine IP freizuschalten. Vielleicht wäre das eine zusätzliche Lösung für mobile Clients. Die Frage ist dann nur wie viele Angreifer die remote.php öffnen. Weil sonst platzt das Postfach ^^
  2. Das hast du missverstanden. Mein Code prüft nur die Existenz von 3 Dateien. In dem Verzeichnis können daher problemlos 1 Millionen .ip Dateien liegen. Ich meinte, wenn man diese 4000 Regeln in die .htaccess packt, wie es die Website vorsieht. Das dürfte dann langsam sein, da dann wirklich alle 4000 IPs abgeglichen werden. Was nützt dir diese App, wenn Nextcloud oder eine App eine Sicherheitslücke besitzt? Innerhalb von PHP/MySQL zu blockieren ist meiner Ansicht nach "zu spät". Durch die .htaccess blockiert ja der Webserver selbst den Zugriff. Wobei ich bei der App nicht mal sicher bin, ob sie überhaupt den allgemeinen Zugriff sperrt. Ich glaube die nimmt nur Einfluss auf die Login-Seite.
  3. Wenn ich das richtig verstehe, dann ist die Einschränkung von macvlan (br0) wohl verursacht durch Linux selbst: https://forums.docker.com/t/macvlan-networks-unable-to-connect-to-host-from-container/51435/5 Und ich denke die Option das zu umgehen, legt dann eine Route an oder so.
  4. Ich glaube das kann man über das Templates nicht beeinflussen, sondern dafür muss man was im Container selbst ändern. Korrekt @ich777?
  5. Ich habe nach xfs_repair auf einer Platte Lost+Found Dateien gehabt. Waren unwichtig, aber durch einen normalen Mount wären die nicht aufgetaucht. Bei einer weiteren Disk wurde nicht nur bei "Phase 2" etwas repariert, sondern in 4 verschiedenen Phasen: Das war meine ich Disk8 des Arrays, welche zum Zeitpunkt des Absturzes auch nicht in Verwendung war. Da ist also etwas mehr passiert als nur Logs abzuarbeiten, würde ich sagen.
  6. Ah warte. Kann es sein, dass der Proxy Container auf Port 80 lauscht und die selbe IP wie der Server hat? Ich weiß gerade gar nicht ob das geht, aber das würde das erklären. Wenn du willst, dass ein Container auf Port 80 lauschen soll, dann musst du das Netzwerk "br0" beim Container auswählen und eine andere IP vergeben.
  7. In der ident.cfg steht bei PORT 5005. Das müsstest du geändert haben. Ein Container macht das eigentlich nicht. Da gehört normalerweise 80 hin. Und PORTSSL darf nicht den selben Port tragen. Also 5005 muss da auf jeden Fall geändert werden. Standard ist 443.
  8. Eine so dermaßen aufgeblähte .htaccess kann meiner Ansicht nach nicht so schnell sein, wie maximal 3 Checks ob die Datei XYZ.ip existiert, denn wenn man 10.000 IPs in die .htaccess packt, müssen die ja alle abgeglichen werden. Und das bei jedem Seitenaufruf. Müsste man mal messen. Man kann so eine Liste ja herunterladen und daraus ein Paket mit .ip Dateien machen, die man sich ins Firewall Verzeichnis legt. Ich baue dazu mal ein kleines Conversion Tool. Ich glaube das geht nur mit einer Rückwärtsanalyse aller existierender IPs.
  9. Nextcloud: To use the firewall with Nextcloud you need to search for this line in the .htaccess file: RewriteCond %{REQUEST_FILENAME} !/cron.php And add this line after it: RewriteCond %{REQUEST_FILENAME} !/firewall.php
  10. 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.
  11. Wenn du vom USB Stick im Ordner "config" die Datei "ident.cfg" öffnest, solltest du "PORT" und "PORTSSL" sehen. Stehen die noch auf 80 bzw 443? Wenn ja, dann lösch vielleicht einfach im selben Ordner die Dateien network.cfg und network-rules.cfg. Vielleicht ist irgendwas mit den Netzwerk-Einstellungen in die Hose gegangen. Wenn die fehlen, werden die beim Booten automatisch neu angelegt und der Server holt sich über DHCP eine neue IP. Kannst auch gerne mal vorher/nachher den Inhalt der beiden Dateien hier posten.
  12. Ja das ist korrekt. So funktionieren Unraid Shares. "Ausstellen" wäre in dem Fall die SMB Rechte so anpassen, dass man nicht über das Netzwerk darauf zugreifen kann. Also nicht exportieren und auf privat setzen.
  13. Das kannst du alles so lassen. Solange keine entsprechende Datei da ist, macht die Regel auch nichts. 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.
  14. 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.
  15. 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.
  16. 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.
  17. Melde dich mal im Terminal direkt auf dem Server an und starte von da einen Ping in Richtung deines Routers: ping -c 4 192.168.2.1 Auch mal prüfen ob eine Internetverbindung besteht: ping -c 4 google.com
  18. 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.
  19. Wie verbindest du denn die HDDs? Mich interessiert vor allem wie das Fantec Gehäuse so ist.
  20. Ich konnte gestern Abend meinen Server nicht mehr erreichen, wobei ein Docker noch erreichbar war, alle anderen, sowie die Unraid WebGUI und der Unraid SMB Server aber komplett tot waren. Ich habe dann die Ausgabe per HDMI geprüft und folgende Fehlermeldung wurde angezeigt: Metadata CRC error detected at xfs_sb_read_verify XFS (md11) Unmount and run xfs_repair XFS (md11) First 128 bytes of corrupted metadata buffer: ... Hex Code ... JMicron_Tech "md11" sagt ja eigentlich aus, dass Disk11 das Problem sein müsste. Aber witzigerweise ist Disk11 morgens erst frisch formatiert worden, komplett leer und müsste zu dem Zeitpunkt des Absturzes sogar geschlafen haben. Im Hex-Code steht außerdem "Jmicron_Tech". Das wäre wiederum eines der beiden USB-Laufwerke, die ich per Unassigend Devices gemountet habe und die gerade wie folgt einen sync durchführen: rsync -av --stats --checksum /mnt/disks/JMicron_Tech3/ /mnt/disk6 rsync -av --stats --checksum /mnt/disks/JMicron_Tech4/ /mnt/disk6 Jedenfalls habe ich die USB Laufwerke abgesteckt und jeweils kurz gewartet. Erst als ich das zweite abgesteckt habe, kam der Login-Bildschirm im Terminal. Keine Ahnung ob das Zufall war, aber ich werde diese Disk natürlich zuerst untersuchen. Dann habe ich mich angemeldet und gleich versucht rsync zu killen, weil das ja der einzige Prozess war, der auf die USB Laufwerke zugegriffen hat: pkill -x rsync -c Der Befehl wollte aber nicht zum Ende kommen. Ich habe dann mit "top" die Prozesse gesichtet und nichts lief. Also 0,1% CPU Last und kein rsync Prozess zu sehen. Entweder waren sie schon weg oder sie wurden doch gekillt. Ich habe den Befehl wiederholt, blieb aber trotzdem erneut hängen. Also habe ich versucht die WebGUI neuzustarten: /etc/rc.d/rc.nginx restart Es wurde aber nur angezeigt, dass Nginx noch läuft. Also habe ich den Server mit "reboot" versucht neu zu starten, aber auch das wollte kein Ende finden. Also muss ich ihn hart abschalten. Nach einem Neustart habe ich das Array im Wartungsmodus gestartet und für jede Disk eine Reparatur durchgeführt (sollte man immer machen, wenn man hart abschaltet) und er machte auch einiges auf den Disks: xfs_repair -vL /dev/md1 xfs_repair -vL /dev/md2 xfs_repair -vL /dev/md3 ... Erstaunlich ist, dass auf allen Disks Reparaturen durchgeführt wurden. Sogar auf Disk11, die ich gestern erst frisch formatiert habe und auf der wie gesagt keinerlei Dateien liegen: xfs_repair -vL /dev/md11 Phase 1 - find and verify superblock... - block cache size set to 2951880 entries Phase 2 - using internal log - zero log... zero_log: head block 859 tail block 855 ALERT: The filesystem has valuable metadata changes in a log which is being destroyed because the -L option was used. - scan filesystem freespace and inode maps... sb_fdblocks 4363244241, counted 4394060165 - found root inode chunk ... Phase 7 - verify and correct link counts... Maximum metadata LSN (1:857) is ahead of log (1:2). Format log to cycle 4. XFS_REPAIR Summary Wed Mar 31 11:16:01 2021 Phase Start End Duration Phase 1: 03/31 11:15:34 03/31 11:15:34 Phase 2: 03/31 11:15:34 03/31 11:15:43 9 seconds Phase 3: 03/31 11:15:43 03/31 11:15:43 Phase 4: 03/31 11:15:43 03/31 11:15:43 Phase 5: 03/31 11:15:43 03/31 11:15:43 Phase 6: 03/31 11:15:43 03/31 11:15:43 Phase 7: 03/31 11:15:43 03/31 11:15:43 Total run time: 9 seconds done Ich habe dann die USB-Laufwerke wieder verbunden. Sie werden nun wie erwartet nicht als "mdX" angezeigt, sondern nur als "sdX" bzw "/mnt/disks/X": lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT ... sdj 8:144 0 931.5G 0 disk └─sdj1 8:145 0 931.5G 0 part /mnt/cache sdk 8:160 0 16.4T 0 disk └─sdk1 8:161 0 16.4T 0 part sdl 8:176 0 10.9T 0 disk └─sdl1 8:177 0 10.9T 0 part sdm 8:192 0 10.9T 0 disk └─sdm1 8:193 0 10.9T 0 part /mnt/disks/JMicron_Tech3 sdn 8:208 0 10.9T 0 disk └─sdn1 8:209 0 10.9T 0 part /mnt/disks/JMicron_Tech4 md1 9:1 0 10.9T 0 md /mnt/disk1 md2 9:2 0 10.9T 0 md /mnt/disk2 md3 9:3 0 10.9T 0 md /mnt/disk3 md4 9:4 0 10.9T 0 md /mnt/disk4 md5 9:5 0 10.9T 0 md /mnt/disk5 md6 9:6 0 16.4T 0 md /mnt/disk6 md8 9:8 0 16.4T 0 md /mnt/disk8 md9 9:9 0 10.9T 0 md /mnt/disk9 md10 9:10 0 16.4T 0 md /mnt/disk10 md11 9:11 0 16.4T 0 md /mnt/disk11 Keines der USB-Laufwerke zeigt SMART-Fehler an. Der kurze SMART-Check ist auch fehlerfrei durchgelaufen. Was lernen wir daraus? Vermutlich liegt es am USB-Adapter. Der ist nach der langen Belastung vermutlich ausgestiegen. Aber warum zeigte der mir dann einen Fehler auf md11 an und warum zieht das gleich den ganzen Server in Mitleidenschaft? Finde ich echt nervig. Ich hätte ja gerne SATA für die Übertragung der Daten genommen, aber ich wollte nicht extra eine größere Unraid-Lizenz kaufen, weil ich ja schlussendlich weniger und nicht mehr Disks im Array haben will. Meine Lösung wird daher denke ich jetzt sein, dass ich die Parität abklemme und über SATA die Daten kopiere bzw ich muss mal schauen ob ich Hot Swap zum Laufen bringe. Dann könnte ich das Lizenz-Problem umgehen. War auf jeden Fall wieder ein kleines Abenteuer.
  21. mgutt

    Defekte HDD?

    Also brauchst du einen Slot für eine GPU? Weil dein Board hat ja 2x x8 und 3x x1 (der x4 ist bereits aus, wenn du eine zweite M.2 installierst): Vom Prinzip sollte das aber gehen. Du wirfst die Delock-Karte weg und steckst die zwei ASM1166 Karten einfach in die x1 Slots und verbindest aber jeweils nur 4 HDDs. Ein x1 Slot hat 1 GB/s Bandbreite, also ausreichend für 4x 250 MB/s. Plus die 6 SATA Ports auf dem Board macht das 14 HDDs. Reicht das? Ansonsten noch eine dritte Karte in den dritten x1 Slot oder eben in einen x8 Slot. Der Chipsatz ist übrigens über x4 mit der CPU verbunden. Daher ist das mit den drei M.2 eh so eine Sache (die ja alle mit dem Chipsatz verbunden sind). Wenn du jetzt 14 HDDs im Parity Check hättest und die würden mit 250 MB/s laufen, dann würden die schon 3,5 GB/s nutzen und x4 hat in Summe nur 4 GB/s. Da bleibt natürlich wenig Bandbreite für die ganzen M.2 übrig. Aber in der Regel macht man ja keinen Parity-Check während man die M.2 voll auslasten möchte. Also das nur als Info. Dein Board unterstützt laut Anleitung übrigens auf PCIe x16_2 so einen Adapter: https://www.supermicro.com/en/products/accessories/addon/AOC-SLG3-2M2.php Man könnte es also auch so machen: GPU in x8 Slot 2x M.2 über Adapter in x8 Slot ASM1166 in x4 Slot mit 6 HDDs ASM1166 in x1 Slot mit 4 HDDs 6 HDDs über Onboard-SATA Dann wäre man bei 16 HDDs und zwei x1 Slots und ein M.2 Slot wären sogar noch übrig und es gäbe keinerlei Flaschenhals, da die beiden M.2 direkt über die CPU laufen.
  22. mgutt

    Defekte HDD?

    Nein sind sie nicht. Die geringe Geschwindigkeit kommt nur durch die SATA Karte mit den Port Multiplier Chips. Ja ich wusste jetzt nicht wie viele Ports dein Board hat und wie viele Karten du schlussendlich brauchst. Nein. Es gibt keinen Chipsatz, der 12 SATA Anschlüsse verwalten kann. Das sind dann einfach Onboard-SATA-Controller wie die, die du auf der Karte hast, nur mit dem Unterschied, dass es meist teure Boards sind. Dann vergiss die Sache mit dem neuen Board. Kauf dir einfach eine bessere SATA Karte. Eine mit ASM1166 wäre empfehlenswert. Kostet um die 25 €: https://de.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText=asm1166%2B&ltype=wholesale&SortType=total_tranpro_desc&groupsort=1&page=1 Aber nimm eine mit x4 und nicht x1. x1 sind 1 GB/s Bandbreite und 6 SATA Ports in Summe kommen da deutlich drüber.
×
×
  • Create New...