Własny serwer VPN (OpenVPN)

Dostawca internetu zbiera informacje o tym co robisz w internecie ? (Operatorzy GSM)

Chcesz mieć dostęp do sieci domowej w sposób bezpieczny ?

Virtual Private Network, czyli VPN to rozwiązanie dla Ciebie !

1.Instalacja

apt-get install openvpn easy-rsa

2.Konfiguracja serwera openvpn

touch /etc/openvpn/server.conf

#edytuj /etc/openvpn/server.conf 
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

3.Zmiany w systemie

echo 1 > /proc/sys/net/ipv4/ip_foward

#edytuj /etc/sysctl.conf
net.ipv4.ip_forward=1

4.Instalacja i konfiguracja nakładki ułatwiającej zarządzanie iptables (firewall)

apt-get install ufw

ufw allow 1194/udp

#edytuj /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

#edytuj /etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter

ufw enable
ufw status | grep '1194/udp'


5.Generowanie CA, certyfikatu i klucza serwera

cp -r /usr/share/easy-rsa/ /etc/openvpn 
mkdir /etc/openvpn/easy-rsa/keys 

#edytuj /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="KRAJ"
export KEY_PROVINCE="WOJEWODZTWO"
export KEY_CITY="Miasto"
export KEY_ORG="Nazwa organizacji/firmy"
export KEY_EMAIL="email@"
export KEY_OU="Nazwa jednostki"
# X509 Subject Field (nazwa klucza)
export KEY_NAME="server"

openssl dhparam -out /etc/openvpn/dh2048.pem 2048 

cd /etc/openvpn/easy-rsa 
. ./vars
./clean-all
./build-ca 

Mamy już przygotowane środowisko do generowania i podpisywania certyfikatów dzięki certyfikatowi CA (Certificate Authority).

Teraz czas na pozostałe certyfikaty

cd /etc/openvpn/easy-rsa
./build-key-server server 
# hasło i 'company name' pozostawmy puste 
Sign the certificate?
Y

Wygenerowaliśmy certyfikat i klucz dla serwera, przenieśmy je:

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

 

I sprawdźmy czy serwer się uruchamia:

service openvpn start
service openvpn status

 

6.Generowanie certyfikatu i klucza dla klienta:

cd /etc/openvpn/easy-rsa
./build-key klient1 
# hasło i 'company name' pozostawiamy puste
Sign the certificate? Y

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/klient.ovpn 
#edytujemy /etc/openvpn/easy-rsa/keys/klient.ovpn 
client
dev tun
proto udp
remote ip_serwera 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3

Uwaga: ustawienie user/group jest niekompatybilne z Window

Bardziej spostrzegawczy zauważą, że w pliku konfiguracyjnym brakuje konfiguracji certyfikatów/klucza 🙂

 

7a. Generowanie zunifikowanego pliku profilu openvpn

‚Zunifikowany’ plik zawiera wszelkie informacje wymagane do uruchomienia usługi w sobie samym, bez dodatkowych plików certyfikatów, kluczy.

echo '<ca>' >> /etc/openvpn/easy-rsa/keys/klient.ovpn
cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/klient.ovpn
echo '</ca>' >> /etc/openvpn/easy-rsa/keys/klient.ovpn 

echo '<cert>' >> /etc/openvpn/easy-rsa/keys/klient.ovpn
cat /etc/openvpn/easy-rsa/keys/klient.crt >> /etc/openvpn/easy-rsa/keys/klient.ovpn
echo '</cert>' >> /etc/openvpn/easy-rsa/keys/klient.ovpn 

echo '<key>' >> /etc/openvpn/easy-rsa/keys/klient.ovpn
cat /etc/openvpn/easy-rsa/keys/klient.key >> /etc/openvpn/easy-rsa/keys/klient.ovpn
echo '</key>' >> /etc/openvpn/easy-rsa/keys/klient.ovpn

7b. Być może nie odpowiada wam plik profilu z kluczem i certyfikatem wbudowanym w niego:

Wtedy dodajemy:

ca ca.crt
cert klient.crt
key klient.key

I pamiętamy by dostarczyć powyższe pliki wraz z profilem .ovpn

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*