Übersicht Labornetzwerk m182.ch

![]() |
Hinweise |
-
Arbeiten auf einem Server sollten mit
ssh
von einer Desktop-VM (Linux oder Windows) ausgeführt werden. Damit wird copy/paste möglich. In einer Text-orientierten Konsole ist das nicht möglich. -
Der Management-Zugriff auf die OPNsense-Firewall erfolgt mit einem Browser auf
http://192.168.1.2/
. -
Als Administratoren in OPNsense sind
root
undvmadmin
eingerichtet. Passwort: sml12345 -
Auf der Konsole der Firewall mit
root
, Passwortsml12345
einloggen. Sie erkennen dann sogleich die konfigurierten Adapter und Interfaces mit den entsprechenden IP-Adressen. Machen Sie hier keine Änderungen! -
Der DNS-Server vmLS1 ist für die Subnetze m182.lan und m182.dmz eingerichtet. Sie müssen hier nichts mehr ändern.
-
Rollen der VMs:
-
m182.lan
-
vmLS1
: DNS-Server für m182.lan und m182.dmz, Apache Web-Server (80), MySQL-DB-Server (3306) -
vmWP1
: Windows 11 Client -
vmLP1
: Ubuntu Desktop Client und ssh-Server
-
-
m182.dmz
-
vmLS2
: Apache Web-Server auf Port 80
-
-
ausserhalb der Firewall
-
vmKL1
: Kali-Linux Client -
vmLP2
: Ubuntu Desktop Client mit Apache Web-Service auf Port 80
-
-
Kapitel 1. Szenarien
Folgende Szenarien sollen im folgenden realisiert werden:
Wir wollen die Möglichkeiten des Port-Forwarding und des Remote-Port-Forwarding mit einem SSH-Tunnel an praktischen Beispielen in unserer Smartlearn.Online-Umgebung umsetzen und dabei die Auswirkungen auf die notwendigen Einstellungen der OPNsense-Firewall vornehmen.
Anschliessend wollen wir uns auch zur Absicherung eines SSH-Servers Gedanken machen und Möglichkeiten dazu umsetzen.
Kapitel 2. Standard-Rules
2.1. lan0-Interface mit Subnet m182.lan
Überprüfen Sie zuerst, ob alle Ihre Standard-Firewall-Rules auf dem lan0-Interface
gesetzt sind:
-
Internet-Zugriff ok
-
DNS-Abfragen auf die Firewall sollen erlaubt sein.
-
Ping auf die Firewall sollen für administrative Zwecke möglich sein.
![]() |
HINWEIS zum DNS-Dienst in OPNsense
Dafür hat OPNsense zwei Dienste: Unbound DNS und Dnsmasq-DNS, wobei der erstgenannte per default eingestellt ist. Die Adresse des DNS-Servers zur Weiterleitung (Forwarders) erhält OPNsense automatisch per DHCP. Die gesetzten DNS-Forwarders können über das Menu Interfaces → Overview → wan0 interface angeschaut werden. Aktive Einstellungen zum DNS-Service in OPNsense, dieser heisst Unbound DNS, finden Sie unter Services → Unbound DNS.
Da bei uns vmLS1 der DNS-Server für die Subnetze m182.lan und m182.dmz ist, können wir dem DNS-Service von OPNsense mitteilen, dass bei Anfragen für diese Domains die vmLS1 konsultiert werden soll. Dies erfolgt im Menu Services → Unbound DNS → Overrides → Domain Overrides:
|

![]() |
BEREINIGUNG der Rules für Interface lan0 |
Falls weitere Rules aktiv sind, entfernen Sie diese! Die Rules unter "Automatically generated rules" dürfen Sie nicht verändern!
2.2. dmz0-Interface mit Subnet m182.dmz
-
Der Zugriff auf das Internet soll möglich sein

![]() |
BEREINIGUNG der Rules für Interface dmz0 |
Falls weitere Rules aktiv sind, entfernen Sie diese! Die Rules unter "Automatically generated rules" dürfen Sie nicht verändern!
2.3. Rules für wan0-Interface
![]() |
WICHTIG:
Definieren Sie die Einstellungen für das wan0-Interface unter Floating!
|

![]() |
BEREINIGUNG der Rules für Interface wan0 |
Falls weitere Rules aktiv sind, entfernen Sie diese! Die Rules unter "Automatically generated rules" dürfen Sie nicht verändern!
![]() |
Dokumentation Firewall Rules |
Dokumentieren Sie alle OPNsense Firewall-Rules, die Sie bis jetzt definiert haben!
![]() |
TIPP
3 Tipps:
|
Disable Firewall mit pfctl -d
, im Falle eines Lockouts (kein Zugriff mehr auf Management-Oberfläche). Danach kann man sich wieder per Web verbinden, um den Fehler zu beheben. Den Befehl geben Sie in einer bash-shell der Konsole ein.
Anschliessend mit pfctl -e
die Firewall aktivieren.
Rules Categories sind praktisch für das Filtern von Rules, vor allem dann, wenn man viele Rules hat.
Immer Rule Descriptions verwenden, damit man gleich sieht, was die Rule macht.
Kapitel 3. Umsetzung der Szenarios
![]() |
WICHTIG |
Alle umzusetzenden Einstellungen, inkl. Tests, werden in ihrem technischen Arbeitsjournal dokumentiert.
3.1. Zugriff auf DMZ aus LAN
Aus dem LAN wollen wir Zugriff haben auf die DMZ. Umgekehrt aber nicht!

![]() |
Test Zugriff DMZ |
Testen Sie den Zugriff auf die DMZ mit ssh
und ping
auf vmls2
von einem Rechner im LAN! Dokumentieren Sie das Resultat!
3.2. Zugriff auf LAN aus DMZ sperren
Die DMZ soll für das Internet später geöffnet werden. Dabei soll aber auf das LAN aus der DMZ kein Zugriff möglich sein.

![]() |
Test Zugriff LAN |
Testen Sie den Zugriff auf das LAN mit ssh
und ping
auf vmls1
von einem Rechner in der DMZ. Dokumentieren Sie das Resultat!
3.3. Ping auf WAN-Interface ermöglichen
Für administrative Zwecke wollen wir dies in unserer Lernumgebung ermöglichen. In einer produktiven Umgebung sollte dies nicht möglich sein.
Bevor wir die Rule definieren, müssen wir für das WAN-Interface noch Einstellungen vornehmen. Standardmässig soll das WAN-Interface keinen Zugriff auf private oder nicht registrierte Adressen machen können. Da wir uns aber in Smartlearn.Online befinden und dabei private Adressen verwenden, müssen wir dieses Verbot ausschalten unter Interfaces → wan0. Entfernen Sie die Ticks, damit keine Restriktionen mehr bestehen.

Erlauben Sie nun ping an das WAN-Interface anzuklopfen.
![]() |
Beachten:
Die Firewall-Rules für das wan0 -Interface werden im Floating -Interface gesetzt. Dabei muss die Direction hier ausnahmsweise auf any definiert werden. Nur In funktioniert für das WAN-Interface nicht. Der Grund dafür ist unklar… Der Modulautor nimmt gerne Hinweise entgegen!
|

Die Rule sieht nun so aus:

![]() |
TIPP
Die WAN-IP-Adresse wird per DHCP von der smartlearn-Infrastruktur vergeben und ist deshalb für jede Umgebung einmalig. Diese finden wir in der Konsole der Firewall oder im Dashboard der Weboberfläche unter Interfaces:
|


![]() |
WICHTIG:
Die Subnetzmaske /16 ist nur in der Konsole sichtbar!
|
![]() |
Test Zugriff WAN |
Testen Sie den ping von vmKL2
oder vmLP2
aus! Dokumentieren Sie das Resultat!
Kapitel 4. SSH-Tunneling
4.1. Generelle Erklärung SSH-Tunneling
- Was ist SSH-Tunneling
-
Einen SSH-Tunnel können Sie sich, ganz wie einen echten Tunnel, als eine Verbindung zwischen zwei Punkten vorstellen. Der erste dieser Punkte, sozusagen der Startpunkt, ist ein Rechner, der sich im Normalfall in einem ungesicherten Netzwerk befindet. Ziel des Tunnels sind Server oder Netzadressen, auf die Sie aus Ihrem Netzwerk heraus nicht zugreifen können oder wollen. Ein SSH-Tunnel fungiert also als Verbindung zwischen verschiedenen Servern und verknüpft hierzu die TCP-Ports zweier Rechner miteinander. Grundsätzlich kann mit SSH-Tunneling jeder TCP-Port weitergeleitet werden. Deshalb ist dieser Prozess auch als Portweiterleitung oder Portforwarding bekannt.
Als SSH-Server können Sie einen beliebigen Server verwenden der für alle erreichbar ist. Wir werden dazu vmLP1 verwenden und diesen vom WAN her verfügbar machen.
Doch was genau „transportiert“ eigentlich ein SSH-Tunnel? Durch den SSH-Tunnel können bestimmte TCP-Protokolle gesichert verwendet werden. Hierzu zählt beispielsweise HTTP. Auch SMTP, ein wichtiges Protokoll für den E-Mail-Versand, nutzt SSH-Tunneling. Für die Sicherheit der im Tunnel übertragenen Daten sorgt SSH.
- Wofür werden SSH-Tunnels eingesetzt?
-
Es gibt verschiedene Anwendungsszenarien für das Portforwarding mittels Secure Shell. In den meisten Fällen wird der SSH-Tunnel genutzt, um eine verschlüsselte Verbindung zwischen einem lokalen Rechner, dem localhost, und einem entfernten Rechner aufzubauen. Durch den Umweg über dieses virtuelle Netzwerk können bestimmte Zugriffsbeschränkungen auf Websites aufgehoben werden. Es hat dann den Anschein, als befänden Sie sich in dem Netzwerk, auf das Sie eigentlich nur mit einem SSH-Tunnel zugreifen. Diese Art der Anwendung weist zwar Ähnlichkeiten zu einem Virtual Private Network (VPN) auf, sollte aber nicht damit verwechselt werden.
Wenn Sie Daten von Diensten transportieren, die ein unverschlüsseltes Protokoll verwenden, können Sie SSH-Tunneling benutzen, um den Datenverkehr dennoch zu verschlüsseln. Hierfür wird das sogenannte SSH File Transfer Protocol, kurz SFTP, eingesetzt. Erhöhte Sicherheit bietet ein SSH-Tunnel außerdem beim Surfen in fremden Netzwerken, etwa in Hotels. Für besonders hohe Sicherheit können Sie auf SSH-Keys für Ihre Netzwerkverbindung setzen. Diese nutzen asymmetrische Verschlüsselung.
4.2. Anwendung von SSH-Tunneling in unserer Laborumgebung
Wir wollen damit zwei Szenarien realisieren:
mit local Port-Forwarding:
-
Zugriff auf die Verwaltungsoberflache von OPNsense aus dem Internet
-
Zugriff auf den Apache Webserver vmLS1 im m182.lan aus dem Internet
-
Zugriff auf den Desktop von vmLP1 im m182.lan aus dem Internet
→ Dazu korrekte Einstellungen der Firewall OPNsense
mit Remote-Port-Forwarding:
-
Ein Client im Internet (vmKL2 und vmLP2) stellt seine Webseite zur Verfügung via einem gesicherten SSH-Tunnel
→ Dazu korrekte Einstellungen der Firewall OPNsense
4.3. Voraussetzungen für SSH-Tunneling
Damit unser Port-Forwarding funktioniert, müssen wir in der OPNsense-Firewall folgende Einstellungen unter Firewall → Settings → Advancedvornehmen:

Damit werden die Firewall-Rules automatisch konfiguriert, wenn wir Port-Forwards definieren.
In unserer Umgebung verwenden wir vmLP1 als ssh-Server. Dieser soll auch vom Internet her zugänglich sein.
Dies realisieren wir, indem wir auf dem WAN-Port der Firewall ein Port-Forwarding auf vmLP1 definieren. Wir machen das vorerst mit dem Standard-Port 22
. Ziel ist, dass ein Request auf Port 22 der Firewall direkt weiter geleitet wird auf Port 22 von vmLP1.
Der openssh-server auf vmlp1 nimmt dann die Anfragen entgegen und bildet sozusagen den Endpunkt des Tunnels, welcher von einem Rechner mit dem ssh-Befehl aufgebaut wird.
Der ssh-Tunnel wird dabei nicht nur für ein Remote-Terminal verwendet, sondern kann für jeglichen verschlüsselten Datentransport verwendet werden. Wir können via diesen Tunnel beliebige Protokolle transportieren, z. Bsp. http(s), RDP, Mailverkehr, etc.
Diese Technik erlaubt uns, gesicherte Rechner, wie z.Bsp. vmLS1, für externe Clients zugänglich zu machen, ohne dass eine spezielle Firewall-Regel definiert werden muss. Es genügt, wenn wir einen gesicherten SSH-Server betreiben, welchen wir für verschiedenste Zugänge nutzbar machen können.
Ein solcher gesicherter SSH-Server wird oft auch als Jump-Host, Bastion-Host, SSH-Proxy-Server, etc bezeichnet.
Vereinfacht kann man auch sagen, dass unser SSH-Server die Möglichkeit bietet, einen gesicherten Tunnel aufzubauen, welcher für beliebige Datentransporte verwendet werden kann. Es besteht daher vom Nutzen her eine Ähnlichkeit zu VPN.
Eine allgemeine Darstellungsweise von SSH-Tunnels sehen Sie in Abbildung 13, “: Client verwendet ssh-Tunnel für gesicherte Services hinter Firewalls” . Der SSH Server entspricht bei unserer Umsetzung der vmLP1 und die Server der vmLS1 und vmLS2. Die Clients entsprechen vmKL2 und vmLP2.

Wir werden gleich sehen, wie das in unserer Umgebung funktioniert…
4.3.1. ssh-Port Forwarding vom WAN-Port auf vmLP1
Ziel: Jeder ssh-Request auf Port 22 des WAN-Interfaces wird auf Port 22 von vmLP geleitet.
Dazu definieren wir ein Port-Forward unter Firewall → NAT → Port Forward
Die Rule sieht wie folgt aus:


Alle Einstellungen im Detail:



![]() |
WICHTIG:
Im Feld "Filter rule association" muss Pass gesetzt werden, damit die Firewall-Rule gesetzt wird.
|
![]() |
HINWEIS
Damit haben wir nun einen öffentlich zugänglichen SSH-Server, welchen wir für Tunnelverbindungen nutzen können.
|
![]() |
Test Port-Forward |
Testen Sie das Port-Forward von vmKL2
oder vmLP2
aus mit ssh vmadmin@<Ihre_WAN_IP-Adresse>
. Sie sollten so auf der vmLP1 "landen". Dokumentieren Sie Ihr Resultat mit Screenshots.
Vorgehen für diese Aufgabe:

Verwenden Sie Ihre WAN-IP-Adresse 10.50.X.Y!
Eingabe sml12345
- anschliessend erfolgt direkter login auf vmLP1 …

4.4. ssh-Tunneling - Local Forwarding
Damit können wir interne Dienste im m182.lan
für jemanden im Internet zugänglich machen, obwohl diese aufgrund der Firewall-Rules für einen direkten Zugang aus dem Internet gesperrt sind.
- Unser Szenario
-
Beispielhaft wollen wir hier den Zugriff auf den Apache-Webserver von vmLS1 zugänglich machen.

Vorgehen:
-
Starten Sie auf
vmLP1
den Browser und laden Sie die Webseite von vmLS1 mithttp://vmLS1.m182.lan
oderhttp://192.168.110.60
. Dies ist unspektakulär, da vmLP1 im gleichen Subnet ist wievmLS1
und problemlos Zugang hat. -
Gehen Sie nun auf vmKL2
-
Mit
ssh -L 8786:192.168.110.60:80 vmadmin@<Ihre_WAN_IP>
starten Sie den SSH-Tunnel Richtung unserer Firewall mit EndpunktvmLP1
, unserem SSH-Server. Danach sollten Sie aufvmLP1
eingeloggt sein. -
Nun starten Sie einen Browser auf
vmKL2
und verbinden sich auf den Port 8786 mit:http://localhost:8786
Sie erhalten ebenfalls die Webseite wie in Schritt 1. Das spannende daran ist aber, dass Sie diese Seite aus dem Internet aufrufen und dazu den SSH-Tunnel verwenden.

![]() |
Zugriff auf Webserver vmLS1 mit Local-Forward ssh -L … |
Was ist hier passiert? Dokumentieren Sie das sorgfältig in Ihrem Journal und nehmen Sie die Abbildung zur Hilfe. Schauen Sie sich den ssh-Befehl genau an.
4.5. ssh-Tunneling - Remote Forwarding
Diese Technik erlaubt es einem Benutzer im Internet seinen Rechner für jemanden zugänglich zu machen. Auch hier verwenden wir unseren SSH-Server, welcher Requests auf einen zu definierenden Port an das Gerät zurücksendet, welches den Tunnel initiiert hat.
- Unser Szenario
-
vmLP2
will seine Webseite mit einem gesicherten ssh-Tunnel zugänglich machen. Dazu verwenden wir die Technik des ssh-Remote-Forwarding. Der öffentlich zugängliche SSH-Server (vmLP1) leitet den Request auf Port 8888 zurück auf den ClientvmLP2
.

Um das Remote Forwarding einzuleiten, wird der Befehl
ssh -R 8888:localhost:80 vmadmin@<WAN_IP_SSH_SERVER>
verwendet.
Damit das SSH-Remote Forwarding funktioniert, müssen folgende Voraussetzung geschaffen werden:
-
Auf dem WAN-Port der Firewall muss ein Forward des Ports 8888 auf unseren SSH-Server vmLP1 (192.168.110.30) eingerichtet werden. Nur so kann der SSH-Server den Request auf die lokale Adresse von vmLP2 zurücksenden. Anmerkung: wir verwenden hier Port 8888. Es kann aber eine beliebige freie Portnummer verwendet werden.
-
Der SSH-Server erlaubt in der default Einstellung nur local Forwards. Damit Remote Forwarding möglich wird, muss die Einstellung im
sshd_config
(Konfigurationsdatei von openssh-server) mitGateway Ports yes
gesetzt werden.
4.5.1. Voraussetzungen 1 für Remote Forward: Port Forward

4.5.2. Voraussetzungen 2 für Remote Forward: Gateway Ports yes
Auf vmLP1 sshd_config anpassen mit:
Editieren von /etc/ssh/sshd_config
(mit root)

Anschliessend den ssh-Server vmLP1 neu starten mit:
sudo systemctl restart ssh
Kontrolle, ob dieser läuft:
systemctl status ssh

4.5.3. Test Remote Forwarding
-
Starten Sie auf
vmLP2
den Browser und laden Sie die lokale Webseite mithttp://localhost
. Dies ist unspektakulär. Aber Sie können so prüfen, ob der Webservice läuft. -
Mit
ssh -R 8888:localhost:80 vmadmin@<Ihre_WAN_IP>
starten Sie das Remote Forwarding auf vmLP2.Danach sind wir auf der vmLP1 angemeldet. Warum? Weil ein SSH-Port Forward auf dem WAN Port der Firewall auf vmLP1 eingerichtet ist. Die Verbindung wurde via Port 22 hergestellt.
Gleichzeitig wurde aber auch ein Tunnel auf Port 8888 eingerichtet, welcher Requests auf 8888 auf den Client zurück sendet. Dieser Tunnel-Port auf vmLP1 können wir sehen mit dem Befehl:
netstat -tlpn
. Der Port wurde für IP V4 als auch V6 eingerichtet. -
Nun kann mit einem http-Request auf Port 8888 der public-IP-Adresse 10.50.171.36 der lokale Port 80 von vmLP2 aufgerufen werden mit
http://10.50.171.36:8888
.Dies funktioniert mit jedem beliebigen Rechner, der Zugriff auf die public-IP-adresse hat. -
Wir testen das mit einem Aufruf von
vmKL1.m182.lan
:und
vmWP1.m182.lan
:Aber auch von einem beliebigen Rechner im Internet wird so der Zugriff möglich. Hier am Beispiel von
vmKL2
:Sie erhalten ebenfalls die Webseite von vmLP2 wie in Schritt 1. Das spannende daran ist aber, dass Sie diese Seite aus dem Internet aufrufen und dazu den SSH-Tunnel verwenden.
Auch die vmLP2 kann auf sich selber via den Tunnel zugreifen. Das heisst, der Aufruf
http://localhost
liefert dasselbe Ergebnis wiehttp://10.50.171.36:8888
.
![]() |
Aufgabe zu Remote-Forward ssh -R … |
Dokumentieren Sie sorgfältig das Vorgehen für Remote-Forwarding. Halten Sie Ihre Resultate mit Screenshots fest.
4.6. Weitere Anwendungsfällte zum SSH-Tunneling
![]() |
Management Zugang zu OPNsense |
Ermöglichen Sie den Management Zugang mit Forward-SSH auf die Management-Konsole von OPNsense, damit Sie aus dem Internet Ihre Firewall verwalten können.
![]() |
SSH-Port "verschleiern" |
Der ssh-Zugang auf dem WAN-Port soll aus Sicherheitsgründen über Port 7312
erfolgen und nicht über Port 22. Was müssen Sie vornehmen und wie müssen Sie den ssh Befehl für den Forward und Remot Forward Tunnel ergänzen?
![]() |
RDP via SSH-Tunnel |
Nicht nur http
geht durch einen ssh-Tunnel; es funktioniert auch mit RDP
: Überlegen Sie sich, wie Sie vorgehen müssen, um auf den vmWP1
-Desktop von vmKL2
zugreifen zu können. Das Ziel ist, einen Remote Desktop von vmWP1
auf vmKL2
(oder vmLP2
) via SSH-Tunneling aufzurufen:

![]() |
Zugang auf Webserver in DMZ aus dem Internet |
Ein http-Zugriff aus dem Internet (z. Bsp. von vmLP2) auf den WAN-Port (Port80) soll die Webseite von vmLS2
anzeigen.

![]() |
Selbst-signiertes Zertifikat für vmLS2 |
Option: erstellen Sie ein selbst signiertes Zertifikat für vmLS2
und greifen Sie mit https
(Port 443) auf den Webserver zu.
Kapitel 5. Sicherheitskritische Betrachtung des SSH-Servers
Der SSH-Server vmLP1 in unserem Szenario befindet sich innerhalb des gesicherten Subnets m182.lan. Der Zugriff darauf aus dem Internet haben wir mit einem Port-Forward von Port 22 realisiert. Für das Remote-Forwarding haben wir auch den Port 8888 geöffnet.
![]() |
Hardening SSH-Server |
Welche sicherheitskritischen Bedenken sollten wir bei dieser Konfiguration anstellen? Stichworte bei dieser Frage sind "Hardening SSH Server" oder "SSH Server absichern". Recherchieren Sie die Möglichkeiten, um unseren ssh-Server bestmöglich gegen Hackingversuche abzusichern.
Dokumentieren Sie die Möglichkeiten und setzen Sie 2 Massnahmen um!