VPN w firmie? W dobie koronawirusa, wzrosło zapotrzebowanie na udostępnienie zdalnie zasobów firmy pracownikom na home office. Dobrze skonfigurowany VPN stanowi praktyczne i bezpieczne rozwiązanie tego problemu, pozwala utworzyć wirtualny tunel od komputera pracownika do sieci firmy.
Istnieje kilka popularnych protokołów VPN, w tym poradniku zajmiemy się protokołem OpenVPN, który jest uznawany a jeden z najbezpieczniejszych (dzięki silnemu szyfrowaniu). Dodatkowo konfiguracja klienta nie jest trudna i wygląda identycznie na każdej platformie.
Urządzenie na którym konfigurowałem serwer OpenVPN był Mikrotik Routerboard na ustawieniach fabrycznych, jednakże poradnik dotyczy każdego urządzenia z wgranym systemem RouterOS właśnie od firmy Mikrotik. Poradnik przedstawiony jest w formie listy kroków.
1. Na początku należy uzyskać dostęp do urządzenia. Preferowaną metodą konfiguracji jest użycie programu WinBox. Program skanuje sieć w której się znajdujemy w poszukiwaniu urządzeń Mikrotika. Jeżeli żadne się nie wyświetli, możemy ręcznie wpisać IP (domyślnie 192.168.88.1). Domyślnie admin nie ma hasła.
Zanim rozpoczniemy dalsze działanie sprawdźmy czy zainstalowany jest pakiet ppp, w tym celu udajemy się do zakladki System → Packages. Jeżeli pakiet ppp będzie widoczny na szaro należy go zaznaczyć i nacisnąć Enable. Warto zaktualizować także software (Check For Updates). Następnie trzeba zresetować urządzenie.
2. Należy wygenerować certyfikaty, najszybciej będzie to zrobić za pomocą poleceń tekstowych (zakładki w GUI mają odpowiednio te nazwy co polecenia), do tego celu wykorzystujemy przegródkę New Terminal. Należy utworzyć certyfikat CA, Serwera i certyfikat klienta. Długość ważności ustawiam na 10 lat, a rozmiar klucza na 4096, można te parametry zmienić według własnych upodobań.
/certificate
add name=ca common-name=[zewnętrzne_IP_serwera] days-valid=3650 key-size=4096 key-usage=crl-sign,key-cert-sign
add name=server common-name=*.[zewnętrzne_IP_serwera] days-valid=3650 key-size=4096 key-usage=digital-signature,key-encipherment,tls-server
add name=client common-name=client.[zewnętrzne_IP_serwera] days-valid=3650 key-size=4096 key-usage=tls-client
3. Należy podpisać certyfikaty dokonujemy tego następującymi komendami:
sign ca name=CA-Certsign server name=Server-Cert ca=CA-Cert
sign client name=client-Cert ca=CA-Cert
Proces podpisywania może chwilę potrwać a jego czas zależy od mocy obliczeniowej urządzenia i wybranej długości klucza.
4. Należy wyeksportować certyfikat CA i certyfikat klienta wraz z kluczem dokonujemy tego komendami:
export-certificate CA-Cert export-passphrase=””
export-certificate client-Cert export-passphrase=”[hasło certyfikatu]”
Wyeksportowane certyfikaty i klucz znajdziemy w zakładce Files. (dwa pliki .crt i jeden .key)
Aby je pobrać zaznaczamy wszystkie trzy i po kliknięciu prawym przyciskiem myszy wybieramy Download.
5. Utworzymy pulę adresów dla serwera VPN. Po połączeniu klient otrzyma jeden z wolnych adresów z tej puli
W tym celu użyjemy komendy:
/ippool add name=”openvpnpool” ranges=10.10.10.2-10.10.10.40
6. Należy utworzyć profil, jako local address wybieramy adres za jakim widoczny będzie router po zestawieniu połączenia.(w moim przypadku będzie to pierwszy host w sieci 10.10.10.0/24, czyli 10.10.10.1)
/ppp profile add name=”openvpn-profile” use-encryption=yes local-address=10.10.10.1 remote-address=openvpnpool
Dodajemy użytkownika/użytkowników
secret add name=client profile=openvpn-profile password=[hasło]
7. Teraz należy aktywować serwer VPN, dokonujemy tego poniższą komendą
/interface ovpn-server server
set default-profile=openvpn-profile port=[wybrany port inny niż domyślny*] certificate=Server-Cert require-client-certificate=yes auth=sha1 cipher=aes128,aes192,aes256 enabled=yes
*Wybierając nietypowy port chronimy się przed botami skanującymi w poszukiwaniu podatności, najlepsze będą porty o wysokich numerach np. 45213.
8. Dostosowanie firewalla. W routerach ponad naszym serwerem należy przekierować wybrany wcześniej port (w wersji TCP, openvpn w Mikrotiku nie wspiera UDP). A na urządzeniu na którym stawiamy openvpna należy dodać odpowiednią regułkę. Wpisujemy port wybrany w kroku 7.
/ip firewall filter
add chain=input protocol=tcp dst-port=[wybrany port] action=accept place-before=0 comment=”Allow OpenVPN”
9. Konfiguracja klienta.
Zalecane aplikacje to:
- OpenVPN Connect / OpenVPN GUI (Windows)
- OpenVPN Connect / Tunnelblick (Mac)
- OpenVPN for Android (Android)
Dla każdego klienta należy utworzyć plik konfiguracyjny (dla każdej z powyższych aplikacji wygląda on tak samo). Oto szablon pliku config.ovpn:
client
dev tun
proto tcp
remote [zewnętrzne IP serwera] [wybrany port OpenVPN]
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA1
auth-user-pass
route-nopull
route 10.10.10.0 255.255.255.0
route 192.168.88.0 255.255.255.0
verb 5
—–BEGIN CERTIFICATE—–
#Certyfikat CA
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
#Certyfikat klienta
—–END CERTIFICATE—–
—–BEGIN RSA PRIVATE KEY—–
#Klucz klienta
—–END RSA PRIVATE KEY—–
Pliki z certyfikatami i kluczem prywatnym otwieramy w notatniku i wklejamy ich zawartość w odpowiednie miejsca pliku config.ovpn.
Czy potrzebuję split tunneling? Domyślnie po połączeniu komputera klienckiego z VPNem, cały ruch sieciowy wysyłany jest przez serwer. Nie jest to najlepsze rozwiązanie, gdyż może doprowadzić do przeciążenie sieci firmowej. Rozwiązaniem jest split tunneling dzięki któremu, cały ruch internetowy klienta (wp.pl, youtube.com) wychodzi przez jego własną kartę sieciową, a tylko zapytania o usługi z sieci firmowej kierowane są przez VPNa.
Split tunneling zaimplementowany jest w linijce route-nopull i odpowiednich linijkach z route. (Tylko zapytania skierowane do adresacji podanej za słowem route przechodzą przez VPN), jeśli wolimy by cały ruch przechodził przez serwer VPN możemy zastąpić te linijki linijką redirect-gateway def1.
Następnie w aplikacji OpenVPN Connect, dodajemy utworzoną przed chwilą konfigurację. W tym celu wciskamy plusa i importuj z pliku (File), przeciągamy plik .ovpn na ikonę chmury.
Aplikacja poprosi nas o podanie nazwy użytkownika w naszym przypadku będzie to client i hasło które utworzyliśmy wcześniej, tak samo zostaniemy zapytani o hasło do klucza prywatnego.
Należy pamiętać, żeby przed zestawieniem połączenia odłączyć się od sieci wewnętrznej routera i połączyć się np. z Hot-spotem.
Po zestawieniu połączenia możemy zweryfikować czy wszystko się udało. Uruchamiamy cmd w Windowsie i wpisujemy komendę ipconfig. Znajdujemy tam interfejs OpenVPNa. By upewnić się że wszystko działa możemy zpingować urządzenia znajdujące się w sieci komendą ping adres.
W IT Leader zauważyliśmy potrzebę takiego artykułu gdyż dobrze skonfigurowana sieć VPN na odpowiednim sprzęcie jest dzisiaj podstawą do dobrze działającej i bezpiecznej infrastruktury IT w firmach.
Autor: Adam Korba
Bardzo dobry wpis, podana metoda działa poprawnie.
Znalazłem 2 drobne błędy, które co prawda nie są merytoryczne, ale utrudniają życie jak się próbuje robić copy&;paste z artykułu:
#1
Jest:
sign ca name=CA-Certsign server name=Server-Cert ca=CA-Cert
Powinno być:
sign ca name=CA-Cert
sign server name=Server-Cert ca=CA-Cert
#2
Jest:
/ippool add name=”openvpnpool” ranges=10.10.10.2-10.10.10.40
Winno być:
/ip pool add name=”openvpnpool” ranges=10.10.10.2-10.10.10.40