Aby podnieść poziom zabezpieczenia klienta VPN do FortiGate można skonfigurować w taki sposób aby nie korzystał tylko z loginu i hasła ale także z certyfikatu.
W pierwszej kolejności musimy pobrać oprogramowanie OpenSSL ze strony https://www.openssl.org/ lub kompilację pod system Windows ze stron https://www.firedaemon.com/download-firedaemon-openssl.
W przypadku systemu Windows instalujemy oprogramowanie
zalecam zmianę domyślnego folderu instalacji programowania
Podczas generowania certyfikatów wykorzystałem informację z dokumentacji FortiGate znajdujacej się pod adresem generacja certyfikatów
Na potrzeby konfiguracji połączenia potrzebujemy następujące certyfikaty:
– certyfikat CA
– certyfikat serwera (podpisany przez powyższe CA)
– certyfikat klienta (podpisany przez powyższe CA)
Uruchamiamy wiersz poleceń i przechodzimy do folderu w którym zainstalowaliśmy OpenSSL. Aby wygenerować certyfikat CA wydajemy polecenia:
openssl genrsa -aes256 -out c:\cert\ca-key.pem 4096
openssl req -x509 -new -nodes -extensions v3_ca -key c:\cert\ca-key.pem -days 3650 -out c:\cert\ca-root.pem -sha512
Po parametrze „days” podajemy na jaki okres generujemy certyfikat (długość ważności certyfikatu). W trakcie tworzenia certyfikatu ustalamy hasła do tego certyfikatu.
Utworzenie pliku serial.srl
echo 00 >c:\cert\serial.srl
Wygenerowanie certyfikatu dla serwera
openssl genrsa -out c:\cert\server.key 4096
openssl req -key c:\cert\server.key -new -out c:\cert\server.req
openssl x509 -req -in c:\cert\server.req -CA c:\cert\ca-root.pem -CAkey c:\cert\ca-key.pem -CAserial c:\cert\serial.srl -out c:\cert\server.pem -days 2190
W polu „Common Name (e.g. server FQDN or YOUR name)” podajemy przyjazną nazwę – będzie potrzebna później.
Wygenerowanie certyfikatu dla klienta:
openssl genrsa -out c:\cert\user.key 4096
openssl req -key c:\cert\user.key -new -out c:\cert\user.req
openssl x509 -req -in c:\cert\user.req -CA c:\cert\ca-root.pem -CAkey c:\cert\ca-key.pem -CAserial c:\cert\serial.srl -out c:\cert\user.pem -days 2190
Połączenie certyfikatu klienta i klucza w plik PFX
openssl pkcs12 -export -out c:\cert\user.pfx -inkey c:\cert\user.key -in c:\cert\user.pem
W polu W dalszej części potrzebne będą nam trzy pliki: ca-root.pem, server.pem, oraz user.pfx
Logujemy się do FortiGate i przechodzimy do System->Feature Visibility i sprawdzamy czy jest zaznaczona opcja Certificates
Następnie przechodzimy do menu System -> Certificates i wybieramy Import -> CA Certificate
i importujemy wygenerowany wcześniej certyfikat CA ( plik ca-root.pem)
Następnie uruchamiamy CLI Console i wydajemy polecenia:
config user peer
edit pki01
set ca CA_Cert_1
set subject "CN=User01"
next
end
Powyższe polecenia utworzą nam użytkownika pki01 w menu Users -> PKI
Zaznaczamy utworzonego użytkownika wchodzimy w edycję i włączamy opcję „Two-factor authentication”. Dzieki temu przy zestawianiu połączenia VPN klient oprócz certyfikatu będzie musiał także podać hasło.
Następnie importujemy do FortiGate wygenerowany certyfikat dla serwera
w nowym oknie wybieramy Import Certificate i w kolejnym Certificate i importujemy wygenerowane pliki pem oraz key dla serwera
Przechodzimy do menu VPN -> SSL-VPN Settings i ustawiamy opcje:
SSL-VPN status: enable
Listen on Interface(S): WAN
Listen on Port: 7443 (podajemy port na którym będzie działał VPN)
Server Certificate: wybieramy zaimportowany certyfikat dla serwera
Require Client Certificate: enable
W sekcji Authentication/Portal Mapping wybiermay +Create New następnie w polu User/Groups klikamy + i oknie po prawej wybieramy +Create aby utworzyć grupę której zezwolimy na logowanie poprzez VPN
Nadajemy grupie nazwę, Typ ustawiamy na Firewall i sekcji Members dodajmy wcześniej utworzonego użytkownika PKI
w opcji Portal wybieramy tunnel-access
Zatwierdzamy zmiany
W opcji All Other User/Groups ustawiamy także tunnel-access
Przechodzimy do menu Policy& Objects -> Firewall Policy i tworzymy nowa politykę:
Name: SSL_VPN
Incoming Interface: SSL-VPN tunnel Iinterface (ssl.root)
Outgoing Interface: lan
Source: Adress/SSLVPN_TUNELL_ADDR1 oraz USER/VPN_GROUP (utworzona wcześniej grupa użytkowników VPN)
Destination: LAN (lub wybrany obiekt np. serwer)
Schedule: możemy ustawić w jakich porach dnia połączenie będzie dostępne lub wybrać always aby było dostępne zawsze
Service: wybieramy jakie serwisy lub protokołu mają być dostępne poprzez VPN
NAT: disable
Log Allowed Traffice: enable – All Session
Połączenie po stronie FortGate jest przygotowane. Pozostaje skonfigurowanie klienta na komputerze z którego będziemy się łączyć. Przechodzimy na stronę Fortinet i pobieramy oprogramowanie „FortiClient VPN”
Instalujemy klienta na komputerze. Przed konfiguracją klienta VPN importujemy certyfikat klienta do lokalnego magazynu certyfikatów. W tym celu uruchamiamy menedżera certyfikatów (certmgr.msc), rozwijamy sekcję osobisty i na kluczu certyfikaty klikamy prawym przyciskiem myszy i z menu wybieramy wszystkie zadania -> importuj i importujemy certyfikat klienta.
Uruchamiamy klienta VPN i konfigurujemy połączenie
Podczas połączenia może pojawić się komunikat odnośnie certyfikatu – akceptujemy go