Dziś zajmiemy się OpenVpn. Jest to aplikacja oparta na licencji OpenSourceOpenVpn.Zadanie było proste połączyć dwa oddziały firmy pracujące na programie Subiekt GT
Do dyspozycji miałem serwer klienta połączenie przez zdalny pulpit i telefon do oddziału firmy.
Zaczynamy od instalacji OpenVpn na serwerze.
Program instalacyjny zainstaluje nam virtualna kartę i oczywiście zgadzamy się na to podczas instalacji.
Trzeba pamiętać , że usługa serwera vpn na serwerze musi się podnosić samodzielnie i pobierać swoją konfigurację z pliku .Bez klikania na ikonkę która się pojawia po instalacji. Ustawiamy to w Panel Sterowania >Narzędzia Administracyjne > odszukujemy usługę OpenVpn i zmieniamy jej parametry.
Razem z programem dostajemy przykładowe pliki konfiguracyjne ( w katalogu Sample).Kopiujemy plik openvpn myconfig.ovpn do katalogu config i zmieniamy mu nazwę na np: serwer.ovpn.
Na początek można przetestować konfigurację prostą. Zaczynamy od wygenerowania certyfikatu i klucza dla serwera
Uruchamiamy comand line ,czyli Start>Uruchom> wpisujemy CMD
przechodzimy do katalogu Program FilesOpenVPNeasy-rsa
Dla ułatwienia sobie pracy edytujemy plik Vars.bat
I zmieniamy domyślne ustawienia Kraju , Miasta ,
set KEY_COUNTRY=PL
set KEY_PROVINCE=TWOJE_Woj.
set KEY_CITY=Twoje_Miasto
set KEY_ORG=Twoja_organizacja
set KEY_EMAIL=adres@do.ciebie
CERTYFIKAT
No to jak już to mamy to teraz zaczynamy generowanie
Uruchamiamy po kolei pliki
vars
clean-all
build-ca
Po builid -ca powinniśmy zobaczyć coś takiego
UWAGA PODAĆ UNIKATOWE COMMON NAME
ai:easy-rsa # ./build-ca
Generating a 1024 bit RSA private key
…………++++++
………..++++++
writing new private key to 'ca.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ’.’, the field will be left blank.
—–
Country Name (2 letter code) [PL]:
State or Province Name (full name) [Twoje_woj]:
Locality Name (eg, city) [Twoje_Miasto]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) []:OpenVPN-CA
Email Address [email@do.ciebie]:
Utworzy się katalog key i tam przekopiuje wszystkie stworzone klucze i certyfikaty.
KLUCZ SERWERA
Wydajemy polecenie zmieniając nazwę server na swoją dowolną np:serwerek Ale pamietamy ,że w opcji Common Name wpisujemy też serwerek
build-key-server server
.......................................................++++++
.........................++++++
writing new private key to 'keysserwerek.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [Twoje ]:
State or Province Name (full name) [Twoje]:
Locality Name (eg, city) [Twoje]:
Organization Name (eg, company) [Twoje]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:serwerek
…
No to teraz już z górki
Generujemy klucze dla userów
build-key nazwa1
build-key nazwa2
build-key nazwa3
Pamiętamy aby pole common name było unikalne !!!
Teraz generujemy klucz WYMAGANY Diffie Hellman
build-dh
No to powinniśmy mieć
Nazwa Needed By Purpose Secret
ca.crt server + all clients Root CA certificate NO
ca.key key signing machine only Root CA key YES
dh{n}.pem server only Diffie Hellman parameters NO
serwerek.crt server only Server Certificate NO
serwerek.key server only Server Key YES
client1.crt nazwa1 only nazwa1 Certificate NO
client1.key nazwa1 only nazwa1 Key YES
client2.crt nazwa2 only nazwa2 Certificate NO
client2.key nazwa22 only nazwa2 Key YES
client3.crt nazwa3 only nazwa3 Certificate NO
client3.key nazwa3 only nazwa3 Key YES
Kopiujemy wszystkie pliki w bezpieczne miejsce pliki serwera do katalogu config
Nie pozostawiać wszystkich plików wygenerowanych
Tworzymy pliki konfiguracyjne dla serwera i klientów
W katalogu Start Menu -> All Programs -> OpenVPN -> OpenVPN Sample Configuration Files
bierzemy plik
sample .serwer.ovpn
zmieniamy jego nazwę na serwer.ovpn
i edytujemy domyślna konfigurację
#################################################
# Sample OpenVPN 2.0 config file for #
# multi-client server. #
# #
# This file is for the server side #
# of a many-clients < -> one-server #
# OpenVPN configuration. #
# #
# OpenVPN also supports #
# single-machine < -> single-machine #
# configurations (See the Examples page #
# on the web site for more info). #
# #
# This config should work on Windows #
# or Linux/BSD systems. Remember on #
# Windows to quote pathnames and use #
# double backslashes, e.g.: #
# "C:Program FilesOpenVPNconfigfoo.key" #
# #
# Comments are preceded with '#' or ';' #
#################################################
# adres ip serwera
# listen on? (optional)
local 192.168.1.200
#Port na którym dziła usługa
# port 1194
#protokół usługi TCP lub UDP
proto udp
dev tun
ca ca.crt
cert SRV.crt
key SRV.key # This file should be kept secret
dh dh1024.pem
#przy opcji ruting wybieramy podsieć w jakiej ma sie odbywac routing
#tu do wersji testowej wybrałem losową podsieć na 32 hosty
# pamietać trzeba ,że w przypadku połacznia serwr vpv wydziela z ogólnej puli podsieci w masce 252 / 30
#czyli pierwsze połaczenie zabierze nam cztery ip z wydzielonej 1 będzie adresem sieci 2 następne użyteczne dla komputera łaczącego się i serwra oraz 4 jako brodcast
server 10.10.100.0 255.255.255.224
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
max-clients 10
persist-key
persist-tun
status openvpn-status.log
;log openvpn.log
;log-append openvpn.log
verb 3
;mute 20
To teraz dla klienta
##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
# #
# This configuration can be used by multiple #
# clients, however each client should have #
# its own cert and key files. #
# #
# On Windows, you might want to rename this #
# file so it has a .ovpn extension #
##############################################
# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client
# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
dev tun
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
proto udp
remote my-server-1 1194
# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
Wgrywamy pliki na stacje klienta z zainstalowanym oprogramowaniem openvpn do katalogu config
Uruchamiamy GUI vpn z pulpitu wybieramy CONECT i nazwę konfiguracji która powinna pojawić się jako domyślna
Po połączeniu możemy sprawdzić ping do serwera
i połączyć się do bazy danych naszego serwera czyli w naszym 10.10.100.1
Zalecane jest stworzenie plików konfiguracyjnych dla klienta przy użyciu hasła dostępu ,zdecydowanie zwiększa to bezpieczeństwo działania
wtedy klucz generujemy przy użyciu build-key-pkcs12.bat
W pliku user-a zmieniamy metodę autoryzacji pkcs12 user1.p12
Przy edycji pliku konfiguracyjnego zwróć uwagę na kodowanie pliku .W czasie edycji pliku pod Windows 7 zmieniłem kodowanie z domyślnego ASCII na UTF-8 ,Taki plik konfiguracyjny niestety nie zadziała. A zanim to rozgryzłem straciłem trochę czasu 🙂