Servicemanagement in Netzen - Leischner

Praktikumsblatt 6 - Reverse Proxy

In diesem Aufgabenblatt erstellen wir einen IPv6-Reverse-Proxy für lokale IPv6-Services.

 

Aufgabe 1 - IPv6 lokales Dockernetz

  1. Erzeugen Sie ein lokales IPv6-Netz loc_ipv6 mit dem Adressraum fd00:dead:beef::/48 . Welchen Befehl verwenden Sie hierzu? Im Netz loc_ipv6 werden unsere lokalen IPv6-Services laufen.
  2. Erläutern Sie die Adresse fd00:dead:beef::/48 gemäß RFC4193.
  3. Gehen Sie mit dem Tool netshoot in das Netz loc_ipv6. Welche IP-Adressen erhält netshoot im Netz loc_ipv6 aktiv und welche Default-Routen sind für das Netz loc_ipv6 eingetragen?
  4. Erläutern Sie, wie das Netz loc_ipv6 in das Docker-Netz und das Internet eingebunden ist und insbesondere, welche Verbindungen möglich sind.
  5. Starten Sie einen miniwhoami-Service miniwhoami_50611, der an das Netz loc_ipv6 angebunden ist. Der Zugriff auf den Service soll nur im internen Netz loc_ipv6 über den Standard-Port des Containers möglich sein. Also keine Portfreigabe nach extern.
  6. Testen Sie mit curl aus netshoot heraus, dass der miniwhoami-Container bzw. miniwhoami-Service im Netz loc_ipv6 sowohl über ipv4 als auch ipv6 erreichbar ist. Welche curl Kommandos haben Sie hierzu verwendet?
    Zusatzfragen:
    • Wie können Sie die Erreichbarkeit der Container und Services testen? Stellen Sie verschiedene Möglichkeiten dar.
    • Besteht ein Unterschied zwischen Service und Container bezüglich Zugriff?
    • Welche IPv6-Adressse hat der miniwhoami-Container?
    • Woher hat der miniwhoami-Container seine IPv6-Adresse?
    • Woher kommt eigentlich der IPv4-Adressraum für das Netz loc_ipv6 ?
    • Ist der miniwhoami-Container auch von außen erreichbar?
  7. Testen Sie mit dig oder host aus netshoot heraus die dockerinterne DNS-Auflösung von Services. Welches Kommando benutzen Sie hierfür und was ist das Ergebnis?

 

Aufgabe 2 - Nginx

In dieser Aufgabe erstellen wir zunächst einen "normalen" Webserver, den wir dann in Aufgabe 4 zu einem Reverse-Proxy ausbauen.

  1. Als erstes wählen Sie eine IPv6-Adresse aus Ihrem IPv6-Netz my_ipv6. Welche Adresse haben Sie gewählt?
  2. Erstellen Sie einen neuen Docker-Compose-File für einen nginx-Server reverse-proxy mit folgenden Eigenschaften:
    • Der Server liefert eine responsive Webseite, die mit bootstrap erstellt ist und mindestens ein Bild enthält.
      (Bitte kopieren Sie nicht einfach meine Lösung, sondern machen selbst etwas Nettes mit bootstrap.)
    • Der Server ist von außen über die von Ihnen gewählt IPv6-Adresse am Standardport :80 erreichbar.
    • Der Server ist neben seiner Anbindung nach außen auch an das lokale Netz loc_ipv6 angebunden.
    • Der Server ist von außen über Ihre URL <www.yourDomain.xy> erreichbar.
    • Wird der Server über seine IPv6-Adresse direkt aufgerufen, so erscheint eine Fehlermeldung  "Error 444 - undefined server name".
    • Frage: Warum ist es in vielen Fällen sinnvoll, den Zugriff auf Webserver mittels IP-Adresse zu blockieren?
  3. Geben Sie Ihr Docker-Compose-File und Ihre Konfigurationsdatei /etc/nginx/nginx.conf an. Erläutern Sie beide Dateien im Detail.
  4. Starten und testen Sie Ihren Server.

Meine Lösung:

 

Aufgabe 3 - HTTPS Server

  1. Übergeben Sie - falls noch nicht geschehen - Ihre URL zur Verwaltung einem CDN-Provider, der als Service auch den Zugriff über https anbietet.
    (Ein möglicher CDN-Provider mit einem kostenlosen Basisangebot ist Cloudflare).
  2. Richten Sie ein Subdomain tls.<yourDomain.xy> ein. Leiten Sie den Zugriff auf diese Domäne über einen Proxy Ihres CDN-Providers. Welche IP-Adressen besitzt Ihr Webserver nun unter tls.<yourDomain.xy> ?
  3. Richten Sie den Proxy für die Subdomain tls.<yourDomain.xy> so ein, dass dieser den Zugriff auf Ihren Nginx-Server mit https unterstützt.
  4. Testen Sie den Zugriff auf Ihren Webserver sowohl mit
    • http://tls.<yourDomain.xy> als auch mit
    • https://tls.<yourDomain.xy> .

 

Aufgabe 4 - Reverse Proxy

  1. Erstellen Sie einen Docker-Compose-File, der im Netz  loc_ipv6 zwei miniwhoami-Services miniwhoami_loc1 und miniwhoami_loc2 startet. Richten Sie nun Ihren Webserver als Reverse-Proxy für diese beiden miniwhoami-Services ein. Geben Sie die von Ihnen verwendete Konfigurationsdatei /etc/nginx/nginx.conf an und erläutern Sie diese Datei im Detail.
  2. Richten Sie zwei URLs minwhoami_loc1.<yourDomain.xy> und minwhoami_loc1.<yourDomain.xy> ein, die auf Ihren Reverse Proxy zeigen. Testen Sie den Zugriff auf die Services miniwhoami_loc1 und miniwhoami_loc2.
  3. Ein http-Echoservice ist ein Webserver, der beim Aufruf mit einem Webbrowser, die http-Header des Aufrufs ausgibt. Finden Sie ein geegnetes Image für einen http-Echoservice echo.
  4. Lassen Sie den http-Echoservice echo auf Ihrem Server serv-ss21 hinter Ihrem Reverse-Proxy laufen, so dass Sie den Service echo über den Reverse-Proxy in folgender Weise aufrufen können:
    • http://<echo.<yourDomain.xy> bzw.
    • https://<echo.<yourDomain.xy>.
    Vergleichen und analysieren Sie die verschiedenen Aufruf.

Meine Lösung:

 

Aufgabe 5 - HTTPS Forwarding

  1. Über nginx.conf können Sie Ihre Konfiguration so anpassen, dass der Zugriff über tls.<yourDomain.xy> automatisch auf https umgeleitet wird? Wie gehen Sie dabei vor? Geben Sie Ihre nginx.conf Datei an.
  2. Über Cloudflare können Sie Ihre Konfiguration so anpassen, dass der Zugriff über tls.<yourDomain.xy> automatisch auf https umgeleitet wird? Wie gehen Sie dabei vor?
  3. Analysieren Sie für Ihren Webserver tls.<yourDomain.xy> die Sicherheit des https-Zugriffs mit einem geeigneten Analysetool.
    Fragen:
    • Welches Tool haben Sie verwendet?
    • Welches Ergebnis haben Sie erzielt?
    • Wie können Sie die Sicherheit Ihres Servers mit einfachen Mitteln verbessern? Welche Probleme könnten hierdurch entstehen?
    • Wie beurteilen Sie abschließend das Sicherheitsniveau für den Zugriff auf Ihren Webserver tls.<yourDomain.xy> ?

Meine Lösung:

 

 

 

 

 

Impressum | Datenschutz | leischner.inf.h-brs.de, last modification: 12.09.2022-10.46