====== openVPN ======
//siehe auch: [[https://youtu.be/CnJj8vJ6pvI|VPN erklärt: Wie funktioniert ein Virtual Private Network?]]//
* [[http://wiki.ubuntuusers.de/openvpn]]
* [[http://openvpn.net/index.php/open-source/documentation/howto.html]]
* [[http://sarwiki.informatik.hu-berlin.de/OpenVPN_%28deutsch%29]]
* [[https://help.ubuntu.com/community/VPNServer#Setting%20up%20the%20client]]
Siehe auch **[[::freebsd:FreeBSD - VPN]]**
__komerzieller VPN-Anbieter mit besonders hohem Sicherheitsanspruch: [[https://mullvad.net/de|Mullvad VPN]]__
===== Server =====
* [[https://help.ubuntu.com/community/VPNServer]]
===== 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/*
# 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
#!/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