Ein öffentlich im Internet erreichbarer Server birgt Risiken: offene Ports sind ein Einfallstor für Attacken etwa von Botnetzen. Mangelhaft gepflegte Software oder falsch eingerichtete Dienste, die aus dem Internet erreichbar sind, führen zu weiteren Problemen. Um sich in solchen Szenarien sicher schützen zu können, bietet sich eine Firewall an, welche richtig konfiguriert, die erste Hürde für Angreifer darstellt. Hinter der Firewall können dann die Dienste laufen, die man den Netzteilnehmern zur Verfügung stellen will.
In unserem Fall dient eine pfSense als Firewall, welche zuerst die Anfragen aus dem Internet entgegen nimmt. Die Konfigurationsseite selbst in nicht aus dem Internet zugänglich. Erst hinter dieser Firewall befindet sich ein Client, welcher sich im selben Subnetz befindet und nur intern erreichbar ist. Über ein eingerichtetes NAT ist dieser dann in der Lage, die Anfragen von der Firewall zu beantworten. Der Client dient auch dazu auf die GUI der Firewall zuzugreifen um dessen Konfiguration anzupassen. Dazu wird kurzerhand eine Desktop Umgebung eingerichtet.

1. Server in unser Projekt hinzufügen / pfSense Installation
2. Subnetz einrichten / Route anlegen
3. Client installieren

1. pfSense Installation:

1.1 Server zu unserem Projekt hinzufügen, Server -> Server hinzufügen

1.2 Ubuntu auswählen
Lokalen Speichertyp zuweisen
CX11 auswählen
Name vergeben
auf Erstellen klicken

1.3 pfSense ISO Image einbinden

1.4 Konsole starten und Reboot einleiten

1.5 Installation durchlaufen lassen und Optionen entsprechend setzen:

1.6 Should VLANs be set up now? (n)

1.7 Enter the WAN interface name or a for auto-detection (vtnet0)

1.8 Enter the LAN interface name or a for auto-detection (leer)

1.9 Do you want to proxceed (y)

1.10 Nun kann die pfsense im Browser geöffnet werden mit den Standard Login Daten: admin/pfsense

1.11 Den Anweisungen folgen bei der initialen Installation:
(Hostname und Domain nach belieben eingeben)

  • hostname: pfSense
  • Domain: beliebigen Namen eingeben
  • Block bogon netwerks (zulassen)
  • Admin Password vergeben

Wizard abschließen und Reload Button klicken

1.12 Interfaces -> Assignments, dann vtnet1 hinzufügen

1.13 System -> Routing -> Static Routes

  • Destination network: 10.0.0.0/16
  • Gateway: 172.31.1.1
  • apply changes

1.14 Interfaces -> LAN

  • IPv4 Konfiguration Type: DHCP
  • enable Interface

Änderungen aktivieren

1.15 System -> Advanced -> Networking

  • enable Disable hardware checksum offload under Network Interfaces

auf speichern klicken

1.16 Firewall -> NAT -> Outbound -> bei Outbound NAT Mode, Hybrid Outbound NAT rule generation auswählen

  • Interface: WAN
  • Adress Family: IPv4+IPv6
  • Protocol: any
  • Source: 10.0.0.0/16
  • Destination: any
  • Translation -> Address: Interface Address

auf speichern klicken, die Änderungen noch nicht aktivieren

1.17 Firewall -> Rule -> LAN

  • Default allow LAN to any rule
  • Änderung der source Einstellung von LAN net zu any

auf speichern klicken und Änderungen aktivieren

1.18 Diese Regeln führt dazu den Zugriff auf die Firewall von öffentlichen IP Adressen zu unterbinden

Firewall -> Rules -> WAN neue Regel erzeugen

  • Action: Block
  • Interface: WAN
  • Address Family: IPv4+IPv6
  • Protocol: TCP/UDP
  • Source: any
  • Destination: this firewall (self)
  • Destination Port Range: from "HTTP (80)" to "HTTPS (443)"

auf speichern klicken und Änderungen anwenden
 
1.19 Firewall -> NAT -> Outbound

Änderungen anwenden

2. Route anlegen:

Um den Verkehr von unseren Clienten über die soeben angelegte Firewall laufen zu lassen, legen wir im Hetzner Dashboard ein Route an. Zuvor vergewissern wir uns, dass sich alle Netzteilnehmer im gleichen Subnetz befinden und fügen bei Bedarf die entsprechende Ressource hinzu. Um die Route hinzuzufügen klicken wir auf den Reiter Routen und anschließenden "Route hinzufügen". Dann geben wir unter Ziel die Adresse 0.0.0.0/0 an und unter Gateway die Adresse der Firewall an. Damit läuft nun unserer gesamter Datenverkehr über die Firewall.

3. Client Installation:

3.1 Hinzufügen eines Clienten zu unserem Netzwerk

Um auch weiterhin auf die Firewall GUI zugreifen zu können fügen wir unserem Netzwerk einen Clienten hinzu. Dazu gehen wir genauso vor wie oben beschrieben, indem wir einen Server hinzufügen und im Anschluss ein ISO Image einbinden. In unserem Fall bietet sich zur Installation ein Debain 11 System an. Nach einem Reboot kann nun die neue Ressource unserem Netzwerk hinzugefügt werden (siehe 2.).

3.2 Netzwerkkonfiguration anpassen:

Damit unsere Ressource Zugriff auf das Internet erlangt öffnen wir mit Root Rechten die Datei /etc/network/interfaces und modifizieren diese wie folgt:

auto ens10
iface ens10 inet dhcp
 post-up ip route add default via 10.0.0.1
        dns-nameservers 213.133.100.100 213.133.99.99 213.133.98.98
 
3.3 Während der Installation zeigte sich, dass das Hinzufügen der Software Repositories für die apt Paketverwaltung fehlerhaft war. Um im später weitere Pakete fehlerfrei installieren zu können müssen wir folgende Zeilen zu unserer Konfigurationsdatei von apt hinzufügen. Die nötigen Rechte erhalten wir mit dem Befehl su. Nach Eingabe lesen wir die Änderungen mit apt update ein.

nano /etc/apt/sources.list


deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main

deb http://deb.debian.org/debian-security/ bullseye-security main
deb-src http://deb.debian.org/debian-security/ bullseye-security main

deb http://deb.debian.org/debian bullseye-updates main
deb-src http://deb.debian.org/debian bullseye-updates main

deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free

deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free

deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free

apt update


3.4 Um nun zu prüfen, ob der Datenverkehr wie soeben konfiguriert auch über unsere Firewall läuft, installieren wir die Komponente tracepath. Dazu geben wir folgendes ein:

apt-get install iputils-tracepath

tracepath google.com

Tracepath zeigt das korrekte Routing über unsere Firewall.


3.5 Einrichtung einer graphischen Benutzeroberfläche

Da unsere pfSense Firewall von außen nicht erreichbar ist und wir trotzdem weiterhin einen Zugriff zur Konfiguration brauchen, richten wir uns eine entsprechende GUI ein. Dazu installieren wir die LXDE Desktop Umgebung, welche schnell und ressourcenschonend ist.  

apt install lxde

3.6 lokaler Zugriff auf die Firewall

Nach erfolgreicher Einrichtung des Desktops und eines reboots können wir per Browser wieder auf die pfSense zugreifen. Die IP-Adresse lautet in unserem Fall 10.0.0.2.


Literatur:

https://community.hetzner.com/tutorials/how-to-route-cloudserver-over-private-network-using-pfsense-and-hcnetworks

Add comment

Submit

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.