====== Information ======
* OpenVPN ((https://openvpn.net))
* [[Information:Realm of Espionage]]
* vpn.realmofespionage.xyz ((OpenVPN))
===== Prerequisites =====
* [[distros:ubuntu_server | Ubuntu Server]]
====== Dependencies ======
****
sudo apt install openvpn easy-rsa
====== Firewall ======
===== Kernel Parameter =====
/etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
===== ufw =====
==== Forward Policy ====
* Change ''DEFAULT_FORWARD_POLICY'' from ''DENY'' to ''ACCEPT''
sudo -e '/etc/default/ufw'
#DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"
==== Masquerade Rule ====
* https://help.ubuntu.com/lts/serverguide/firewall.html#ip-masquerading
* ''10.8.0.0/24'' is the default coming from the ''server'' setting in OpenVPN's ''server.conf''
* ''enp3s0'' can change
sudo -e '/etc/ufw/before.rules'
# Rule for OpenVPN
# Adapted from https://help.ubuntu.com/lts/serverguide/firewall.html#ip-masquerading
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o enp3s0 -j MASQUERADE
COMMIT
==== OpenVPN Server Rule ====
* 1194/udp is for OpenVPN clients to connect to the server
sudo -e '/etc/ufw/applications.d/custom' && sudo ufw allow 'openvpn-custom'
[openvpn-custom]
title=openvpn-custom
description=OpenVPN Server
ports=1194/udp
====== Certificate Authority ======
===== Settings =====
* Remove existing settings and copy/paste this block in place of it
* Be sure to finish the email at ''KEY_EMAIL''
cd ~ && rm -Rf ~/'openvpn-ca' && make-cadir ~/'openvpn-ca' && nano ~/'openvpn-ca/vars'
export KEY_COUNTRY="US"
export KEY_PROVINCE="PA"
export KEY_CITY="Charleroi"
export KEY_ORG="Realm of Espionage"
export KEY_EMAIL="espionage724@x"
export KEY_OU="VPN"
export KEY_CN="realmofespionage.xyz"
#export KEY_CN="realmofespionage.ddns.net"
# X509 Subject Field
export KEY_NAME="RoE | VPN"
export KEY_ALTNAMES="RoE VPN"
===== Build CA =====
****
cd ~/'openvpn-ca' && source ~/'openvpn-ca/vars' && ~/'openvpn-ca/clean-all' && ~/'openvpn-ca/build-ca'
===== Build Key Server =====
* ''server's hostname'' should be ''realmofespionage.xyz'' or ''realmofespionage.ddns.net''
* No ''challenge password''
* No ''optional company name''
* Yes ''Sign the certificate''
* Yes ''commit''
cd ~/'openvpn-ca' && ~/'openvpn-ca/build-key-server' 'RoE | VPN'
===== Build Diffie-Hellman Keys =====
****
cd ~/'openvpn-ca' && ~/'openvpn-ca/build-dh'
===== Generate HMAC Signature =====
****
openvpn --genkey --secret ~/'openvpn-ca/keys/ta.key'
===== Generate Client Keys =====
* ''x'' is the hostname for a client
* No ''challenge password''
* No ''optional company name''
* Yes ''Sign the certificate''
* Yes ''commit''
cd ~/'openvpn-ca' && source ~/'openvpn-ca/vars' && ~/'openvpn-ca/build-key' 'x'
===== Copy Keys to OpenVPN =====
****
sudo cp ~/'openvpn-ca/keys/ca.crt' ~/'openvpn-ca/keys/ca.key' ~/'openvpn-ca/keys/RoE.crt' ~/'openvpn-ca/keys/RoE.key' ~/'openvpn-ca/keys/ta.key' ~/'openvpn-ca/keys/dh2048.pem' '/etc/openvpn'
====== OpenVPN ======
===== Settings =====
==== Default Config ====
****
gunzip -c '/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz' | sudo tee '/etc/openvpn/server.conf' > '/dev/null'
==== Custom Config ====
* Complete as of 2018/04/08
sudo -e '/etc/openvpn/server.conf'
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/RoE.crt
key /etc/openvpn/RoE.key
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0
client-to-client
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-256-CBC
auth SHA512
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /etc/openvpn/openvpn-status.log
verb 0
===== OpenVPN User =====
****
sudo adduser --system --shell '/usr/sbin/nologin' --no-create-home 'openvpn'
====== Client Profiles ======
===== Base =====
mkdir -p ~/'openvpn-clients' && nano ~/'openvpn-clients/base.conf'
client
dev tun
proto udp
remote realmofespionage.xyz 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA512
key-direction 1
comp-lzo
verb 0
===== Client-specific =====
* Be sure to [[#generate_client_keys | generate client keys]]
==== Izaro ====
* Imports ''base.conf'' and adds '''', '''', '''', and '''' sections to ''Izaro.ovpn''
cat ~/'openvpn-clients/base.conf' | tee ~/'openvpn-clients/Izaro.ovpn' > '/dev/null' && echo -e "\n\n$(cat ~/'openvpn-ca/keys/ca.crt')\n\n\n$(cat ~/'openvpn-ca/keys/Izaro.crt')\n\n\n$(cat ~/'openvpn-ca/keys/Izaro.key')\n\n\n$(cat ~/'openvpn-ca/keys/ta.key')\n" | tee --append ~/'openvpn-clients/Izaro.ovpn' > '/dev/null'
=== scp ===
****
scp espionage724@192.168.1.155:~/'openvpn-clients/Izaro.ovpn' ~/'Downloads'
==== Spinesnap ====
* Imports ''base.conf'' and adds '''', '''', '''', and '''' sections to ''Spinesnap.ovpn''
cat ~/'openvpn-clients/base.conf' | tee ~/'openvpn-clients/Spinesnap.ovpn' > '/dev/null' && echo -e "\n\n$(cat ~/'openvpn-ca/keys/ca.crt')\n\n\n$(cat ~/'openvpn-ca/keys/Spinesnap.crt')\n\n\n$(cat ~/'openvpn-ca/keys/Spinesnap.key')\n\n\n$(cat ~/'openvpn-ca/keys/ta.key')\n" | tee --append ~/'openvpn-clients/Spinesnap.ovpn' > '/dev/null'
=== scp ===
****
scp espionage724@192.168.1.155:~/'openvpn-clients/Spinesnap.ovpn' ~/'Downloads'