Difference between revisions of "OpenVPN"

From HackerNet
Jump to: navigation, search
Tag: visualeditor
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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.  
+
[[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 ==
 
openssl dhparam -out dh4096.pem 4096
 
 
  dev tun
 
  dev tun
 
  proto tcp
 
  proto tcp
nobind
 
 
 
  server 10.8.0.0 255.255.255.0
 
  server 10.8.0.0 255.255.255.0
 
  ifconfig-pool-persist ipp.txt
 
  ifconfig-pool-persist ipp.txt
Line 13: Line 29:
 
  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 26: Line 45:
 
  mssfix 1200
 
  mssfix 1200
 
  verb 3
 
  verb 3
 
+
 
  client-to-client
 
  client-to-client
status openvpn-status.log
+
status openvpn-status.log
 
+
push "redirect-gateway def1 bypass-dhcp"
+
push "redirect-gateway def1 bypass-dhcp"
 
+
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 8.8.8.8"
+
 
 
push "dhcp-option DNS 8.8.4.4"
 
 
  <ca>
 
  <ca>
 
  <nowiki>-----</nowiki>BEGIN CERTIFICATE-----
 
  <nowiki>-----</nowiki>BEGIN CERTIFICATE-----
Line 50: Line 67:
 
  <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 67: 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 93: 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.