kleine günstige Privatwolke mit echter Firewall und andere Denkanstöße

Started by JeGr, January 18, 2021, 07:19:46 PM

Previous topic - Next topic
Aloha,

nach einem Gespräch mit meinem Studenten, der sich eine kleine Cloud zu Hause bauen möchte kam die Frage/Idee nach einer günstigen Möglichkeit, einen Server (bspw. Nextcloud) selbst zu hosten, aber ne echte Firewall vornedran zu haben. Daher hier kurz - für den Fall dass es jemand interessiert und vielleicht von Nutzen ist - ein Ideenanstoß, wie man das günstig haben kann:

Worum gehts?
-> Webserver in der Hetzner Cloud (KVM Container zu günstigem Preis #noad) mit vorgeschalteter "echter" Firewall

Warum?
-> Normalerweise bekommt man (in günstig) keine echte managebare Firewall vor seinen Webserver und muss so die potentielle Angriffsfläche auf der VM direkt versuchen zu mitigieren. Da sich einige nicht ganz so doll mit Linux, Kernel, IPtables/NFtables und Co auskennen (plus Fail2Ban und Co) ist bei "nur VPS mit Webserver" natürlich die Angriffsfläche größer. SSH muss da sein, Webserver auch, etc. etc. IPtables für Firewall, ggf. noch nen Frontend dafür (UFW, Shorewall, whatever) und dann noch fail2ban, damit man SSH ordentlich absichert. Und so weiter, und so weiter.
Wäre mit Firewall davor und ordentlichem VPN alles viel einfacher? Jau.

Wie konnte man das bisher hinbekommen?
-> Konnte man bislang natürlich alles auch schon machen, Stichwort eigener Server mieten. Dann mietet man eben die Hardware und kann darauf virtualisieren. Dann gehts aber schon in Runde 2: Virtualisierung aufbauen, KnowHow benötigt, dann ordentlich Netzwerken in der Virt Umgebung, Firewall VM vorschalten, und wieder - usw. usw. usw.
Zusätzlich ist man oft für Backup selbst verantwortlich, kann den Server nicht mal eben wechseln und ein eigener Server schlägt dann schonmal mit 20-30€ im Monat zu Buche (wenn man drauf virtualisieren können soll, also bezüglich IPs, Netzwerkkarten, etc.). Die kleinsten VPS Instanzen kosten aber gerade mal ~3 plus Backup (ein paar Cent).


Wie bekommt mans (bei Hetzner) einfacher hin?
-> Man braucht mind. 2 (ZWEI) kleine Hetzner Cloud Instanzen. Witzigerweise müssen sie durch das (etwas gewöhnungsbedürftige) Netzwerksetup von Hetzner nicht im gleichen RZ Standort sein (Nürnberg, Falkenstein oder Helsinki sind alle möglich).

  • VM(1) Eine davon wird mit einem Random OS gebucht
  • VM(2) Die andere installiert ihr mit dem System und Kram den ihr schützen wollt. Linux + Nextcloud bspw.
  • Via Cloud Dashboard erstellt ihr ein zusätzliches Netzwerk. Beispielhaft "xconnect" mit IP Range 172.16.16.0/24 (wird bei 2 Instanzen dann auf /29 runtergerechnet, einfach ignorieren :))
  • In diesem Netz was erscheint, könnt ihr den beiden Instanzen jetzt jeweils eine IP zuweisen (.2 und .3). Somit haben die VMs jetzt ein Interface mit ihrer Public IP4/IP6 und ein "internes". Das Interne (xconnect) muss am Einfachsten via DHCP bezogen werden, ihr bekommt dann aber definitiv die IP die ihr im Dashboard eingestellt habt. Wichtig ist DHCP deshalb, weil eure Instanzen eine /32 IP und P2P konfiguriert werden, damit jeder Traffic über die .1 des angelegten Netzes geht (Hetzner interner VirtRouter). Das ist notwendig, damit die den Traffic auch mit den anderen Instanzstandorten vernetzen können. Darum nicht wundern über das etwas "schräge" Setup :)
  • (1) Die erste VM wird ausgeschaltet und über das Dashboard konfiguriert. Bei Networking kann man nochmal checken, ob die private IP auch drauf gemappt ist (xconnect mit der .2 sollte hier auftauchen). Dann unter ISO-Images einfach das OPNsense Image auswählen und einhängen. Danach die VM starten.
  • (1) Nach Start von VM1 jetzt die HTML Konsole (Symbol rechts oben) aktivieren und die OPNsense via eingehängtem ISO einfach installieren. Sollte nicht schwer sein :) Nach Installation und DHCP auf WAN sowie DHCP auf LAN, solltet ihr die im Dashboard angezeigte IP4 auf dem WAN anliegen haben. Dann könnt ihr auf der HTML Konsole nach fertiger Installation und Boot euch auf die Konsole der Sense einloggen und einmal kurz "pfctl -d" abfeuern. Das sollte man natürlich nur kurzfristig machen und sich dann flotti galoppi einloggen, admin User ändern und den Zugriff auf WAN auf seine IP freischalten (via DynDNS Alias oder statischer IP). Seit 20.7 müsste das auch mit CLI dann irgendwie möglich sein, eine Regel schnell zu erstellen, so gings für mich zum Testen aber schneller :)
  • (1) Hat man die Sense soweit im Griff dass man nur noch selbst via GUI/SSH auf die Kiste kommt (und dann den HTTPS und SSH Port noch umverlagert auf Alternativen wie 4422 und 4443 bspw.) und zudem noch SSH nur via Key erlaubt (oder key+pw), sollte man erstmal annehmbar safe sein und kann in Ruhe die Sense durchkonfigurieren.
  • (1) Hier kann man sich jetzt wie mans kennt austoben. VPN Einrichten, Zugriff einrichten, Advanced Setup etc. für AES-NI usw.
  • (1) HAProxy Addon installieren (und ggf. schon einrichten)
  • (2) Auf der zweiten Kiste kann man jetzt bspw. sein Lieblings-Linux installieren und setzt sich seine Umgebung auf. Webserver, PHP, Python, etc.
  • (2) Natürlich sollte man das angelegte interne Interface (xconnect) nicht vergessen noch einzurichten, wenn nicht schon erledigt. Das sollte als zweites Netzwerk auftauchen und die beiden VMs sollten sich da schon gegenseitig pingen können (bzw. die OPNsense nach Freigabe der Regeln)
  • (2) ist das soweit fertig und man käme jetzt über die andere Public IP des Webservers auf den Server drauf und bekommt seinen Webserver, klemmt man die externe IP bzw. das Interface vom Hetzner-WAN ab :) (HTML Konsole via Dashboard dafür nutzen)
  • (2) Die zweite Kiste ist jetzt nicht mehr erreichbar von außen weil ihr WAN down ist. Oh my... ;)
  • (1/2) Mittels HAproxy auf der ersten VM (1) legen wir jetzt einfach die (2) als Backend für den HAproxy an und erstellen ein passendes Frontend. Da wir 80/443 auf der Sense freigemacht haben von der UI (und den Redirect bzw das Binding auf WAN abgeschaltet haben!) kann jetzt auch dort unser Webserver antworten, der dann einfach intern über das xconnect Netz mit (2) verbunden ist und so antworten kann.
Das ist jetzt natürlich nur in gröberen Zügen beschrieben, aber "you get the drift", ihr versteht wo es hingeht. Im Notfall, sollte die 2. VM down gehen, kann man mit etwas Vorbereitung und Absicherung die 2. VM auch wieder direkt ans Netz hängen, muss dann natürlich aber die DNS Einträge anpassen. Oder man nutzt gleich noch zusätzlich das Feature der Floating IP (für 1,19€ im Monat) und bucht sich eine IP die man flexibel von A nach B switchen kann im Dashboard dazu. Dann kann man sogar drangehen und sich eine zweite Firewall als Redundanz bspw. in anderer Location beschaffen wenn man Ausfallsicherheit will ;)

Natürlich kann man statt HAproxy auch einfach NATten (Port Forward) aber das kann ggf. etwas holpriger sein und braucht ggf. auf Seite (2) noch ein paar Zusatztweaks. Zudem läuft HAproxy besser und man kann noch weitere Funktionen implementieren :) Wenn es aber um exotischere Apps oder Protokolle geht, würde auch port forwarden gehen.

Alternativ kann man statt zweiter Kiste auch einen VPN Tunnel zur Sense aufbauen und dort damit dann quasi sein "LAN" bauen und routen. Auch das geht via OpenVPN und ordentliches Routing recht flexibel. Port Forwards ins LAN via VPN sind kein Problem und von den /64 an public IP6 die man bekommt, kann man sich via NPt bequem ein paar (Dutzend) ins LAN schicken, wenn man dort via fdXY:: Adressen auf OVPN Tunnel und internen Geräten die entsprechenden Kisten ansprechbar macht. Damit bekommt man dann auch recht einfach ein "deutsches/EU" IPv6 Netz über welches man interne Kisten erreichbar machen kann. Mit einem HE.net IP6 Tunnel gibt es ja manchmal leider wegen stumpf-dummer Geoblocks (und weil das übergeordnete Prefix eben he.net bzw. USA zugeordnet ist) manches Mal Probleme (bspw. Netflix via IP6 HE-net Tunnel).

Was ich leider noch nicht getestet habe: zusätzliche IPs (könnte man ggf. via Floating IPs realisieren) bzw. IP6 Prefix (leider nicht so einfach buchbar, muss ich mal nachfragen). Wenn sie bspw. ein Prefix routbar auf den VPS hauen würden, könnte man das dann auch nachgelagert ins Heimnetz routen und dort dann auf fdxy:: komplett verzichten und direkt public IP6 Space auflegen :)

Cheers
\jens
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

Nette Idee,

Ich habe mir mal die Instanzen angeschaut. Die kleinsten.

1. Denkt daran das die shared sind. Das heißt es kann extrem langsam werden.
2. Da sind in der Preisklasse 20 GB Traffic mit drinn. Dannach kostet es extra. #pro TB 1,19 Euro.

Für ein bissel Datenschubsen ausreichend.

;)

Schöner Bericht. Vielen Dank dafür, Jens.

Ich nutze auch Hetzner, um eine OPNsense vor einer Windows-Kiste zu betreiben. Funktioniert super. Habe dazu auch Floating IPs im Einsatz.

Netcup kann man an der Stelle aber auch erwähnen. Der Funktionsumfang kommt nicht ganz ran aber in puncto Netzwerkperformance durchaus beeindruckend. Einige von deren virtuellen Servern sind mit 2,5 Gbps ausgestattet und meist liefern sie auch stabil über 1,5 Gbps. Und das Ganze ab rund 10€ mtl. Das Setup ließe sich dort auch prima nachstellen.

@lewald: 20GB? 20 TB. Die muss man erstmal voll machen  :)
Und langsam war da bei mir noch nix. Ich habe viele von diesen Kisten im Einsatz.
,,The S in IoT stands for Security!" :)

Quote from: Gauss23 on January 18, 2021, 08:41:08 PM

@lewald: 20GB? 20 TB. Die muss man erstmal voll machen  :)
Und langsam war da bei mir noch nix. Ich habe viele von diesen Kisten im Einsatz.

Jup stimmt. Habe ich mit der Platte verwechselt.


Ja sind KVM/QEMU und ein Shared Host, natürlich. Aber die Kisten sind allesamt kaum überbucht was vCPUs angeht und darunter ist mind. ein Skylake Gen. Xeon mit ordentlich Bums. Umgezogen von einer kleinen Scaleway Instanz die das gleiche kostet mit dediziertem 2-Kern Atom sind das Welten. Ein dist-upgrade auf debian/ubuntu rattert da nur so durch, bei den Scaleway oder anderen kleinst-VPSen die ich gesehen habe - nunja ;) Aber ist natürlich geteilt.

Ist auch keine Werbung explizit für Hetzner, aber deren Interface und Setup erlaubt eben diese Transfernetze und Installation von eigenen ISOs bzw. OPNsense im Backend mit eigener gescheiten Konsole. Ohne dass man irgendwas spezifisch zubuchen muss, warten muss bis Konsolen dran sind etc. - daher einfach mal als Bastelidee :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

Quote from: Gauss23 on January 18, 2021, 08:41:08 PM
Schöner Bericht. Vielen Dank dafür, Jens.

Ich nutze auch Hetzner, um eine OPNsense vor einer Windows-Kiste zu betreiben. Funktioniert super. Habe dazu auch Floating IPs im Einsatz.

Netcup kann man an der Stelle aber auch erwähnen. Der Funktionsumfang kommt nicht ganz ran aber in puncto Netzwerkperformance durchaus beeindruckend. Einige von deren virtuellen Servern sind mit 2,5 Gbps ausgestattet und meist liefern sie auch stabil über 1,5 Gbps. Und das Ganze ab rund 10€ mtl. Das Setup ließe sich dort auch prima nachstellen.

@lewald: 20GB? 20 TB. Die muss man erstmal voll machen  :)
Und langsam war da bei mir noch nix. Ich habe viele von diesen Kisten im Einsatz.

@Gauss23: wie hast du denn die FloatingIP konfiguriert ? hast du irgendwelche Skripte ? Die Floating IP muss ja gegen die Hetzner API jeweils auf den anderen Server umgezogen werden um ein automatisches Failover zu haben. Wenn du sowas gebaut hast, dann wäre das super interessant zu wissen.

Automatisiert habe ich da nichts. Wäre ein manueller Vorgang in meinem Fall.
,,The S in IoT stands for Security!" :)