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