2. Wygenerowanie certyfikatu CA
3. Wygenerowanie klucza dla serwera CA
4. Wygenerowanie klucza dla klienta który będzie się łączyć do serwera OpenVPN z własnym certyfikatem
5. Wygenerowanie pliku szyfrującego w oparciu o protokół Diffiego-Hellmana
6. Konfiguracja interfejsu vtun1 na urządzeniu Ubiquiti EdgeRouter
7. Konfiguracja protokołu SSH z poziomu Linuxa Ubiquiti EdgeRouter oraz ściągniecie plików dla klienta w celu zdalnego połączenia.
8. Test połączenia
9. Firewall
1. Wstęp
Logujemy się do naszego routera poprzez klienta SSH.
Wchodzimy w tryb powłoki systemu.
sudo su
Kopiujemy pliki OpenVPN’a do /config/auth/ca, oraz tworzymy folder „keys”
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /config/auth/ca
cd /config/auth/ca/
mkdir keys
source vars
(Konsola zwróci nam taki komunikat):
NOTE: If you run ./clean-all, I will be doing a rm -rf on /config/auth/ca/keys
Używamy zatem komendy
./clean-all
2. Wygenerowanie certyfikatu CA
./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) [US]:PL
State or Province Name (full name) [CA]:Kujawsko-Pomorskie
Locality Name (eg, city) [SanFrancisco]:Bydgoszcz
Organization Name (eg, company) [Fort-Funston]:KlimasStudio
Organizational Unit Name (eg, section) [changeme]:Octopus
Common Name (eg, your name or your server's hostname) [changeme]:ERL05-Bydgoszcz-Gajowa-PL
Name [changeme]:Octopus
Email Address [mail@host.domain]:host@name.com.pl
3. Wygenerowanie klucza dla serwera CA
./build-key-server ERL05-Bydgoszcz-Gajowa-PL-Server
Generating a 1024 bit RSA private key
........++++++
...........++++++
writing new private key to 'ERL05-Bydgoszcz-Gajowa-PL-Server.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) [US]:PL
State or Province Name (full name) [CA]:Kujawsko-Pomorskie
Locality Name (eg, city) [SanFrancisco]:Bydgoszcz
Organization Name (eg, company) [Fort-Funston]:KlimasStudio
Organizational Unit Name (eg, section) [changeme]:Octopus
Common Name (eg, your name or your server's hostname) [ERL05-Bydgoszcz-Gajowa-PL-Server]:
Name [changeme]:Octopus
Email Address [mail@host.domain]:host@name.com.pl
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:**********
An optional company name []:KlimasStudio
Using configuration from /config/auth/ca/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'PL'
stateOrProvinceName :PRINTABLE:'Kujawsko-Pomorskie'
localityName :PRINTABLE:'Bydgoszcz'
organizationName :PRINTABLE:'KlimasStudio'
organizationalUnitName:PRINTABLE:'Octopus'
commonName :PRINTABLE:'ERL05-Bydgoszcz-Gajowa-PL-Server'
name :PRINTABLE:'Octopus'
emailAddress :IA5STRING:'host@name.com.pl'
Certificate is to be certified until Dec 1 21:21:02 2024 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
4. Wygenerowanie klucza dla klienta który będzie się łączyć do serwera OpenVPN z własnym certyfikatem
source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /config/auth/ca/keys
./build-key ERL05-Bydgoszcz-Gajowa-PL-Client
Generating a 1024 bit RSA private key
..................++++++
..............++++++
writing new private key to 'ERL05-Bydgoszcz-Gajowa-PL-Client.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) [US]:PL
State or Province Name (full name) [CA]:Kujawsko-Pomorskie
Locality Name (eg, city) [SanFrancisco]:Bydgoszcz
Organization Name (eg, company) [Fort-Funston]:KlimasStudio
Organizational Unit Name (eg, section) [changeme]:Octopus
Common Name (eg, your name or your server's hostname) [ERL05-Bydgoszcz-Gajowa-PL-Client]:
Name [changeme]:Octopus
Email Address [mail@host.domain]:hostl@name.com.pl
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:**********
An optional company name []:KlimasStudio
Using configuration from /config/auth/ca/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'PL'
stateOrProvinceName :PRINTABLE:'Kujawsko-Pomorskie'
localityName :PRINTABLE:'Bydgoszcz'
organizationName :PRINTABLE:'KlimasStudio'
organizationalUnitName:PRINTABLE:'Octopus'
commonName :PRINTABLE:'ERL05-Bydgoszcz-Gajowa-PL-Client'
name :PRINTABLE:'Octopus'
emailAddress :IA5STRING:'host@name.com.pl'
Certificate is to be certified until Dec 1 21:25:18 2024 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
5. Wygenerowanie pliku szyfrujacego w opaciu o protokół Diffiego-Hellmana
Ten proces może potrwać kilka minut 5-10.
./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.......................+............................................................................................................................................................................................................+....+......................................+............................................................................................................................................+.................................................................+.........................................................................................................................................................................+..................................................................................................+.............+........................................+.................................+..................................................................................................................................................................................................................................................................................................................+.......+..........................................+..............................+.....................................+...................................+...........................................................++*++*++*
6. Konfiguracja interfejsu vtun1 na urzadzeniu Ubiquiti EdgeRouterKopiujemy wygenerowane klucze z folderu /config/auth/ca/keys do /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access.
cd /config/auth
mkdir openvpn
cd openvpn
mkdir ERL05-Bydgoszcz-Gajowa-PL-Remote-Access
cp /config/auth/ca/keys/* /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access
Wychodzimy z trybu powłoki.
exit
Wchodzimy do konfiguracji. Ustawiamy opis tunelu, port. Ustawiamy tryb server i dodajemy wpisy o serwerze nazw, interfejsach które mają być dostępne w tunelu oraz podsieć w jakiej mają znajdować się urządzenia podłączane tunelem.
configure
set interfaces openvpn vtun1 description "ERL05-Bydgoszcz-Gajowa-PL"
set interfaces openvpn vtun1 local-port 1195
set interfaces openvpn vtun1 mode server
set interfaces openvpn vtun1 server name-server 10.10.1.12
set interfaces openvpn vtun1 server push-route 10.10.1.0/24
set interfaces openvpn vtun1 server push-route 10.10.2.0/24
set interfaces openvpn vtun1 server push-route 10.254.5.0/30
set interfaces openvpn vtun1 server subnet 192.168.5.0/24
Podajemy ścieżki do certyfikatów oraz kluczy.
set interfaces openvpn vtun1 tls ca-cert-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ca.crt
set interfaces openvpn vtun1 tls cert-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ERL05-Bydgoszcz-Gajowa-PL-Server.crt
set interfaces openvpn vtun1 tls dh-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/dh1024.pem
set interfaces openvpn vtun1 tls key-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ERL05-Bydgoszcz-Gajowa-PL-Server.key
Bardzo ważne jeżeli chcemy aby z certyfikatu korzystało więcej niż jeden klient należy dodać opcje do vpn, definiując argument openvpn-option –duplicate-cn. Dzięki temu wpisowi nie musimy tworzyć nowych certyfikatów dla klientów.
set interfaces openvpn vtun1 openvpn-option –duplicate-cn
Sprawdzamy jeszcze czy wszystko się zgadza wywołujemy polecenie show interfaces openvpn.
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL# show interfaces openvpn
openvpn vtun1 {
description ERL05-Bydgoszcz-Gajowa-PL
local-port 1195
mode server
server {
max-connections 5
name-server 10.10.1.12
push-route 10.10.1.0/24
push-route 10.10.2.0/24
push-route 10.254.5.0/30
subnet 192.168.5.0/24
}
tls {
ca-cert-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ca.crt
cert-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ERL05-Bydgoszcz-Gajowa-PL-Server.crt
dh-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/dh1024.pem
key-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ERL05-Bydgoszcz-Gajowa-PL-Server.key
}
}
Zatwierdzamy konfigurację i zapisujemy.
commit
save
7. Konfiguracja protokolu SSH z poziomu linuxa Ubiquiti EdgeRouter oraz sciagniecie plikow dla klienta w celu zdalnego polaczenia.
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL# show interfaces openvpn
openvpn vtun1 {
description ERL05-Bydgoszcz-Gajowa-PL
local-port 1195
mode server
server {
max-connections 5
name-server 10.10.1.12
push-route 10.10.1.0/24
push-route 10.10.2.0/24
push-route 10.254.5.0/30
subnet 192.168.5.0/24
}
tls {
ca-cert-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ca.crt
cert-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ERL05-Bydgoszcz-Gajowa-PL-Server.crt
dh-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/dh1024.pem
key-file /config/auth/openvpn/ERL05-Bydgoszcz-Gajowa-PL-Remote-Access/ERL05-Bydgoszcz-Gajowa-PL-Server.key
}
}
Zatwierdzamy konfigurację i zapisujemy.
commit
save
7. Konfiguracja protokolu SSH z poziomu linuxa Ubiquiti EdgeRouter oraz sciagniecie plikow dla klienta w celu zdalnego polaczenia.
W moim przypadku udało mi się skopiować klucze beż odblokowywania konta "root". Można pominąć ten krok i odrazu się logować za pomocą swojego konta administratora. Wrazie problemów postępować jak niżej.
root@ERL05-Bydgoszcz-Gajowa-PL:# cd /etc/ssh/
nano sshd_config
Jeżeli nie posiadamy "nano" instalujemy komendą "apt-get install nano".
Szukamy wartosci PermitRootLogin i zmieniamy parametr no na yes.
Zapisujemy, oraz na koniec restartujemy serwis ssh na ERL`u
service ssh restart
[ ok ] Restarting OpenBSD Secure Shell server: sshd.
Sciagamy WinSCP oraz instalujemy. Przed logowaniem do ERL`a za posrednictwem konta root, trzeba ustawić hasło dla konta "root".
[ ok ] Restarting OpenBSD Secure Shell server: sshd.
Sciagamy WinSCP oraz instalujemy. Przed logowaniem do ERL`a za posrednictwem konta root, trzeba ustawić hasło dla konta "root".
passwd root
Teraz tylko pobieramy certyfikaty i pliki potrzebne do zainicjowania połączenia ze strony klienta OpenVPN.
Pliki które nam są potrzebne znajdują się w wcześniej utworzonym folderze
Pliki które nam są potrzebne znajdują się w wcześniej utworzonym folderze
Pliku certyfikatu oraz klucza.
Kopiujemy je np. do folderu na Pulpicie. Do pełni szczęścia brakuje nam plik profilu połączenia OpenVPN. Tworzymy plik .ovpn z danymi poniżej:
dev tun1
proto udp
remote klimas.ddns.net 1195
nobind
ca ca.crt
cert ERL05-Bydgoszcz-Gajowa-PL-Client.crt
key ERL05-Bydgoszcz-Gajowa-PL-Client.key
verb 3
W sekcji remote podajemy adres IP naszego routera lub jak w moim przypadku domena DDNS.
Należy pamiętać aby w sshd_config PermitRootLogin spowrotem ustawić na no i zrestartować serwis sshd service ssh restart.
8.Test połączenia
Pokaż interfejs OpenVPN:
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL:~$ show interfaces openvpn
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
vtun1 192.168.5.1/24 u/u ERL05-Bydgoszcz-Gajowa-PL
Ping adresu serwera OpenVPN:
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL:~$ ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_req=1 ttl=64 time=0.368 ms
64 bytes from 192.168.5.1: icmp_req=2 ttl=64 time=0.259 ms
64 bytes from 192.168.5.1: icmp_req=3 ttl=64 time=0.315 ms
3 packets transmitted, 3 received, 0% packet loss, time 2007ms
rtt min/avg/max/mdev = 0.259/0.314/0.368/0.044 ms
Pokaż podłączonych klientów:
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL:~$ show openvpn status server
OpenVPN server status on vtun1 [ERL05-Bydgoszcz-Gajowa-PL]
Client CN Remote IP Tunnel IP TX byte RX byte Connected Since
--------------- --------------- --------------- ------- ------- ------------------------
ERL05-Bydgoszcz-Gajowa-PL-Client 46.77.124.35 192.168.5.2 20.5K 12.0K Fri Dec 5 18:42:54 2014
Internetowy adres IP urządzenia oraz adres w tunelu OpenVPN.
9.Firewall
Aby wszystko działało musimy dodać wyjątek w firewallu oraz interfejs naszego tunelu. Mój router jest skonfigurowany w oparciu o "zone based" czyli strefy.
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL# show zone-policy zone ZONE:WAN
default-action drop
description ZONE:WAN
from ZONE:LAN {
firewall {
name ZONE:LAN_to_ZONE:WAN
}
}
interface eth0
interface tun5
interface vti5
interface vtun1
Wystarczy zatem użyć poniższej komendy:
pawel.klimko@ERL05-Bydgoszcz-Gajowa-PL# set zone-policy zone ZONE:WAN interface vtun1
commit
save
exit
Podziękowania dla Patryka - www.virtualolivia.com
Artykuł powstał na podstawie opisu kolegi który mnie zaraził sieciami VPN oraz wspólnie tworzymy jedną wielką prywatną sieć. Mój artykuł został opisany dla osób które zaczynają przygodę z tak zaawansowanym w konfiguracji sprzętem.
Podziękowania dla Patryka - www.virtualolivia.com
Brak komentarzy:
Prześlij komentarz