Difference between revisions of "OpenVPN"
Helikopter (talk | contribs) Tag: visualeditor |
|||
(26 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | OpenVPN är öppen källkod. | + | [[Category:Guider]] |
+ | OpenVPN är öppen källkod. Detta är exempelkonf för remote access med säkerhet i åtanke. Två-faktors-autentisering för inlogg samt TLS-autentisering av paketen. Tyvärr kan man inte hårdställa TLS-version. CA-certifikatet och TLS-nyckeln körs inline i konfigfilen för att det ska bli färre filer att hålla reda på. Remote access VPN är utmärkt om du vill känna dig som hemma var du än befinner dig. | ||
+ | == Installation == | ||
+ | Med pakethanterare: | ||
+ | apt-get install openvpn | ||
+ | openvpn --version | ||
− | == | + | Road warrior installer. |
− | + | wget https://git.io/vpn | sudo bash | |
− | + | OBS kontrollera det du wgetar innan du pipear till sudo bash. | |
+ | |||
+ | ==Konfiguration== | ||
+ | Openvpn är uppdelat i server och klient. | ||
+ | |||
+ | === Server === | ||
+ | En OpenVPN-server måste ha Diffie-Hellman-parametrar. | ||
+ | time openssl dhparam -out dhparam.pem 4096 | ||
+ | Servern måste kunna forwarda trafik | ||
+ | echo 1 > /proc/sys/net/ipv4/ip_forward | ||
+ | TLS-autentiseringsnyckeln ska vara samma på servern som klienterna | ||
+ | openvpn --genkey --secret ta.key | ||
dev tun | dev tun | ||
− | |||
proto tcp | proto tcp | ||
− | + | server 10.8.0.0 255.255.255.0 | |
− | + | ifconfig-pool-persist ipp.txt | |
− | + | ||
ca [inline] | ca [inline] | ||
cert Server.crt | cert Server.crt | ||
key Server.pem | key Server.pem | ||
− | auth- | + | <nowiki>#</nowiki>auth- |
− | + | ||
+ | dh dhparam.pem | ||
tls-server | tls-server | ||
− | tls-auth [inline] | + | tls-auth [inline] 0 |
− | + | ||
keepalive 10 30 | keepalive 10 30 | ||
cipher AES-256-CBC | cipher AES-256-CBC | ||
+ | user nobody | ||
+ | group nogroup | ||
persist-key | persist-key | ||
persist-tun | persist-tun | ||
Line 27: | Line 45: | ||
mssfix 1200 | mssfix 1200 | ||
verb 3 | verb 3 | ||
+ | |||
+ | client-to-client | ||
+ | status openvpn-status.log | ||
+ | |||
+ | push "redirect-gateway def1 bypass-dhcp" | ||
+ | push "dhcp-option DNS 10.8.0.1" | ||
<ca> | <ca> | ||
<nowiki>-----</nowiki>BEGIN CERTIFICATE----- | <nowiki>-----</nowiki>BEGIN CERTIFICATE----- | ||
MIIFjjCCA3agAwIBAgICAQAwDQYJKoZIhvcNAQENBQAwaDELMAkGA1UEBhMCU0Ux | MIIFjjCCA3agAwIBAgICAQAwDQYJKoZIhvcNAQENBQAwaDELMAkGA1UEBhMCU0Ux | ||
− | + | ... | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
W45x0oueEpRKlORpP00dSaeAEj9yJCd/0pltmmR92cGVYg== | W45x0oueEpRKlORpP00dSaeAEj9yJCd/0pltmmR92cGVYg== | ||
<nowiki>-----</nowiki>END CERTIFICATE----- | <nowiki>-----</nowiki>END CERTIFICATE----- | ||
Line 66: | Line 63: | ||
<nowiki>-----</nowiki>BEGIN OpenVPN Static key V1----- | <nowiki>-----</nowiki>BEGIN OpenVPN Static key V1----- | ||
fae4feae672f9e291a40be76ee408106 | fae4feae672f9e291a40be76ee408106 | ||
− | + | ... | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
16c46f97c66441da9bcddd2f717672d0 | 16c46f97c66441da9bcddd2f717672d0 | ||
<nowiki>-----</nowiki>END OpenVPN Static key V1----- | <nowiki>-----</nowiki>END OpenVPN Static key V1----- | ||
</tls-auth> | </tls-auth> | ||
− | == Klient == | + | |
− | Klientkonf som funkar till serverkonfen ovan. | + | === Klient === |
+ | Klientkonf som funkar till serverkonfen ovan. Spara conf filen i <code>/etc/openvpn/client/</code> | ||
client | client | ||
dev tun0 | dev tun0 | ||
proto udp | proto udp | ||
− | remote vpn. | + | remote vpn.hackernet.se 1194 |
resolv-retry infinite | resolv-retry infinite | ||
nobind | nobind | ||
− | + | ||
ca [inline] | ca [inline] | ||
cert Klient1.crt | cert Klient1.crt | ||
key Klient1.pem | key Klient1.pem | ||
auth-user-pass auth.txt | auth-user-pass auth.txt | ||
− | + | ||
tls-client | tls-client | ||
tls-auth [inline] 1 | tls-auth [inline] 1 | ||
− | verify-x509-name vpn. | + | verify-x509-name vpn.hackernet.se name |
− | + | ||
keepalive 10 30 | keepalive 10 30 | ||
cipher AES-256-CBC | cipher AES-256-CBC | ||
+ | auth SHA256 | ||
persist-key | persist-key | ||
persist-tun | persist-tun | ||
Line 114: | Line 100: | ||
<nowiki>-----</nowiki>BEGIN CERTIFICATE----- | <nowiki>-----</nowiki>BEGIN CERTIFICATE----- | ||
MIIFjjCCA3agAwIBAgICAQAwDQYJKoZIhvcNAQENBQAwaDELMAkGA1UEBhMCU0Ux | MIIFjjCCA3agAwIBAgICAQAwDQYJKoZIhvcNAQENBQAwaDELMAkGA1UEBhMCU0Ux | ||
− | + | ... | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
W45x0oueEpRKlORpP00dSaeAEj9yJCd/0pltmmR92cGVYg== | W45x0oueEpRKlORpP00dSaeAEj9yJCd/0pltmmR92cGVYg== | ||
<nowiki>-----</nowiki>END CERTIFICATE----- | <nowiki>-----</nowiki>END CERTIFICATE----- | ||
Line 149: | Line 108: | ||
<nowiki>-----</nowiki>BEGIN OpenVPN Static key V1----- | <nowiki>-----</nowiki>BEGIN OpenVPN Static key V1----- | ||
fae4feae672f9e291a40be76ee408106 | fae4feae672f9e291a40be76ee408106 | ||
− | + | ... | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
16c46f97c66441da9bcddd2f717672d0 | 16c46f97c66441da9bcddd2f717672d0 | ||
<nowiki>-----</nowiki>END OpenVPN Static key V1----- | <nowiki>-----</nowiki>END OpenVPN Static key V1----- | ||
</tls-auth> | </tls-auth> | ||
+ | |||
+ | == HTTPS == | ||
+ | OpenVPN och HTTPS kan samsas på samma port. | ||
+ | |||
+ | [[File:Openvpn1.png]] | ||
+ | |||
+ | == Dölja trafik == | ||
+ | En bra början: https://www.bestvpn.com/blog/5919/how-to-hide-openvpn-traffic-an-introduction/ | ||
+ | |||
+ | ==Systemd service== | ||
+ | {{OpenVPN-Systemd}} | ||
+ | Vill du veta mer om hur systemd templates fungerar kan du läsa [[Systemd#Template_unit|här]]. |
Latest revision as of 21:49, 6 December 2017
OpenVPN är öppen källkod. Detta är exempelkonf för remote access med säkerhet i åtanke. Två-faktors-autentisering för inlogg samt TLS-autentisering av paketen. Tyvärr kan man inte hårdställa TLS-version. CA-certifikatet och TLS-nyckeln körs inline i konfigfilen för att det ska bli färre filer att hålla reda på. Remote access VPN är utmärkt om du vill känna dig som hemma var du än befinner dig.
Contents
Installation
Med pakethanterare:
apt-get install openvpn openvpn --version
Road warrior installer.
wget https://git.io/vpn | sudo bash
OBS kontrollera det du wgetar innan du pipear till sudo bash.
Konfiguration
Openvpn är uppdelat i server och klient.
Server
En OpenVPN-server måste ha Diffie-Hellman-parametrar.
time openssl dhparam -out dhparam.pem 4096
Servern måste kunna forwarda trafik
echo 1 > /proc/sys/net/ipv4/ip_forward
TLS-autentiseringsnyckeln ska vara samma på servern som klienterna
openvpn --genkey --secret ta.key
dev tun proto tcp server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt ca [inline] cert Server.crt key Server.pem #auth- dh dhparam.pem tls-server tls-auth [inline] 0 keepalive 10 30 cipher AES-256-CBC user nobody group nogroup persist-key persist-tun comp-lzo tun-mtu 1500 mssfix 1200 verb 3 client-to-client status openvpn-status.log push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 10.8.0.1" <ca> -----BEGIN CERTIFICATE----- MIIFjjCCA3agAwIBAgICAQAwDQYJKoZIhvcNAQENBQAwaDELMAkGA1UEBhMCU0Ux ... W45x0oueEpRKlORpP00dSaeAEj9yJCd/0pltmmR92cGVYg== -----END CERTIFICATE----- </ca> <tls-auth> -----BEGIN OpenVPN Static key V1----- fae4feae672f9e291a40be76ee408106 ... 16c46f97c66441da9bcddd2f717672d0 -----END OpenVPN Static key V1----- </tls-auth>
Klient
Klientkonf som funkar till serverkonfen ovan. Spara conf filen i /etc/openvpn/client/
client dev tun0 proto udp remote vpn.hackernet.se 1194 resolv-retry infinite nobind ca [inline] cert Klient1.crt key Klient1.pem auth-user-pass auth.txt tls-client tls-auth [inline] 1 verify-x509-name vpn.hackernet.se name keepalive 10 30 cipher AES-256-CBC auth SHA256 persist-key persist-tun comp-lzo tun-mtu 1500 mssfix 1200 verb 3 <ca> -----BEGIN CERTIFICATE----- MIIFjjCCA3agAwIBAgICAQAwDQYJKoZIhvcNAQENBQAwaDELMAkGA1UEBhMCU0Ux ... W45x0oueEpRKlORpP00dSaeAEj9yJCd/0pltmmR92cGVYg== -----END CERTIFICATE----- </ca> <tls-auth> -----BEGIN OpenVPN Static key V1----- fae4feae672f9e291a40be76ee408106 ... 16c46f97c66441da9bcddd2f717672d0 -----END OpenVPN Static key V1----- </tls-auth>
HTTPS
OpenVPN och HTTPS kan samsas på samma port.
Dölja trafik
En bra början: https://www.bestvpn.com/blog/5919/how-to-hide-openvpn-traffic-an-introduction/
Systemd service
Denna OpenVPN template unit letar efter en .conf fil med det namnet du anger efter @ i mappen /etc/openvpn/client/
.
Spara filen under /usr/lib/systemd/system
och döp den till openvpn-client@.service.
[Unit] Description=OpenVPN tunnel for %I After=syslog.target network-online.target Wants=network-online.target Documentation=man:openvpn(8) Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO [Service] Type=notify PrivateTmp=true WorkingDirectory=/etc/openvpn/client ExecStart=/usr/sbin/openvpn --suppress-timestamps --nobind --config %i.conf CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE LimitNPROC=10 DeviceAllow=/dev/null rw DeviceAllow=/dev/net/tun rw ProtectSystem=true ProtectHome=true KillMode=process [Install] WantedBy=multi-user.target
Har du 3st VPN filer som heter vpn-office.conf, vpn-branch.conf, vpn-home.conf så kan du starta alla med följande kommando.
systemctl start openvpn-client@vpn-office systemctl start openvpn-client@vpn-branch systemctl start openvpn-client@vpn-home
För att dom ska autostarta vid boot kan du använda:
systemctl enable openvpn-client@vpn-office systemctl enable openvpn-client@vpn-branch systemctl enable openvpn-client@vpn-home
Vill du veta mer om hur systemd templates fungerar kan du läsa här.