Konfiguracja serwera OpenVPN + Klient
: 25 września 2016, 00:27
Instalacja
Generowanie kluczy i certyfikatów
Edytujemy i zmieniamy wielkość klucza:
/etc/openvpn/easy-rsa/vars
Zapisujemy i wykonujemy export:
Czyścimy utworzone wcześniej certyfikaty:
Generujemy certyfikat CA
Generujemy certyfikat serwera (nazwa openvpn-server jest opcjonalna)
Podajemy hasło i zatwierdzamy podane wcześniej dane oraz podpis
Generujemy certyfikat dla klienta (nazwa openvpn-client także jest opcjonalna)
Generujemy certyfikat PEM
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)
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/
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
Konfigurujemy przekazywanie pakietów:
/etc/sysctl.conf
Zatwierdzamy zmiany:
oraz routing w fw:
Dodatkowo warto dodać regułę netfiltera do autostartu aby była odnawiana po każdym restarcie maszyny:
/etc/rc.local
Konfiguracja klienta
Instalujemy paczkę 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
Restartujemy OpenVPN:
Sprawdzamy czy poprawnie zestawiliśmy tunel:
W odpowiedzi powinniśmy otrzymać:
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:
oraz dodajemy interfejs tun0 na tych samych zasadach co interfejs eth0 w lokacji /etc/shorewall/interfaces:
Warto też uzupełnić blacklistę netfiltera o świeże droplisty >> https://www.spamhaus.org/drop/
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
/etc/openvpn/easy-rsa/vars
Kod: Zaznacz cały
export KEY_SIZE=2048
Kod: Zaznacz cały
# source ./vars
Kod: Zaznacz cały
# ./clean-all
Kod: Zaznacz cały
# ./build-ca
Kod: Zaznacz cały
# ./build-key-server openvpn-server
Generujemy certyfikat dla klienta (nazwa openvpn-client także jest opcjonalna)
Kod: Zaznacz cały
# ./build-key openvpn-client
Kod: Zaznacz cały
# ./build-dh
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
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/
/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>
/etc/sysctl.conf
Kod: Zaznacz cały
net.ipv4.ip_forward=1
Kod: Zaznacz cały
# sysctl -p
Kod: Zaznacz cały
# iptables -A POSTROUTING --table nat -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/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
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>
Kod: Zaznacz cały
# systemctl restart openvpn
Kod: Zaznacz cały
ip a s dev tun0
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:
oraz dodajemy interfejs tun0 na tych samych zasadach co interfejs eth0 w lokacji /etc/shorewall/interfaces:
Warto też uzupełnić blacklistę netfiltera o świeże droplisty >> https://www.spamhaus.org/drop/