Da nun eine pfSense® installiert wurde, kann noch viel mehr gemacht werden als reines Routing/Firewall. Die Plattform gibt auch eine ganz passable OpenVPN Basis her, auf die wir hier einmal eingehen möchten.
WICHTIG: Dieser Artikel ist archiviert und erfährt keine Neuerungen mehr, da wir mit OPNsense eine Alternative nutzen. Er kann aber gut als Inspiration weiterhin dienlich sein.
Ziel dieser kleinen Anleitung ist, das ein Laptop/PC sich mit dem heimischen Büro/Netzwerk verbinden kann, um gesichert auf Daten oder das Internet zugreifen zu können.
Update 20190718: Kleinere Anpassungen für pfSense® 2.4.4-RELEASE-p3
Update 20200103: Kleinere Anpassungen am Ablauf, Fehlerkorrekturen
Vorraussetzungen
- IP Grundkonfiguration ist bekannt
- z.B. Quellnetz A: 192.168.1.0/24
- Router im Quellnetz: 192.168.1.1
- z.B. VPN-Netz: 192.168.12.0/24
- z.B. Zielnetz B: 192.168.2.0/24
- Router im Zielnetz: 192.168.2.1 (macht DNS und NTP)
- Zielnetzdomain: remotedomain.local
- z.B. Quellnetz A: 192.168.1.0/24
- Das Quellnetz verfügt über einen DynDNS Namen bei dynamischen IP Adressen
(z.B. meinvpnserver.dyndns.org) oder eine feste IP-Adresse. - Kurz sich selbst die Frage beantworten ob der Client nur auf bestimmte IP Adressen im Zielnetz zugreifen,
oder quasi komplett integriert sein soll (z.B. ähnlich einem echten Rechner im Büro).
Schnelldurchlauf
- pfSense® Konfigurieren
- Zertifikate erstellen
- OpenVPN Server installieren
- Firewall öffnen
- Benutzer und Gruppenberechtigung anlegen
- OpenVPN Client Einstellungen exportierbar machen
- OpenVPN Client Installieren
pfSense® Konfigurieren
- Grundeinstellungen
- System / Advanced / Miscellaneous
- PowerD: Ja
- Cryptographic Hardware: AES-NI and BSD Crypto Device
- Thermal Sensors: AMD K8, K10….
- State Killing on Gateway Failure: yes
- Save
- System / Advanced / Firewall & NAT
- Firewall Optimization Options: Conservative
- Save
- System / Advanced / Miscellaneous
Zertifikate erstellen
- CA Zertifikat erstellen
- System / Certificate Manager / CAs
- Add
- Descriptive name: Server-CA
- Method: Create an internal Certifacate Authority
- Key length (bits): 2048
- Digest Algorithm: sha256
- Lifetime (days): 3650
- Common Name: internal-ca
- Country Code: DE
- State or Province: NRW
- City: ERKRATH
- Organization: computing competence
- Organizational Unit: IT
- Save
-
OpenVPN Server Zertifikat erstellen
- System / Certificate Manager/ Certificates
-
Add
-
Method: Create an Certificate Signing Request
-
Descriptive name: OpenVPN Server SR
-
Key length: 2048
-
Digest Algorithm: sha256
-
Common Name: OpenVPN Server
-
Country Code: DE
-
State or Province: NRW
-
City: ERKRATH
-
Organization: computing competence
-
Organizational Unit: IT
-
Certificate Type: Server Certificate
-
Alternative Names: leer
-
Save
-
-
Sign
-
Method: Sign a Certificate Signing Request
-
Descriptive name: OpenVPN Server
-
CA to sign with: Server-CA (oben erstellt)
-
CSR to sign: OpenVPN Server SR (oben erstellt)
-
Certificate Lifetime (days): 3650
-
Digest Algorithm: sha256
-
Certificate Type: Server Certificate
-
Alternative Names: leer
-
Save
-
- OpenVPN Server SR kann dann gelöscht werden
Damit sind nun die nötigen Zertifikate erstellt.
OpenVPN Server einrichten
- OpenVPN Server erstellen
- VPN / OpenVPN / Servers
- Add
- Disabled: No
- Server mode: (Remote Access (SSL/TLS + User Auth)
Damit braucht man einen Benutzernamen/Kennort UND ein gültiges Zertifikat - Backend for authentication: Local Database
- Protocol: UDP on IPv4 only (Oder TCP wenn es zu Problemen kommt)
- Device mode: tun
- Interface: any
- Local port: 1194 (default; kann auch was anders sein)
- Description: OpenVPN Server
- TLS Configuration: Use a TLS Key
- Automatically generate a TLS Key: yes
Diesen Schlüssel dann GUT aufbewahren - Peer Certificate Authority: Server-CA (den wir oben erstellt haben)
- Server certificate: OpenVPN Server (oben erstellt)
- DH Parameter Length: 2048 bit
- ECDH Curve: Use Default
- Encryption Algorithm: AES-256-CBC
- NCP Algorithms: AES-128-CBC, AES-192-CBC, AES-256-CBC
Die aussuchen, die auch auch die Hardware Crypto unterstützt werden! - Auth digest algorithm: SHA256
- Hardware Crypto: BSD cryptodev engine – RSA, DSA, AES-128-CBC, AES-192-CBC, AES-256-CBC
- Certificate Depth: One
- Strict User-CN Matching: No
- Pv4 Tunnel Network: 192.168.12.0/24
- Hier kommt es nun an was ihr machen wollt:
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- Redirect IPv4 Gateway: No
- Redirect IPv6 Gateway: No
- Der verbundene Client soll komplett im Zielnetz teilnehmen können, und der normale Internetverkehr geht ebenfalls über den Router im Zielnetz raus.
- Redirect IPv4 Gateway: Yes
- Redirect IPv6 Gateway: No
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- Hier kommt es wieder an was ihr machen wollt:
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- IPv4 Local network(s): 192.168.2.0/24
Damit der OpenVPN Client auch weiß, wo es zum Zielnetz lang geht. - IPv6 Local network(s): leer
- IPv4 Local network(s): 192.168.2.0/24
- Der verbundene Client soll komplett im Zielnetz teilnehmen können, und der normale Internetverkehr geht ebenfalls über den Router im Zielnetz raus.
- Wenn oben Redirect IPv4 Gateway: Yes aktiviert ist, wird das Feld ausgeblendet.
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- Compression: Omit Preference
Hier kann, wenn es auf Geschwindigkeit denn auf Effizienz ankommt, auch „No LZO Compression“ ausgewählt werden. - Dynamic IP: yes
- Topology: Subnet
- Hier kommt es nun wieder an was ihr machen wollt:
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- DNS Default Domain: no
- DNS Server enable: no
- Block Outside DNS: no
- Force DNS cache update: no
- NTP Server enable: no
- NetBIOS enable: no
- Der verbundene Client soll komplett im Zielnetz teilnehmen können und der normale Internetverkehr geht über den Router im Zielnetz raus.
- DNS Default Domain: Yes
- DNS Default Domain: remotedomain.local (anpassen!)
- DNS Server enable: Yes
- DNS Server 1: lokaler DNS Server, z.b. 192.168.2.1
- Block Outside DNS; yes
- Force DNS cache update: yes
- NTP Server enable: yes
- NetBIOS enable: no
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- Gateway creation: IPv4 only
- Verbosity level: 3
- Mit Save abspeichern
Firewall öffnen
- OpenVPN Server von außen erreichbar machen, denn von Haus aus kommt nichts rein:
- Firewall / Rules / WAN
- Add
- Action: Pass
- Interface: WAN
- Address Family: IPv4
- Protocol: UDP
- Source: any
- Destination: This Firewall (self)
- Destination Port Range: OpenVPN (1194)
- Description: OpenVPN Server
Damit wäre die OpenVPN Server Installation abgeschlossen
Benutzer und Gruppenberechtigung anlegen
- Benutzer für OpenVPN anlegen
- System / User Manager / Groups
- Add
- Group name: OpenVPN User
- Scope: Remote
- Save
- OpenVPN User Gruppe bearbeiten
- Assigned Privileges
- Add
- User – VPN: IPSec xauth Dialin
- Save
- Add
- System / User Manager / Users
- Add
- Username: vpnuser
- Password: vpnpassword
- Group membership: OpenVPN User
- Certificate: Yes!
- Descriptive name: OpenVPN Client (vpnuser)
- Certificate authority: Server-CA
- Key length: 2048
- Lifetime: 3650
- Save
- Add
- System / User Manager / Groups
Damit wäre alles bereit damit sich ein Benutzer (hier der vpnuser) mit dem OpenVPN Server verbinden kann
OpenVPN Client Einstellungen exportieren
-
Um Einstellungen aus dem OpenVPN Server exportieren können,
lohnt sich die Installation eines kleinen Addons, was die Sachen extrem vereinfacht:- System / Package Manager / Available Packages
- „pfSense-pkg-openvpn-client-export“ installieren
Einstellungen exportieren:
-
VPN / OpenVPN / Client Export
- Remote Access Server: OpenVPN Server
- Host Name Resolution: Other
- Host Name: Der DynDNS Name oder die feste IP Adresse
- Verify Server CN: Automatic
- Hier kommt es nun an was ihr machen wollt:
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- Block Outside DNS: No
- Der verbundene Client soll komplett im Zielnetz teilnehmen können, und der normale Internetverkehr geht über den Router im Zielnetz raus.
- Block Outside DNS; Yes
- Der verbundene Client soll nur auf einzelne IP Adressen des Zielnetzes zugreifen können (z.b. ein bestimmter Server), aber der normale Internetverkehr geht über den eigenen Router raus.
- Save as default
- Unter OpenVPN Clients den Benutzeraussuchen
und das Paket aussuchen:Current Windows Installer (2.4.4-Ix01)
OpenVPN Client Installieren
-
- Das heruntergeladene Paket auf dem Rechner installieren, welches eine VPN Verbindung herstellen soll.
Die Konfiguration wird automatisch bei der Installation mit hinterlegt. - OpenVPN starten und mit einem Doppelklick auf das Systemsymbol neben der Uhr wird eine Verbindung hergestellt.
Ob das Kennwort gespeichert werden soll oder nicht ist Geschmackssache.
- Das heruntergeladene Paket auf dem Rechner installieren, welches eine VPN Verbindung herstellen soll.
Nun steht dem Zugriff auf das Zielnetz nichts mehr im Wege. Was jetzt noch fehlt ist die Firewall Regel auf dem OpenVPN Inteface. Achtet dadrauf das der benötigte Verkehr auch freigeschaltet ist.
Am allereinfachsten (zum Test) eine Any Regel erstellen -> „Firewall – Rules – OpenVPN“ – ADD
Action: Pass
Interface: OpenVPN
Address Family: IPv4
Protocol: Any
Source: Any
Destination: Any
Ohne Regeln, kein Netzwerkzugriff.
Ein ping z.B. auf die 192.168.2.1 bringt Klarheit ob die Verbindung und Verbindungseinstellungen korrekt sind oder ob die Firewall Regeln noch angepasst werden müssen.