Hero Image

# [ARCHIVIERT] OpenVPN Server und Windows Client mit pfSense®

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
  • 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

  1. Grundeinstellungen
    1. System / Advanced / Miscellaneous
      1. PowerD: Ja
      2. Cryptographic Hardware: AES-NI and BSD Crypto Device
      3. Thermal Sensors: AMD K8, K10….
      4. State Killing on Gateway Failure: yes
      5. Save
    2. System / Advanced / Firewall & NAT
      1. Firewall Optimization Options: Conservative
      2. Save

Zertifikate erstellen

  1. CA Zertifikat erstellen
    1. System / Certificate Manager / CAs
    2. Add
      1. Descriptive name: Server-CA
      2. Method: Create an internal Certifacate Authority
      3. Key length (bits): 2048
      4. Digest Algorithm: sha256
      5. Lifetime (days): 3650
      6. Common Name: internal-ca
      7. Country Code: DE
      8. State or Province: NRW
      9. City: ERKRATH
      10. Organization: computing competence
      11. Organizational Unit: IT
      12. Save
  2. OpenVPN Server Zertifikat erstellen

    1. System / Certificate Manager/ Certificates
    2. Add

      1. Method: Create an Certificate Signing Request

      2. Descriptive name: OpenVPN Server SR

      3. Key length: 2048

      4. Digest Algorithm: sha256

      5. Common Name: OpenVPN Server

      6. Country Code: DE

      7. State or Province: NRW

      8. City: ERKRATH

      9. Organization: computing competence

      10. Organizational Unit: IT

      11. Certificate Type: Server Certificate

      12. Alternative Names: leer

      13. Save

    3.  Sign

      1. Method: Sign a Certificate Signing Request

      2. Descriptive name: OpenVPN Server

      3. CA to sign with: Server-CA (oben erstellt)

      4. CSR to sign: OpenVPN Server SR (oben erstellt)

      5. Certificate Lifetime (days): 3650

      6. Digest Algorithm: sha256

      7. Certificate Type: Server Certificate

      8. Alternative Names: leer

      9. Save

    4. OpenVPN Server SR kann dann gelöscht werden
      Damit sind nun die nötigen Zertifikate erstellt.

OpenVPN Server einrichten

  1. OpenVPN Server erstellen
    1. VPN / OpenVPN / Servers
    2.  Add
      1. Disabled: No
      2. Server mode: (Remote Access (SSL/TLS + User Auth)
        Damit braucht man einen Benutzernamen/Kennort UND ein gültiges Zertifikat
      3. Backend for authentication: Local Database
      4. Protocol: UDP on IPv4 only (Oder TCP wenn es zu Problemen kommt)
      5. Device mode: tun
      6. Interface: any
      7. Local port: 1194 (default; kann auch was anders sein)
      8. Description: OpenVPN Server
      9. TLS Configuration: Use a TLS Key
      10. Automatically generate a TLS Key: yes
        Diesen Schlüssel dann GUT aufbewahren
      11. Peer Certificate Authority: Server-CA (den wir oben erstellt haben)
      12. Server certificate: OpenVPN Server (oben erstellt)
      13. DH Parameter Length: 2048 bit
      14. ECDH Curve: Use Default
      15. Encryption Algorithm: AES-256-CBC
      16. NCP Algorithms: AES-128-CBC, AES-192-CBC, AES-256-CBC
        Die aussuchen, die auch auch die Hardware Crypto unterstützt werden!
      17. Auth digest algorithm: SHA256
      18. Hardware Crypto: BSD cryptodev engine – RSA, DSA, AES-128-CBC, AES-192-CBC, AES-256-CBC
      19. Certificate Depth: One
      20. Strict User-CN Matching: No
      21. Pv4 Tunnel Network: 192.168.12.0/24
      22. Hier kommt es nun an was ihr machen wollt:
        1. 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.
          1. Redirect IPv4 Gateway: No
          2. Redirect IPv6 Gateway: No
        2. Der verbundene Client soll komplett im Zielnetz teilnehmen können, und der normale Internetverkehr geht ebenfalls über den Router im Zielnetz raus.
          1. Redirect IPv4 Gateway: Yes
          2. Redirect IPv6 Gateway: No
      23. Hier kommt es wieder an was ihr machen wollt:
        1. 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.
          1. IPv4 Local network(s): 192.168.2.0/24
            Damit der OpenVPN Client auch weiß, wo es zum Zielnetz lang geht.
          2. IPv6 Local network(s): leer
        2. Der verbundene Client soll komplett im Zielnetz teilnehmen können, und der normale Internetverkehr geht ebenfalls über den Router im Zielnetz raus.
          1. Wenn oben Redirect IPv4 Gateway: Yes aktiviert ist, wird das Feld ausgeblendet.
      24. Compression: Omit Preference
        Hier kann, wenn es auf Geschwindigkeit denn auf Effizienz ankommt, auch „No LZO Compression“ ausgewählt werden.
      25. Dynamic IP: yes
      26. Topology: Subnet
      27. Hier kommt es nun wieder an was ihr machen wollt:
        1. 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.
          1. DNS Default Domain: no
          2. DNS Server enable: no
          3. Block Outside DNS: no
          4. Force DNS cache update: no
          5. NTP Server enable: no
          6. NetBIOS enable: no
        2. Der verbundene Client soll komplett im Zielnetz teilnehmen können und der normale Internetverkehr geht über den Router im Zielnetz raus.
          1. DNS Default Domain: Yes
          2. DNS Default Domain: remotedomain.local (anpassen!)
          3. DNS Server enable: Yes
          4. DNS Server 1: lokaler DNS Server, z.b. 192.168.2.1
          5. Block Outside DNS; yes
          6. Force DNS cache update: yes
          7. NTP Server enable: yes
          8. NetBIOS enable: no
      28. Gateway creation: IPv4 only
      29. Verbosity level: 3
      30. Mit Save abspeichern

Firewall öffnen

  1. OpenVPN Server von außen erreichbar machen, denn von Haus aus kommt nichts rein:
    1. Firewall / Rules / WAN
    2. Add
      1. Action: Pass
      2. Interface: WAN
      3. Address Family: IPv4
      4. Protocol: UDP
      5. Source: any
      6. Destination: This Firewall (self)
      7. Destination Port Range: OpenVPN (1194)
      8. Description: OpenVPN Server

Damit wäre die OpenVPN Server Installation abgeschlossen

Benutzer und Gruppenberechtigung anlegen

  1. Benutzer für OpenVPN anlegen
    1. System / User Manager / Groups
      1. Add
        1. Group name: OpenVPN User
        2. Scope: Remote
      2. Save
      3. OpenVPN User Gruppe bearbeiten
        1. Assigned Privileges
        2. Add
          1. User – VPN: IPSec xauth Dialin
        3. Save
    2. System / User Manager / Users
      1. Add
        1. Username: vpnuser
        2. Password: vpnpassword
        3. Group membership: OpenVPN User
        4. Certificate: Yes!
        5. Descriptive name: OpenVPN Client (vpnuser)
        6. Certificate authority: Server-CA
        7. Key length: 2048
        8. Lifetime: 3650
      2. Save

Damit wäre alles bereit damit sich ein Benutzer (hier der vpnuser) mit dem OpenVPN Server verbinden kann

OpenVPN Client Einstellungen exportieren

  1. Um Einstellungen aus dem OpenVPN Server exportieren können,
    lohnt sich die Installation eines kleinen Addons, was die Sachen extrem vereinfacht:

    1. System / Package Manager / Available Packages
    2. „pfSense-pkg-openvpn-client-export“ installieren

Einstellungen exportieren:

  1. VPN / OpenVPN / Client Export

    1. Remote Access Server: OpenVPN Server
    2. Host Name Resolution: Other
    3. Host Name: Der DynDNS Name oder die feste IP Adresse
    4. Verify Server CN: Automatic
    5. Hier kommt es nun an was ihr machen wollt:
      1. 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.
        1. Block Outside DNS: No
      2. Der verbundene Client soll komplett im Zielnetz teilnehmen können, und der normale Internetverkehr geht über den Router im Zielnetz raus.
        1. Block Outside DNS; Yes
    6. Save as default
    7. Unter OpenVPN Clients den Benutzeraussuchen
      und das Paket aussuchen:Current Windows Installer (2.4.4-Ix01)

OpenVPN Client Installieren

    1. Das heruntergeladene Paket auf dem Rechner installieren, welches eine VPN Verbindung herstellen soll.
      Die Konfiguration wird automatisch bei der Installation mit hinterlegt.
    2. 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.

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.