Sicherheit der lokalen Infrastruktur erweitern

Natriumchlorid

Lt. Junior Grade
Registriert
Sep. 2013
Beiträge
378
Endlich sind wieder die kalten und dunklen Tage eingetroffen, da kann man sich wieder um die heimische Infrastruktur kümmern. :D

Ich möchte mein Setup ein wenig härten. Dazu habe ich mir ein paar Gedanken gemacht und möchte gerne dazu Meinung der Community zu diesem Projekt einholen.
  • OPNsense (Firewall)
  • Proxmox (Hypervisor auf dem Server, ausgestattet mit unterschiedlichen VLANs)
  • Nextcloud (Debian LXC in der DMZ mit nginx, php & mariadb)

StatusQuo.png

Derzeit hoste und exponiere ich eine Nextcloud-Instanz, welche ich regelmässig als Cloud-Storage und Backup-Lösung für mich und für Freunde und Familie verwende. Bereits im Sommer habe ich eine "Härtungsmassnahme" unternommen und die Portfreigabe auf meiner Firewall eingeschränkt. Mir war schlicht unwohl dabei zu sehen, wie die ganzen Bots und Skripte permanent meine Firewall abklopfen. Als Sofortmassnahme habe ich den Port 443/tcp deshalb nur noch für die offiziellen IP-Ranges von Cloudflare auf meine Nextcloud-Instanz freigegeben. Damit konnte ich den Lärm auf der Firewall gut eindämmen.

Mir war bewusst, dass ich damit auch das Vertrauen in die Hände von Cloudflare gebe, da nun Data-in-Transit nicht mehr in meiner Obhut ist. Das wäre der erste Kritikpunkt. Als zweiten Punkt sehe ich die aktuell unnötige Route, welche ich laufe wenn ich von intern meine Instanz über HTTPS erreichen möchte. Aber das lässt sich leicht beheben. Ich möchte sowieso eine neue Domain verwenden und meine Cloud upgraden, da kann man das alles in einem Zuge machen. :D

1701547594534.png

Jedenfalls, der Grund weshalb ich Cloudflare als Reverse Proxy für HTTPS und DNS verwende, ist die Möglichkeit eine kostenlose WAF zu nutzen und meine reale IP vor dem Angreifer zu verbergen. Aber so ganz zufrieden bin ich damit nicht.

Mein Ziel ist es nun, dass ich meine Firewall komplett abdichte und sämtliche Portfreigaben deaktivere. Da orientiere ich mich ein wenig an der Philiosophie von Zero Trust. Ich möchte meine Angriffsfläche der privaten Infrastruktur komplett vernichten.
Dazu habe ich mir den folgenden Aufbau überlegt:
DefenseUp.png


Als externe Instanz möchte ich mir einen VPS mieten. Dieser bietet mir eine statische IPv4-Adresse, die Möglichkeit einen nginx zu hosten und auf eingehende WireGuard-Tunnel Verbindungen zu warten. Meine interne Firewall soll dabei den Tunnel mit einer ausgehenden Verbindung aufbauen und erhalten.
Der nginx Reverse Proxy soll oberflächlich die Scanner und Bots filtern, indem der Requests nur dann weiterleitet, wenn auch der korrekte Hostname für den Dienst verwendet wird. Anderenfalls schickt er ein connection refused (HTTP 444) zurück. Sofern ein valider Request reinkommt, soll die Anfrage über die bestehende Tunnelverbindung zu meiner Nextcloud-Instanz in der DMZ weitergeleitet werden. Zwischen der intern und externen nginx-Instanz möchte ich nochmal zusätzliche Sicherheit schaffen in Form von Client-Zertifikaten (analog zu Cloudflare).
Den internen nginx würde ich anpassen, sodass auch wieder der interne Zugriff ohne Umwege möglich ist.
Durch den Aufbau der Tunnel-Verbindung von intern nach extern muss ich auch meine private IP nicht mehr in Form eines DynDNS A Records preisgeben. Aktuell weiss ein Angreifer diese IP auch nicht, aber Cloudflare. ;)

Was mir aber in dem Setup aktuell fehlt, ist die Erfahrung mit einer WAF.
Gibt es gute WAF-Lösung (auf Basis von Linux), mit denen der grobe Schmutz vom Internet (Bots, Scanner, Crawler, ...) gefiltert werden kann?
Ich habe die letzten Tage auf Reddit von Authelia gelesen. Es ist zwar keine WAF, aber ich sehe das als einen zusätzlichen Layer Sicherheit, bei dem sich der Benutzer authentifizieren muss, bevor er auf die eigentliche Instanz weitergeleitet wird. Das könnte aber negative Konsequenzen bei der UX haben.
Mit Authelia müsste ich mich sowieso intensiver auseinander setzen, da ich die Funktion noch nicht ganz verinnerlicht habe.

Und jetzt seid ihr gefragt, denn ich würde gerne Meinungen, Challenges und Verbesserungsvorschläge zu dem Setup einholen. Ich mach den Scheiss echt gerne und eventuell hat jemand noch einen guten Einfall, wie das Setup zusätzlich gehärtet werden könnte. :)

Ein frohes erstes Adventwochenende euch allen.
 
  • Gefällt mir
Reaktionen: Azghul0815
Natriumchlorid schrieb:
denen der grobe Schmutz vom Internet (Bots, Scanner, Crawler, ...) gefiltert werden kann?
Der ganze "Schmutz" ist aber überhaupt kein Problem wenn du sichere Passwörter und Software ohne Lücken einsetzt.

Wenn ich mich recht erinnere, kann fail2ban auch mit nextcloud verwendet werden. Daher würde ich einfach alles was von extern zu penetrant anklopft bannen.
Die Wahrscheinlichkeit, dass du dich damit irgendwann aussperrst, z.b.weil die aktuelle IP des Hotels, in dem du grade bist, zufällig auf deiner Ban-Liste gelandet ist, ist doch schon sehr unwahrscheinlich und weit her geholt.

Also nicht mit einer Whitelist arbeiten, sondern mit einer automatisch anwachsenden Blacklist.
 
  • Gefällt mir
Reaktionen: Natriumchlorid
h00bi schrieb:
Der ganze "Schmutz" ist aber überhaupt kein Problem wenn du sichere Passwörter und Software ohne Lücken einsetzt.
Ersteres ist durch MFA zusätzlich abgesichert. Aber wie sichert man Letzteres richtig ab? Gegenüber Zero-Days bist du machtlos. Klar regelmässig Patchen ist die Devise, aber wie am Beispiel von OwnCloud ersichtlich bringt die dir beste Sicherheit und das beste Patch-Management nichts mehr, wenn jemand ein Loch in der Software gefunden hat.
Meine Idee wäre es vor der Instanz noch eine WAF zu schalten oder eben einen zusätzlichen Layer an Authentifizierung einzubauen.
 
Zurück
Oben