Inhaltsverzeichnis
openVPN
siehe auch: VPN erklärt: Wie funktioniert ein Virtual Private Network?
Siehe auch FreeBSD - VPN
komerzieller VPN-Anbieter mit besonders hohem Sicherheitsanspruch: Mullvad VPN
Server
Client
nachsehen, was im P12-Zertifikat drin steht (eine P12-Datei ist praktisch eine verschlüsselte PEM-Datei):
> openssl pkcs12 -info -in /home/fritz/key.p12
Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
localKeyID: DC 63 92 67 35 7D E2 58 8A F1 DC FE 38 58 7E 79 EB 15 F1 42
subject=/C=DE/ST=Bundesland/L=Stadt/O=Organisation/CN=Fritz/emailAddress=fritz@firma.de
issuer=/C=DE/ST=Bundesland/L=Stadt/O=Organisation/CN=Zertifizierungsstelle/emailAddress=a.bubi@work.de
-----BEGIN CERTIFICATE-----
...
Zertifikat im PEM-Format exportieren:
> openssl pkcs12 -in /home/fritz/key.p12 -out /home/fritz/cert.pem Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
Gültigkeitszeitraum des PEM-Zertifikates anzeigen:
> openssl x509 -noout -dates -in /home/fritz/cert.pem notBefore=May 12 15:46:00 2015 GMT notAfter=May 11 15:46:00 2016 GMT
Ablaufdatum des PEM-Zertifikates anzeigen:
> openssl x509 -noout -enddate -in /home/fritz/cert.pem notAfter=May 11 15:46:00 2016 GMT
Bei Ubuntu:
> aptitude -y install openvpn
Konfiguration
> vi opnevpn.conf client ;dev tun dev tap ;dev-node MyTap proto tcp ;proto udp ;remote gateway.domain.de 1194 remote 123.456.789.101 1194 ;remote-random resolv-retry infinite nobind persist-tun persist-key ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #] ;mute-replay-warnings pkcs12 /home/fritz/key.p12 ;ns-cert-type server ;ns-cert-type client ;tls-auth ta.key 1 ;cipher x comp-lzo pull verb 3 ;mute 20 ;up /home/fritz/bin/ovpn_start.sh ;down /home/fritz/bin/ovpn_stop.sh ;up /etc/network/if-up.d/openvpn ;down /etc/network/if-down.d/openvpn
Default
Bei den meisten (großen) Linux-Distributionen (z.B. RedHat, CentOS, Fedora oder Ubuntu) sollte es so funktionieren:
Als erstes die Konfigurationsdatei mit einem erwarteten Namen an den erwarteten Ort kopieren.
# cp opnevpn.conf /etc/openvpn/
Dann kann man es starten (bei einem passwort geschützten Schlüssel, wird es natürlich an dieser Stelle auch abgefragt!).
# /etc/init.d/openvpn start
* Starting virtual private network daemon(s)...
* Autostarting VPN 'openvpn'
Enter Private Key Password:
[ OK ]
von Hand
Sollte es aus irgendwelchen Gründen nicht hin hauen, dann funktionierte es aber auf jeden Fall von Hand!
Gestartet wird openVPN als root so:
# openvpn --config /home/fritz/opnevpn.conf
oder als fritz so:
# su - root -c "openvpn --config /home/fritz/opnevpn.conf"
Es ist weiterhin darauf zu achten, dass die /etc/resolv.conf evtl. die nötigen Einträge hat.
Sollte man auf die Mitnahme der SSH-Schlüssel angewiesen sein, kann man bei Problemen ausprobieren, ob diese Kommandos helfen:
> echo 'eval $(ssh-agent)' >> ~/.bashrc > echo "ssh-add" >> ~/.bashrc
Eigentlich sollte es ja automatisch gehen, aber die Ausnahme bestätigt die Regel…
Sollte es trotzdem nicht funktionieren, dann empfehle ich das Paket keychain, das hat bis jetzt immer geholfen:
# keychain --agents ssh ~/.ssh/id_dsa ~/.ssh/id_rsa ~/.ssh/id_rsa_arbeit
openVPN - ein Beispiel
getestet mit Ubuntu 18.04.1 LTS
die Schlüssel müssen sicher vor der Welt sein:
> chown -R 0:0 /etc/openvpn/schl > chmod 0700 /etc/openvpn/schl > chmod 0600 /etc/openvpn/schl/*
- /etc/openvpn/openvpn.conf
# openvpn --config /etc/openvpn/openvpn.conf auth-nocache # remote 199.227.199.199 1194 pkcs12 /etc/openvpn/schl/ho.p12 # comp-lzo dev tap cipher AES-256-CBC tls-auth /etc/openvpn/schl/ta.key 1 # auth SHA1 #auth SHA256 #auth SHA512 # client proto udp #resolv-retry infinite resolv-retry 3 nobind persist-key persist-tun pull verb 3 # ping-restart 5 # Restart pause, 5 second(s) ### WARNING: No server certificate verification method has been enabled. #ns-cert-type server # is DEPRECATED remote-cert-tls server
- /root/bin/Bereitschaft.sh
#!/bin/bash echo 'Z2VoZWltZXMgUGFzc3dvcnQgZsO8ciBkZW4gUDEyLVNjaGzDvHNzZWwK' | base64 -d openvpn --writepid /run/openvpn/openvpn.pid --status /run/openvpn/openvpn.status 10 --cd /etc/openvpn --config /etc/openvpn/openvpn.conf
> screen -S openVPN /root/bin/Bereitschaft.sh > route -n > screen -x openVPN
> ps alx | fgrep -v grep | fgrep openvpn > cat /run/openvpn/openvpn.pid > cat /run/openvpn/openvpn.status
> kill -9 $(cat /run/openvpn/openvpn.pid) > kill -9 $(cat /run/openvpn/openvpn.pid) || rm /run/openvpn/openvpn.pid
