Difference between revisions of "OpenVPN"

From HackerNet
Jump to: navigation, search
m
Tag: visualeditor
 
(24 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
  
== Server ==
 
Detta är exempelkonf för remote access med säkerhet i åtanke. Två-faktors-autentisering för inlogg samt TLS-autentisering av paketen. CA-certifikatet och TLS-nyckeln körs inline i konfigfilen för att det ska bli färre filer att hålla reda på.
 
server
 
 
  dev tun
 
  dev tun
 
  proto tcp
 
  proto tcp
  nobind
+
  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] 1
+
  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 24: 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 38: 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.harsbo.se 1194
+
  remote vpn.hackernet.se 1194
 
  resolv-retry infinite
 
  resolv-retry infinite
 
  nobind
 
  nobind
Line 60: Line 85:
 
  tls-client
 
  tls-client
 
  tls-auth [inline] 1
 
  tls-auth [inline] 1
  verify-x509-name vpn.harsbo.se name
+
  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 86: Line 112:
 
  <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.

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.

Openvpn1.png

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.