Konfiguracja serwera OpenVPN + Klient

Nowe aktualne opisy i poradniki
Awatar użytkownika
Xela
Posty: 42
Rejestracja: 08 września 2016, 01:54

Konfiguracja serwera OpenVPN + Klient

Post autor: Xela » 25 września 2016, 00:27

Instalacja

Kod: Zaznacz cały

# apt install openvpn easy-rsa

Generowanie kluczy i certyfikatów

Kod: Zaznacz cały

# cp -r /usr/share/easy-rsa/ /etc/openvpn

Kod: Zaznacz cały

# mkdir /etc/openvpn/easy-rsa/keys

Kod: Zaznacz cały

# cd /etc/openvpn/easy-rsa
Edytujemy i zmieniamy wielkość klucza:

/etc/openvpn/easy-rsa/vars

Kod: Zaznacz cały

export KEY_SIZE=2048
Zapisujemy i wykonujemy export:

Kod: Zaznacz cały

# source ./vars
Czyścimy utworzone wcześniej certyfikaty:

Kod: Zaznacz cały

# ./clean-all
Generujemy certyfikat CA

Kod: Zaznacz cały

# ./build-ca
Generujemy certyfikat serwera (nazwa openvpn-server jest opcjonalna)

Kod: Zaznacz cały

# ./build-key-server openvpn-server
Podajemy hasło i zatwierdzamy podane wcześniej dane oraz podpis

Generujemy certyfikat dla klienta (nazwa openvpn-client także jest opcjonalna)

Kod: Zaznacz cały

# ./build-key openvpn-client
Generujemy certyfikat PEM

Kod: Zaznacz cały

# ./build-dh
Generujemy certyfikat HMAC (Wykorzystuje osobny klucz do podpisania każdego pakietu kontrolnego przy
uruchamianiu transmisji. Dane, które nie są odpowiednio podpisane takim kluczem są automatycznie odrzucane)

Kod: Zaznacz cały

# openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key
Wszystkie certyfikaty i klucze, które utworzyliśmy znajdują się w lokacji /etc/openvpn/easy-rsa/keys/

Certyfikaty i klucze serwera kopiujemy do /etc/openvpn/

Kod: Zaznacz cały

# cd /etc/openvpn/easy-rsa/keys/

Kod: Zaznacz cały

# cp ca.crt openvpn-server.crt openvpn-server.key dh2048.pem /etc/openvpn/
Certyfikaty i klucze, które przenosimy do klienta to:

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/openvpn-client.crt
/etc/openvpn/easy-rsa/keys/openvpn-client.key


Konfiguracja serwera

Tworzymy plik server.conf w lokacji /etc/openvpn/

/etc/openvpn/server.conf

Kod: Zaznacz cały

port xxxx  ##port   
proto udp  ##protokół
dev tun  ##interfejs 
ca ca.crt  ##cert CA
cert openvpn-server.crt  ##cert serwera
key openvpn-server.key  ##klucz prywatny serwera
dh dh2048.pem  ##parametry algorytmu diffiego-hellmana
server 10.8.0.0 255.255.255.0  ##klasa ip
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp" ##przekierowanie calego ruchu przez VPN
push "dhcp-option DNS 8.8.8.8" ##konfiguracja DNS dla DHCP
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120  ##utrzymuje polaczenie
comp-lzo  ##kompresja
user nobody  ##uzytkownik na potrzeby OpenVPN
group nogroup  ##grupa na potrzeby OpenVPN
persist-key  ##zapamietuje klucz
persist-tun  ##podtrzymuje interfejs TUN
status openvpn-status.log
verb 3  ##poziom logowania
key-direction 0  ##tu wklejamy klucz HMAC (ta.key)
<tls-auth>
-----BEGIN OpenVPN Static key V1-----       
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END OpenVPN Static key V1-----
</tls-auth>
Konfigurujemy przekazywanie pakietów:

/etc/sysctl.conf

Kod: Zaznacz cały

net.ipv4.ip_forward=1
Zatwierdzamy zmiany:

Kod: Zaznacz cały

# sysctl -p
oraz routing w fw:

Kod: Zaznacz cały

# iptables -A POSTROUTING --table nat -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Dodatkowo warto dodać regułę netfiltera do autostartu aby była odnawiana po każdym restarcie maszyny:
/etc/rc.local

Kod: Zaznacz cały

iptables -A POSTROUTING --table nat -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Konfiguracja klienta

Instalujemy paczkę openvpn

Kod: Zaznacz cały

# apt install openvpn
Będą nam potrzebne certyfikaty i klucze klienta, które wygenerowaliśmy wcześniej na serwerze:

ca.crt
openvpn-client.crt
openvpn-client.key

Przerzucamy je na klienta do lokacji:
/etc/openvpn/

oraz tworzymy tam plik client.conf
/etc/openvpn/client.conf

Kod: Zaznacz cały

client
dev tun
proto udp
remote xxx.xxx.xxx xxxxx ##adres serwera+port
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert openvpn-client.crt
key openvpn-client.key
ns-cert-type server
comp-lzo
verb 3
key-direction 1  ##ta.key tu se wklej
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END OpenVPN Static key V1-----
</tls-auth>
Restartujemy OpenVPN:

Kod: Zaznacz cały

# systemctl restart openvpn
Sprawdzamy czy poprawnie zestawiliśmy tunel:

Kod: Zaznacz cały

ip a s dev tun0
W odpowiedzi powinniśmy otrzymać:

Kod: Zaznacz cały

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

Uszczelnienie zapytań DNS (DNS leak)

https://morfitronik.pl/przeciek-dns-dns ... esolvconf/
test >> https://www.dnsleaktest.com/


Uszczelnienie Serwera

Szybka konfiguracja netfiltera na Debianie >> klik

Jeżeli konfigurujemy tylko serwer OpenVPN oczywiście nie dodajemy makr DNS oraz HTTP zamiast tego wpuszczamy makro OpenVPN w lokacji /etc/shorewall/rules:
Obrazek

oraz dodajemy interfejs tun0 na tych samych zasadach co interfejs eth0 w lokacji /etc/shorewall/interfaces:
Obrazek

Warto też uzupełnić blacklistę netfiltera o świeże droplisty >> https://www.spamhaus.org/drop/

Habibi
Posty: 1
Rejestracja: 17 września 2017, 15:06

Re: Konfiguracja serwera OpenVPN + Klient

Post autor: Habibi » 17 września 2017, 15:08

Fajny poradnik.
Ten link do youtube nie działa (Uszczelnienie Serwera - netfilter na debianie). Mógłbyś podrzucić coś innego, o co chodziło?

ODPOWIEDZ