OpenVPN na instancji EC2 (Amazon)

Serwer

W celu instalacji OpenVPN-a trzeba włączyć repozytoriun EPEL:

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y upate

Instalujemy easy-rsa i OpenVPN:

sudo yum -y install easy-rsa openvpn

Generujemy certyfikat i klucz dla serwera:

cd /usr/share/easy-rsa/3.0
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-dh
./easyrsa build-server-full server nopass

Kopiujemy pliki do katalogu OpenVPN-a:

cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/server/

Generujemy klucz dla TLS-a:

cd /etc/openvpn/server
openvpn --genkey --secret pfs.key

Tworzymy plik konfiguracyjny dla serwera:

vim /etc/openvpn/server.conf

Wklejamy do pliku poniższą zawartość:

port 1194
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
cipher AES-256-CBC
auth SHA512
server 10.8.0.0 255.255.255.0
# push "redirect-gateway def1 bypass-dhcp" # Directs all traffic through VPN connection.
push "route 10.8.0.0 255.255.255.0"
# push "dhcp-option DNS 8.8.8.8"
# push "dhcp-option DNS 8.8.4.4"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
tls-server
tls-auth /etc/openvpn/server/pfs.key 0
client-to-client # Enables communication between clients.

OpenVPN działa na porcie 1194, więc taki port należy odblokować na firewallu.

Aktywujemy i uruchomiamy usługę OpenVPN-a:

systemctl enable openvpn@server
systemctl start openvpn@server

Klient

Na serwerze generujemy certyfikat i klucz dla klienta:

cd /usr/share/easy-rsa/3.0
./easyrsa build-client-full client nopass

Kopijemy poniższe pliki na urządzenie, które będzie łączyć się z serwerem:

/etc/openvpn/server/pfs.key
/usr/share/easy-rsa/3.0/pki/ca.crt
/usr/share/easy-rsa/3.0/pki/issued/client.crt
/usr/share/easy-rsa/3.0/pki/private/client.key

W katalogu /etc/openvpn tworzymy plik client.conf i wklejamy poniższą zawartość. W „remote” wpisujemy adres naszej instancji:

client
dev tun
proto tcp
remote ec2.instance.address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/client.crt
key /etc/openvpn/client/client.key
remote-cert-tls server
tls-auth /etc/openvpn/client/pfs.key 1
cipher AES-256-CBC
comp-lzo
verb 3
auth SHA512

Podobnie jak w przypadku serwera aktywujemy i uruchomiamy usługę OpenVPN-a dla klienta:

systemctl enable openvpn@client
systemctl start openvpn@client

Na kliencie sprawdzamy adres jaki został nam przydzielony:

ip addr

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.10 peer 10.8.0.9/32 scope global tun0

Sprawdzamy na kliencie oraz na serwerze czy komunikacja działa poprawnie:

[user@server]$ ping 10.8.0.10
PING 10.8.0.10 (10.8.0.10) 56(84) bytes of data.
64 bytes from 10.8.0.10: icmp_seq=1 ttl=64 time=48.4 ms
64 bytes from 10.8.0.10: icmp_seq=2 ttl=64 time=76.9 ms

[user@client]$ ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=255 time=53.2 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=255 time=39.5 ms

Linki

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-enable-epel/
https://www.comparitech.com/blog/vpn-privacy/how-to-make-your-own-free-vpn-using-amazon-web-services/
http://blog.dutchcoders.io/configuring-openvpn-using-easyrsa/

Ten wpis został opublikowany w kategorii AWS, OpenVPN. Dodaj zakładkę do bezpośredniego odnośnika.