Menu Close

Sichere Serverarchitektur für den Betrieb von Websiten

Sichere Serverarchitektur für den Betrieb von Websiten

Da ich auf meinem Server mittlerweile zusätzlich zu normalen Websiten wie dieser auch Systeme betreiben welche Sensible Daten preisgeben könnten wenn sie nicht gesichert sind oder der Server gekapert werden würde. Um solchen Risiken entgegenzuwirken habe ich einige Sicherheitsmaßnahmen getroffen die ich euch hier vorstellen möchte.

Die drei Seiten:

Internet/Du

Als Nutzer dieser Website verbindest du dich zuerst mit deinem DNS Server z.B. 1.1.1.1. Dieser schickt deinem Browser den Nameserver (er gibt dir die IP-Adresse, also den Namen in Computersprache zu deiner eingegebenen Domain (z.B. dieprogrammide.tk)) meiner Website. Bei mir gehört dieser Cloudflare und was nun passiert siehst du rechts.

Wenn dein Browser nun vom Nameserver die Adresse meiner Website (nicht die meines Servers) hat baut er zu dieser wieder eine Verbindung auf. Diese IP-Adresse gehört auch Cloudflare®, nun baut Cloudflare zu meinem Server eine Verbindung auf und schickt das Ergebnis an dich zurück. Ergebnis ist das dein Browser nicht die IP meines Servers kennt und so einem Angreifer der mich gezielt angreifen möchte schwer fällt dies zu tun. Cloudflare® stellt außerdem einen DDOS-Schutz zur verfügung. Das ganze nennt mann eine Proxy (mehr dazu Proxy (Rechnernetz) Wikipedia).

SSL/HTTPS ist darüber möglich, da Cloudflare dir sein Zertifikat sendet, damit die Verbindung zwischen Cloudflare und meinem Server sicher ist gibt es ein zusätzliches Zertifikat mit welchem die Kommuniktation auch hier abgesichert ist. Sollte jemand anderes aus welchem Grund auch immer meine IP-Adresse auf seinem Server haben würde jede Anfrage abgebrochen werden. Mit der Meldung „SSL Handshake Failed“

Server und FireWall

Wenn auf der IP des Servers (den du nicht kennst) eine Anfrage kommt, bearbeitet dies die Firewall, sollte die HTTPS/HTTP Anfrage nicht von Cloudflare kommen wird sie direkt abgelehnt. Ansonsten sind alle Ports blockiert. Nur SSH (nicht über den Standardport) und 25565 (Minecraft) sowie MyTT (ein OpenSource Messaging Protokoll für IoT geräte) werden durchgelassen.

 

Trotz all diesen maßnahmen dauert die Latenz vom absenden einer anfrage zum zurückkommen des Ergebnissen etwa 0,001 Sekunden. Die Ladezeit der Website weicht allerdings ab, da beim Laden mehrere Dokumente, darunter Stylesheets und Bilder geladen werden, die schwachstelle dieses systems ist auch wenn 0,001 Sekunden kurz erscheinen der Verbindungsaufbau, ist eine verbindung vorhanden ist die Datei schnell heruntergeladen. Der Ping (zeit bis zum ankommen einer Anfrage) beträgt zwischen 2 und 10 Milisekunden. Der Aufbau der Verbindung dauert hier etwas länger. Dies lässt sich aber mit gutem Cache und effizient geschriebenen Websites ausgleichen.

Praktische Umsetzung

Firewall

An der Firewall habe ich sehr lange lange herumgefeilt.

Die Firewall erlaubt ausschließlich den VPN-Traffic sowie den Zugriff der Cloudflare Reverse-Proxy auf die Webinhalte. Jeglicher anderer Traffic wird aus sicherheitsgründen abgelehnt und protokolliert.

VPN

Als VPN nutze ich WireGuard, um diesen erstmalig zu konfigurieren habe ich AlgoVPN genutzt, ein Python-Scirpt zur Installation von WireGuard. Hier muss die „Advanced“ Installationsart genutzt werden, da du den Server ja Lokal auf deinem Server mit dem du verbunden bist installieren möchtest. Beachte das du zum zeitpunkt der Installation deinen SSH-Port auf 22 haben solltest (Standardeinstellung), Algo überschreibt alle Firewalleinträge, meine Firewallregeln enthalten Algo’s, zum installieren befolgt die schritte die auf der Seite im README.txt stehen.

Über den VPN kann ich auf meine Daten zuhause von überall aus zugreifen. Außerdem kann ich über meine Nextcloud auf die Daten meines Home-Servers zugreifen (und auch die meines Desktop Computers).

Hosting

Solltest du auf der Suche nach einem Hosting-Anbieter sein, kann ich dir Contabo und Netcup empfehlen. Bei beiden war/bin ich Kunde und zufrieden