Klient VPN do FortiGate

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