OpenVPN
Inhaltsverzeichnis |
OpenVPN
OpenVPN ist eine auf SSL-Verschlüsselung basierende Variante eines virtuellen privaten Netzwerkes. In einigen Linuxdistributionen sind OpenVPN-Pakete bereits enthalten und können dort über die Paketverwaltung installiert werden. Für alle anderen ist die Software erhältlich unter http://openvpn.net/
Firewall
OpenVPN benutzt den Port 5000/UDP. Dieser muß dementsprechend für ein- und ausgehende Verbindungen in der Firewall freigegeben werden.
Authentifizierung
PSK ist ein statischer Schlüssel, der auf beiden Seiten identisch ist und vor der Benutzung auf sicherem Weg auszutauschen ist. Diese Variante ist leicht zu konfigurieren aber nicht besonders sicher, da der Schlüssel auf dem Client sicher aufbewahrt werden muß.
Benutzername/Kennwort
Anfälliger gegen Man-in-the-middle-Attacken. Benutzer könnten zu unsichere Passwörter verwenden oder sichere Passwörter an unsicherer Stelle notiert werden.
Zertifikate
X.509 Zertifikate sind die sicherste Variante der Authentifizierung und können dazu auch noch auf einer SmartCard abgelegt werden. Hierfür können käufliche, wie auch selbst signierte Zertifikate eingesetzt werden. Dazu wird eine eigene Certificate Authority benötigt. Anleitung zum erstellen einer eigenen hierachischen CA .
Backends
OpenVPN bietet ein PAM-Plugin. Damit können wiederum verschiedene Dienste wie z.B. RADIUS oder LDAP zur Authentifizierung genutzt werden.
Konfiguration
OpenVPN liefert gut kommentierte Beispielkonfigurationen mit.
Server
- /etc/openvpn/server.conf
proto udp dev tun # Zertifikate entstammen einer einer eigenen hierachischen CA # siehe Anleitung zum erstellen einer eigenen hierachischen CA . ca /etc/ssl/my_ca/services/openvpn/openvpn_complete.crt cert /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt key /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key dh /etc/ssl/my_ca/dh1024.pem # Ein B-Klasse Netz für den Server server 10.8.0.0 255.255.0.0 ifconfig-pool-persist ipp.txt duplicate-cn keepalive 10 120 comp-lzo persist-key persist-tun # Logging log /var/log/openvpn.log log-append /var/log/openvpn.log verb 3 # Dies ist nötig wenn der Server eine Route ins Netz des Clients kennen soll. # Beim Start des Servers werden die route-Einträge in die Kernel-Routing-Tabelle geschrieben. # Es muss noch eine Datei mit dem Namen des Clients im client-config-dir angelegt werden, die # die Verknüpfung der Route mit dem Client herstellt (iroute (unten)) client-config-dir /etc/openvpn/ccd route 192.168.10.0 255.255.255.0
- Konf.-dateien im "client-config-dir" z.B. /etc/openvpn/ccd/client_1
- Der Dateiname entspricht dem Clent - Namen, der aus dem CommonName des Client Zertifikates extrahiert wird.
# ifconfig-push weißt den Clients eine virtuelle IP zu, die kann dann per routing auf die entsprechenden Server gerouted werden. # Die erste IP-Adresse ist die Adresse virtuellen Clients an, die 2. IP die des virtuellen Server. # Sollten Windows Clients/TAP-Win32 Treiber verwendet werden , dann müssen diese aus einem XXX.XXX.XXX.XXX/30 Subnetz stammen # ewirkt, dass der Client immer die selbe IP erhält. ifconfig-push 10.0.1.1 10.0.1.2 # teilt dem Server bei bestehender Verbindung die Verknüpfung dieses Clients zum entsprechendem "route" - Eintrag # in ser "/etc/openvpn/server.conf" mit. iroute 192.168.10.0 255.255.255.0
- es sollte noch eine leer /etc/openvpn/ipp.txt existieren