pfSense mit OpenVPN Server

Dies ist die Dokumentation meiner openvpn / pfsense einrichtung mit einer separaten CA. Im Gegensatz zu dieser Beschreibung verwende ich hier nicht den Ansatz mit easyRSA.

Wie immer, aber hier besonders: Use at your own risk.

Die pfsense aktualisiert bei afraid.org einen dynamischen DNS eintrag namens openvpn.xyz.org

1. Erstellen der notwendigen Zertifikate auf einer Debian basierenden openssl CA

Zuerst das Serverzertifikat

 openssl genrsa -out private/openvpn.xyz.org.key.pem 4096
 openssl req -new -key private/openvpn.xyz.org.key.pem -out certs/openvpn.xyz.org.csr.pem
 openssl ca -config openssl.cnf -extensions server_cert -notext -md sha256 -in certs/openvpn.xyz.org.csr.pem -out certs/openvpn.xyz.org.cert.pem

Dann ein separater Nutzer für die Openvpn Nutzung

openssl genrsa -out private/user1-openvpn.key.pem 4096
openssl req -new -key private/user1-openvpn.key.pem -out certs/user1-openvpn.csr.pem
openssl ca -config openssl.cnf -notext -md sha256 -in certs/user1-openvpn.csr.pem -out certs/user1-openvpn.cert.pem

2. Importieren des Zertifikates

Genau dieselbe Prozedur wir hier mit einem anderem Namen.

3. Erstellen der OpenVPN Server Konfiguration

Ich verwende hierzu den Wizard unter VPN \ OpenVPN

Hier wählen wir die vorhandene CA aus

und jetzt das gerade importierte Server Zertifikat

Beim Serversetup habe ich mich an die Default Werte gehalten.

Bei Tunnel Network ein neues noch nicht verwendetes Netzwerk eingeben und bei Local Network das Netzwerk angeben in das man gehen möchte (wenn man verschiedene VLANs hat). Bei Compression habe ich entgegen dem Screenshot später “Enabled with adaptiv…. “ ausgewählt.

Ich habe hier gleich die richtigen Regeln erstellen lassen

Und fertig

Optional habe ich noch einen User angelegt den ich aber noch nicht verwendet habe.

Da ich in den Einstellungen des OpenVPN Servers erst einmal nur “Remote Access SSL/TLS” ausgewählt habe. Das möchte ich später noch um ändern.

Dafür kann man hier schon mal den TLS Key kopieren. Den brauchen wir gleich auf der Client Seite.

So jetzt ist der Server fertig.

4. Erstellen einer OpenVPN Client Konfiguration auf Debian

Auf der Client Seite habe ich in einem Verzeichnis den gerade kopierten TLS key in eine Datei kopiert. Ausserdem brauchen wir noch die ca.cert und den user cert / key aus Schritt 1.

 vi server-tls.key 
   paste the tls key from openvpn server

 vi client.opvn 
    client
    dev tun
    proto udp
    remote openvpn.xyz.org <your opvn port> 
    resolv-retry infinite
    nobind
    user nobody
    group nogroup
    persist-key
    persist-tun
    ca ca.crt
    cert user1-openvpn.cert.pem
    key openvpn.xyz.org.key.pem
    ns-cert-type server
    cipher AES-256-CBC
    comp-lzo
    verb 3
    tls-auth server-tls.key  1

5. Verbindung aufbauen

Dann konnte ich mit

 sudo openvpn --config client.ovpn 

eine erfolgreiche Verbindung zu dem Server aufbauen

 ......
 ......
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: timers and/or timeouts modified
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: --ifconfig/up options modified
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: route options modified
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: route-related options modified
 Sun Jun 11 17:35:10 2017 Preserving previous TUN/TAP instance: tun0
 Sun Jun 11 17:35:10 2017 Initialization Sequence Completed

Offen / Todo

  • Umstellen von SSL / TLS auf “SSL/TLS username password”
  • Anbinden eines Android Clients