OpenVPN konfiguracja serwera i klienta

26 wrz 2015, 23:29
doktordemolka

doktordemolka

Początkujący User 300 posty 43 pkt.

OpenVPN konfiguracja serwera i klienta

26 wrz 2015, 23:29
konfigurację opieram na debianie


Przede wszystkim musimy mieć załączony TUN na serwerze a więc sprawdzamy:

Kod:
test ! -c /dev/net/tun && echo TUN jest niedostepny || echo TUN jest dostepny


jeżeli jest ok, przechodzimy do konfiguracji:

Kod:
apt-get install openvpn openssl



konfiguracja i tworzenie kluczy oraz certyfikatów


Kod:
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
chown -R $USER /etc/openvpn/easy-rsa
cp vars{,.orig}



W razie potrzeby edytujemy i zmieniamy parametry
Kod:
nano ./vars


Będą to dane wykorzystane do tworzenia certyfikatów (warto zmienić wielkość klucza z domyślnego na 2048)

Kod:
export KEY_SIZE=2048

Resztę danych tj. kraj, firma, mail itp. wypełniamy wedle uznania


zapisujemy i wykonujemy export
Kod:
source ./vars


czyścimy utworzone wcześniej certyfikaty
Kod:
./clean-all



Generujemy certyfikat CA
Kod:
./build-ca


Generujemy certyfikat serwera (nazwa openvpn-serwer jest opcjonalna)
Kod:
./build-key-server openvpn-serwer

podajemy hasło i zatwierdzamy podane wcześniej dane oraz podpis


Generujemy certyfikat dla klienta (nazwa openvpn-client także jest opcjonalna)
Kod:
./build-key openvpn-client



Generujemy certyfikat PEM
Kod:
./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:
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:
cd /etc/openvpn/easy-rsa/keys/
cp ca.crt openvpn-server.crt openvpn-server.key dh2048.pem /etc/openvpn/


certyfikaty i klucze, które przenosimy do klienta to:
Kod:
/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 OpenVPN

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

/etc/openvpn/server.conf

Kod:
dev tun                               ##interfejs
local xxx.xxx.xxx.xxx             ##ip serwera
proto xxx                         ##używany protokół
port xxx                          ##używany port
server 10.20.30.0 255.255.255.0   ##klasa IP
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
max-clients 100                   ##maksymalna ilość klientów
persist-tun                       ##podtrzymuje interfejs TUN
persist-key                       ##zapamietuje klucz
keepalive 10 120                  ##utrzymuje polaczenie
cipher AES-256-CBC                ##algorytm szyfrowania
comp-lzo                          ##kompresja
verb 1                            ##poziom logowania
user nobody                       ##uzytkownik na potrzeby OpenVPN
group nogroup                     ##grupa na potrzeby OpenVPN
push "redirect-gateway def1"      ##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"    ##konfiguracja DNS dla DHCP

log openvpn.log                   ##logi
status openvpn-status.log

key-direction 0                   ##tu wklejamy klucz HMAC (ta.key)
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END OpenVPN Static key V1-----
</tls-auth>


Następnie konfigurujemy przekazywanie pakietów:
/etc/sysctl.conf
Kod:
net.ipv4.ip_forward=1


zatwierdzamy zmiany:
Kod:
sysctl -p


oraz routing:
Kod:
iptables -A POSTROUTING --table nat -s 10.20.30.0/24 -o venet0 -j MASQUERADE



Konfiguracja Klienta (linux)

instalujemy paczkę openvpn
dla debiana i pochodnych:
Kod:
apt-get 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/openvp/client.conf
Kod:
dev tun                       
client                         
remote xxx serwera           
proto xxx                     
port xxx                       
nobind                         
ca ca.crt                                
cert openvpn-client.crt   
key openvpn-client.key      
persist-tun                     
persist-key                     
keepalive 10 120               
cipher AES-256-CBC             
comp-lzo                       
verb 1                           
user nobody         
group nogroup         

log openvpn.log         
status openvpn-status.log

key-direction 1                                 ##tu wklejamy klucz HMAC (ta.key)
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END OpenVPN Static key V1-----
</tls-auth>


Klucz HMAC (ta.key) wklejamy ręcznie zarówno w konfigu serwera jak i klienta

odpalamy openvpn:
Kod:
/etc/init.d/openvpn start
lub
Kod:
systemctl start openvpn


sprawdzamy czy poprawnie zestawiliśmy tunel:
Kod:
ip a s dev tun0


w odpowiedzi powinniśmy otrzymać:

Kod:
7: tun0@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.20.30.6 peer 10.20.30.5/32 scope global tun0
  • Brak nieprzeczytanych postów
  • Nieprzeczytane posty
  • Wątek zablokowany
  • Wątek przeniesiony
widget instagram lenovo
widget twitter lenovo
widget facebook lenovo
widget youtube lenovo