Pozn.: Popis v článku vychází z FortiGate FG-300E s FortiOS verzí 6.2.3. Který je nakonfigurovaný jako FGCP cluster a využívá VDOM.
Obsah
Tento článek je dost rozsáhlý, proto se níže nachází seznam kapitol. Alespoň ty hlavní mají přímý odkaz.
- Remote Access SSL (Secure Sockets Layer) VPN (Virtual Private Network)
- SSL VPN a protokoly
- Konfigurace SSL VPN na FortiGate
- Základní kroky a komponenty
- Jak probíhá autentizace a připojení do VPN
- Plánování a příklad SSL VPN
- Autentizace uživatelů (Uživatelé a skupiny)
- Zablokování přihlášení při chybné autentizaci
- Přidělované adresní rozsahy
- SSL VPN Realms - různé přihlašovací adresy (URL)
- Použití (přiřazení) Realm
- Úprava zpráv a výchozí přihlašovací obrazovky
- SSL-VPN Portals - portály
- Nastavení portálu pomocí GUI
- Nastavení portálu pomocí CLI
- SSL-VPN Settings - globální nastavení SSL VPN
- Nastavení SSL VPN pomocí GUI
- Nastavení SSL VPN pomocí CLI
- Firewall Policy - politiky pro komunikaci VPN klientů
- Parametry IPv4 politiky
- Routing - směrování
- Odstraňování problémů a monitoring klientů
- Debug SSL VPN
- VPN události
- Dohled na klientovi
- Monitoring přihlášených uživatelů
- FortiClient - klient pro připojení do VPN
- Nastavení FortiClient
- Odemknutí nastavení
- Záloha konfigurace
- Obnova konfigurace
- Záloha a obnova v příkazové řádce
- Úprava nastavení a XML konfigurační soubor
- Nastavení DNS serverů pouze na SSL VPN adaptér
- Odinstalace FortiClient
Úvodní zhodnocení a srovnání s Cisco ASA
VPN jsem dříve řešil na Cisco ASA. Na FortiGate jsem se snažil nalézt stejné vlastnosti, jako mělo toto 10 let staré zařízení. Nejprve to vypadalo velmi bledě. Pročetl jsem dokumentaci, která je (jak stále uvádím) velmi špatná a roztříštěná (určitě nestačí, že si člověk otevře oficiální dokumentaci ke své verzi FortiOS). Prohledával jsem internet a fóra s klíčovými slovy, co chci nastavit. Vesměs marně. Nakonec se mi vlastně vše podařilo.
Způsob konfigurace (stavební části) FortiGate VPN se nedá srovnávat s Cisco VPN. Přesto hodně zjednodušeně. Na Cisco můžeme využít Connection Profile pro různé způsoby připojení jednoho uživatele. Na FortiGate využijeme Realm. Na Cisco používáme Group Policy pro politiky připojení skupiny uživatelů. FortiGate má Portal. Cisco využívá AnyConnect Client Profile pro nastavení klienta. FortiGate toto nějak řeší v Portal. Cisco má zajímavou vlastnost Dynamic Access Policy. Na FortiGate asi nic podobného není. Obecně se stejné vlastnosti nastavují na jiných místech (v jiných objektech). A také párování (propojení) objektů se provádí úplně jinak.
Díky Realm se mi podařilo vytvořit různé profily, které si uživatel vybírá při připojení (podle URL). Tím se dá třeba rozlišil připojení z firemního a nefiremního zařízení. Ukázalo se, že pro připojení je možno vyžadovat i počítačový certifikát (to lze nakonec lépe definovat než u Cisco). Jen musíme speciálně upravit konfiguraci FortiClienta. Dají se detekovat různé parametry na klientovi (Host Check), jako jsou registry, soubor, OS, AntiVir. Ovšem musíme mít správné OS (což je v podstatě jen Windows) a správnou verzi FortiClienta. Tohle má Cisco ASA o generace napřed. Mohu jednoduše kontrolovat ohromné množství parametrů a zjistím třeba, že jde o zařízení s Androidem (to umělo Cisco před mnoha lety a FortiGate to neumí ani dnes).
Co je hodně špatné na FortiGate je monitoring připojených uživatelů (navázaných SSL VPN Session). Cisco ukazuje mnoho detailů o všech použitých protokolech (TLS/DTLS), šifrovacích algoritmech, detailech o klientovi, použitém profilu (politice), přenosu paketů, apod.
A další velmi špatná věc je klient pro připojení do SSL VPN. Instalace Cisco AnyConnect Secure Mobility Client 3.1.14018 pro Windows má 5 MB (složka v Program Files má 10 MB). Není dokonalá, ale vesměs funguje spolehlivě a hlavně rychle. Instalace FortiClient 6.0.9.0277 pro Windows má 95 MB. Obsahuje v sobě další komponenty, ale když instaluji pouze VPN klienta, tak má složka v Program Files 290 MB. To samé je FortiClient VPN 6.2.6, kde by měla být pouze funkce VPN. Ale hlavní je, že klient funguje špatně a pomalu. Při připojení se často na desítky vteřin zastaví (většinou na 98%) a někdy se zasekne úplně. Většině lidí pomůže jej úplně ukončit a znovu spustit. Kolegové hlásí, že verze pro Linux je úplně nefunkční (musí používat alternativu OpenFortiVPN).
Remote Access SSL (Secure Sockets Layer) VPN (Virtual Private Network)
Dokumentace SSL VPN 6.2.3, SSL VPN 6.0.0, VPNs 6.0.0
Virtual Private Network (VPN) znamená privátní počítačová síť, která dovolí bezpečně připojit vzdálené uživatele nebo pobočky do LAN (lokální privátní sítě) organizace přes veřejné telekomunikační služby, převážně přes internet. Vše se řeší pomocí vytvoření šifrovaného tunelu mezi dvěma body (nebo jedním a několika). VPN řeší důvěrnost, autentizaci, neporušenost komunikace apod.
VPN je velice široký termín a zahrnuje řadu protokolů a technologií. Hlavní typy VPN jsou dva:
- Site-to-Site VPN - spojujeme dvě (nebo více) sítě dohromady, většinou centrálu a pobočky, používají se speciální síťová zařízení (VPN koncentrátor, firewall, router, server), která slouží jako VPN gateway a naváží mezi sebou VPN spojení (příchozí komunikaci rozbalí a do sítě posílají standardně, odchozí zapouzdří do VPN tunelu), uživatelské stanice pak nepotřebují VPN klienta, často používané protokoly/typy jsou IPsec VPN a MPLS VPN
- Remote Access VPN - připojujeme individuální klienty do lokální sítě, klienti musí mít speciální SW - VPN klienta, na straně privátní sítě je opět speciální síťové zařízení, často používané protokoly/typy jsou SSL VPN a IPsec VPN
SSL VPN a protokoly
Zde se budeme věnovat připojení klientů, tedy Remote Access VPN. FortiGate podporuje IPsec VPN i novější a populárnější SSL VPN, která může být dvou typů/módů:
- Tunnel Mode - standardní VPN připojení, kdy se využívá klient (aplikace) FortiClient pro navázání šifrovaného tunelu do interní sítě
- Web Mode - připojíme se pomocí webového prohlížeče a dostaneme se na určité zdroje uvnitř privátní sítě (to může být i třeba vzdálená plocha) skrze webové stránky, Cisco toto řešení označuje jako Clientless SSL VPN
Mluvíme o SSL VPN, ale dnes se používá pouze protokol TLS (Transport Layer Security). Aktuálně je na FortiGate defaultně povolený TLS 1.2 a TLS 1.3. SSL VPN má výhodu, že používá rozšířený protokol HTTPS, který dobře prochází skrze Firewally, nemá problémy s NATem a má mnohem jednodušší konfiguraci než IPsec.
FortiGate také podporuje protokol Datagram Transport Layer Security (DTLS), který běží nad UDP (User Datagram Protocol). Oproti TLS, které běží nad TCP (Transmission Control Protocol), poskytuje vyšší výkon. DTLS je defaultně povolené. Když se připojujeme z FortiClienta, tak můžeme v nastavení zatrhnout Preferred DTLS Tunnel (nejprve je třeba odemknout nastavení zámkem v levém dolním nebo pravém horním rohu).
Praxe ukázala, že řada lidí má při zapnutí DTLS problém s připojením, které se jim zastavuje na 98 procentech. Více informací v FortiGate problémy s připojením do SSL VPN přes FortiClient.
Konfigurace SSL VPN na FortiGate
Základní kroky a komponenty
Jaké objekty a nastavení musíme vytvořit, abychom nakonfigurovali SSL VPN.
- Users and Groups (uživatelé a skupiny) - kdo se bude přihlašovat do VPN, lokální nebo vzdálení uživatelé (LDAP, RADIUS, apod.), rozdělíme uživatele do skupin, podle toho, kteří mají mít společné parametry VPN připojení
- Addresses (rozsahy adres) - jaké adresy se budou přidělovat uživatelům ve VPN (předpřipraveno je 10.212.134.200-10.212.134.210), můžeme využít jeden adresní Pool, ale vhodnější může být pro každou skupinu uživatelů jiný rozsah adres
- VPN Realm (oblast) - volitelně můžeme vytvořit více oblastí (URL adres) přes které se přihlásíme do VPN, díky Realm můžeme stejnému uživateli nastavit jiné parametry podle přihlašovací adresy
- VPN Portal (portál) - profily pro uživatelské skupiny, základem je povolení módů Tunnel VPN či Web VPN, přiřazení IP adres, parametry pro VPN
- VPN Settings (nastavení) - globální nastavení pro VPN, interface, kde FortiGate poslouchá pro připojení klientů, certifikát, IP rozsahy, mapování uživatelů (skupin) na portály
- Firewall Policy (politika) - politiky, které povolují provoz z rozhraní SSL-VPN Tunnel Interface pro určité IP adresy a uživatele VPN
Pozn.: Důležité je, že dokud není vytvořena politika pro danou skupinu uživatelů, tak se její uživatelé do VPN ani nepřihlásí.
Jak probíhá autentizace a připojení do VPN
Oficiální dokumentace na tuto otázku vůbec neodpovídá. Já jsem si zapnul debug LDAP autentizace a SSL VPN a vyzkoušel různé situace (uživatelé se ověřovali na LDAP serveru) a z toho dal dohromady následující průběh:
- uživatel zadá svoje přihlašovací údaje pro připojení do VPN (buď na webu nebo ve FortiClient)
- provede se autentizace uživatele vůči LDAPu, pokud selže (nepřipojí se k serveru, špatné jméno nebo heslo), tak vrací
[sslvpn_login_unknown_user]
- obecně se zkouší autentizaci vůči různým mechanizmům (pokud jsou definovány) v daném pořadí POP3, RADIUS, TACACS+, LDAP, lokální uživatelé
- pokud máme definováno více serverů (třeba LDAP), tak se hledá na všech
- první autentizace, která projde úspěšně, se použije a podle ní se bere zařazení do skupiny (která skupina měla definovaného uživatele z tohoto zdroje)
- na LDAPu se hledá, jestli je uživatel členem některé definované skupiny (viz. dále), pokud není členem, tak vrací
[sslvpn_login_unknown_user]
, jinak vrátí jméno skupiny, pokud je členem více (VPN) skupin, tak vrací pouze první nalezenou - ke skupině se hledá přiřazený Portal, pokud se nenalezne, tak se použije default (All Other Users/Groups)
- podle parametrů Portalu dojde k navázání tunelu/zobrazení webu
Důležité je, jaké skupiny se prohledávají. Nejsou to všechny skupiny na LDAP serveru, ani ty které máme definované na FortiGate jako Remote Groups z tohoto LDAPu. I když to je úvodní podmínka, aby skupina na FortiGate existovala. Ale prohledávají se pouze skupiny, které jsou použity v nějaké politice (Policy), která má (pravděpodobně) jako zdrojový interface SSL-VPN Tunnel Interface. Z toho plyne, že můžeme mít VPN připojení kompletně nastavené, ale pokud neexistuje nějaká politika pro daného uživatele, tak se nepřipojí ani do webové VPN.
Pokud autentizace z nějakého důvodu selže a vrátí [sslvpn_login_unknown_user]
, tak se uživateli zobrazí obecná chyba. Nijak neindikuje, jestli bylo zadáno špatné heslo, uživatele neexistuje, nemá povoleno připojení do VPN nebo je chyba na straně serveru. Ve webu se zobrazí jednoduše
Error: Permission denied.
FortiClient vrátí
Unable to establish the VPN connection. The VPN server may be unreachable.
Plánování a příklad SSL VPN
Na začátku plánování VPN je dobré si rozmyslet, jaké různé varianty připojení chceme vytvořit. Například podle různých povolených komunikací do interní sítě. Zda pro někoho chceme povolit Split Tunel a jinde ne. Zda některým uživatelům zpřístupníme pouze Web VPN s určitými definovanými odkazy. Podle toho si pojmenujeme jednotlivé VPN, připravíme skupiny uživatelů, které budou mít danou VPN povolenu, připravíme adresní rozsahy a politiky pro provoz.
Uvedeme si rámcově body konfigurace SSL VPN připojení pro praktický případ. Uživatele máme uložené v Active Directory doméně a ověřovat je budeme přes LDAP. V příkladu budeme řešit pouze jednu skupinu uživatelů konzultanty. Ti mají z libovolného zařízení povolen omezený přístup do interní sítě pouze na webové servery HTTPS. Ověřují se pomocí jména a hesla (můžeme přidat i OTP). Z firemních zařízení je povolen neomezený přístup do interní sítě. K ověření jména a hesla se přidává ověření počítačového certifikátu.
VPN připojení konzultantů z nefiremních zařízení
- Realm - NonCompany - vytvoříme objekt s adresou Virtual Host
vpn.firma.cz
- User Groups - G VPN Consultant - v AD DS vytvoříme skupinu a zařadíme do ní uživatele, na FortiGate vytvoříme stejně pojmenovanou skupinu (Remote Group) a napojíme ji na tuto LDAP skupinu
- Addresses - VPNconsultantPool - vytvoříme objekt Address typu IP Range, jako Interface zvolíme
SSL-VPN tunnel interface
a zadáme rozsah adres (dle našeho adresního plánu)172.31.254.10-172.31.254.100
- SSL-VPN Portals - VPN-Consultant - vytvoříme portál, povolíme Tunnel Mode a zakážeme Web Mode, přiřadíme pool IP adres VPNconsultantPool, můžeme zapnout Split Tunnel a vybrat interní adresy
- IPv4 Policy - VPN Consultant to Local from NonCompany - vytvoříme politiku, kde povolíme službu HTTPS z SSL-VPN tunnel interface do LAN, jako zdroj zadáme skupinu G VPN Consultant a adresní rozsah VPNconsultantPool, jako cíl LANnet
VPN připojení konzultantů z firemních zařízení
- Realm - Company - vytvoříme objekt s adresou Virtual Host
vpn2.firma.cz
- User Groups - G VPN Consultant - využijeme již existující skupinu
- Addresses - VPNconsultantPoolCompany - vytvoříme objekt Address typu IP Range, jako Interface zvolíme
SSL-VPN tunnel interface
a zadáme rozsah adres (dle našeho adresního plánu)172.31.254.101-172.31.254.199
- SSL-VPN Portals - VPN-Consultant-Company - vytvoříme portál, povolíme Tunnel Mode a zakážeme Web Mode, přiřadíme pool IP adres VPNconsultantPoolCompany, můžeme zapnout Split Tunnel a vybrat interní adresy,
- IPv4 Policy - VPN Consultant to Local from Company - vytvoříme politiku, kde povolíme všechny služby
ALL
z SSL-VPN tunnel interface do LAN, jako zdroj zadáme skupinu G VPN Consultant a adresní rozsah VPNconsultantPoolCompany, jako cíl LANnet
Nastavíme globální parametry VPN
- určíme interface a port, kde bude FortiGate přijímat SSL VPN připojení klientů
- nastavíme serverový certifikát
- Tunnel Mode Client Settings - zvolíme Specify custom IP ranges a vybereme rozsahy VPNconsultantPool, VPNconsultantPoolCompany
- DNS Server - zvolíme Specify a zadáme firemní DNS servery
- Authentication/Portal Mapping - vytvoříme dvě pravidla
- G VPN Consultant - /noncompany - VPN-Consultant
- G VPN Consultant - /company - VPN-Consultant-Company - zapneme vyžadování klientského certifikátu a přiřadíme Peer User s nastavenými parametry certifikátu
Autentizace uživatelů (Uživatelé a skupiny)
- (VDOM) > User & Device > User Definitions
- (VDOM) > User & Device > User Groups
Jak FortiGate pracuje s uživateli a skupinami, a jak se uživatelé ověřují, jsme si popsali v minulém článku FortiGate uživatelé, skupiny a autentizace vůči LDAP (AD DS). Pro větší zabezpečení přístupu můžeme využít FortiGate autentizace certifikátem do SSL VPN nebo FortiGate dvoufaktorová autentizace s použitím OTP.
Pro přihlášení do VPN můžeme použít lokální uživatele i uživatele ze vzdálených serverů (LDAP, RADIUS, TACACS+). Standardně se uživatelé ověřují zadáním jména a hesla. Speciální případ jsou Peer (PKI) user (mohou být zařazeni do Firewall nebo Peer Group), kteří používají klientský digitální certifikát. Vyžadování certifikátu můžeme zapnout i pro uživatele ze vzdálených serverů.
Můžeme využít i dvoufaktorovou autentizaci. Pokud chceme použít OTP (SMS, email, FortiToken) pro uživatele z LDAP serveru, tak nestačí vytvořit na FortiGate skupinu, kde bude členem skupina z LDAP serveru. Musíme vytvořit lokálně jednotlivé LDAP uživatele a u nich nastavit detaily pro OTP.
Zablokování přihlášení při chybné autentizaci
Pokud přihlášení do VPN opakovaně selže (špatné jméno, heslo, či se jinak nepovede ověřit), tak se na určitou dobu zablokuje přístup na přihlášení. Výchozí nastavení jsou 2 pokusy a zablokování na 60 vteřin. Poté se uživateli zobrazí chyba. A nejde ani znovu vyvolat přihlašovací dialog na webu, dokud neuběhne čas (neblokuje se uživatel, ale IP adresa).
Too many bad login attempts. Please try again in a few minutes.
Konfigurace se provádí pouze v CLI v konfiguraci SSL VPN.
config vpn ssl settings set login-attempt-limit 2 set login-block-time 60 end
Přidělované adresní rozsahy
- (VDOM) > Policy & Objects > Addresses
Existuje předefinovaný objekt SSLVPN_TUNNEL_ADDR1
, který obsahuje rozsah adres (IP Range) 10.212.134.200-10.212.134.210
. Ten můžeme upravit nebo si vytvořit i více vlastních objektů. Měli bychom volit privátní adresy ze subnetu, který nepoužíváme ve firemní síti. A snažit se nalézt takové, které se nepoužívají ani v domácích sítích.
Můžeme vybrat třeba subnet 172.31.254.0/24
a v něm vytvořit několik adresních rozsahů (IP Pool) jako 172.31.254.10-172.31.254.100
a 172.31.254.101-172.31.254.150
. Ty definujeme jako objekt adresa, nejčastěji typu IP Range, jako interface můžeme zvolit SSL-VPN Tunnel Interface
. A později je přiřadíme skupině uživatelů pomocí nastavení portálu (Portal).
SSL VPN Realms - různé přihlašovací adresy (URL)
- (VDOM) > VPN > SSL-VPN Realms
K této oblasti jsem nenalezl skoro žádnou dokumentaci. Fortinet uvádí článek SSL VPN multi-realm, který je extra špatný i na jejich poměry. Další je již starý Configuring SSL VPN web portals.
Pozn.: Musíme mít povolenu vlastnost System > Feature Visibility - SSL-VPN Realms.
VPN Realm nám dovolí vytvořit různé URL adresy, buď se stejným doménovým jménem (Hostname) rozlišené podle cesty (Path), nebo různá doménová jména. Na adrese (Realm) můžeme vytvořit vlastní webovou přihlašovací stránku (výchozí přihlašovací stránku můžeme upravit ve (VDOM) > System > Replacement Messages).
Realm pak použijeme v mapování uživatelů na portál a vznikají kombinace uživatel - portál - Realm. Můžeme tak pro skupinu uživatelů přiřadit jiný portál podle toho přes jaké URL se přihlásí. Díky tomu jim můžeme přiřadit jinou IP adresu. A podle zdrojové IP adresy definujeme povolené komunikace ve FW politice.
Pomocí GUI můžeme vytvořit Realm, který je identifikovaný svým URL Path. Zjednodušený tvar URL je protocol://hostname:port/path
. Pokud přistupujeme na SSL VPN (ať ve webu nebo FortiClientem) přes adresu https://vpn.firma.cz
, tak pro přístup na definovaný Realm přidáme zadanou cestu, třeba https://vpn.firma.cz/company
. Dále můžeme nastavit omezení, kolik uživatelů se současně může připojit. A můžeme upravit přihlašovací obrazovku.
Pozn.: GUI nám zobrazí informaci, přes jakou adresu přistoupit na SSL-VPN Realm, ale asi bude ve většině případů chybná, protože použije management adresu FortiGate (jak jsme aktuálně připojeni do konfigurace). A ani když dále definujeme Virtual Host, tak se nezobrazí správná adresa. V nastavení SSL VPN se alespoň zobrazuje IP adresa interface, kde běží VPN.
Pomocí CLI můžeme nastavit další důležitý údaj, který se po nastavení v CLI zobrazí i v GUI. Je nazvaný Virtual Host a jde o jiné hostname, které určí adresu pro tento Realm. Například tedy vpn2.firma.cz
. Dokumentace CLI vpn ssl web realm.
config vpn ssl web realm edit "company" set virtual-host vpn2.firma.cz next
Použití (přiřazení) Realm
- (VDOM) > VPN > SSL-VPN Settings
V Authentication/Portal Mapping pak můžeme přiřadit vytvořený Realm k mapování uživatele/skupiny na portál. Běžně se použije defaultní, tedy kořen. Uživatelé se pak mohou přihlásit pouze když přistoupí přes přiřazenou adresu, na ostatní přihlašovacích stránkách přihlášení neprojde.
Úprava zpráv a výchozí přihlašovací obrazovky
- (VDOM) > System > Replacement Messages
Defaultní přihlašovací obrazovku Web VPN a některé (chybové) zprávy můžeme editovat. Vpravo nahoře se přepneme na Extended View a jde o sekci SSL-VPN.
SSL-VPN Portals - portály
- (VDOM) > VPN > SSL-VPN Portals
Portál je vstupní branou do SSL VPN, ať jde o tunel nebo webovou VPN. Portály jsou profily, které přiřazujeme uživatelům nebo skupinám a tím jim povolíme připojení do některého módu VPN. Určujeme hlavní parametry chování daného VPN připojení, jako jsou přidělované IP adresy, možnosti FortiClienta nebo obsah Web VPN. Můžeme provést určité kontroly klienta (Host Check) a pokud neprojdou, tak nepovolit připojení.
Defaultně jsou připraveny tři SSL-VPN Portals, které můžeme, ale nemusíme použít.
- web-access - povolen web přístup
- tunnel-access - povolen přístup přes klienta
- full-access - povoleno oboje
V globálním nastavení SSL VPN musíme zvolit některý portál jako defaultní (All Other Users/Groups). Aby se uživatelé mohli přihlásit do VPN, a tedy došlo k volbě portálu, tak musí být součástí nějaké FW politiky. Přesto může být bezpečnější vytvořit portál bez přístupu a ten nastavit jako výchozí.
- no-access - vše zablokováno
Nastavení portálu pomocí GUI
Dokumentace Portal configuration
- (VDOM) >VPN > SSL-VPN Portals
Hlavní volby v portálu je povolení/zakázání připojení přes Tunnel Mode a Web Mode. Pokud není povolený Tunnel Mode, tak se uživatel nepřihlásí FortiClientem. Pokud není povolený Web Mode, tak se uživatel přesto přihlásí na web. Stejně tak, pokud vytvoříme no-access tunel, kde je vše vypnuté (Tunnel Mode i Web Mode). Uživatel dostane zavádějící informaci:
The SSL-VPN portal has been enabled for tunnel mode use only. FortiClient is required to connect.
V praxi může být vhodné vytvořit vlastní Portal profily pro jednotlivé skupiny uživatelů. Minimálně tam, kde se vyžadují různé možnosti VPN.
GUI dovoluje nastavit pouze určité vlastnosti portálu.
- Name - pojmenování portálu
- Limit Users to One SSL-VPN Connection at a Time - pokud již existuje jedno připojení pro uživatele, tak nelze navázat další
- Tunnel Mode - povolení připojení do SSL VPN tunel (FortiClient)
- Enable Split Tunneling - standardně jde všechen provoz do VPN tunelu, při zapnutí se posílají pouze určité adresy a ostatní odchází lokálně do internetu
- Routing Address - které adresy se směrují do tunelu (pokud nejsou zadány, tak by se měly vzít adresy z definovaných politik)
- Source IP Pools - rozsah přidělovaných adres pro VPN klienty
- Tunnel Mode Client Options - nastavení, která ovlivní volby FortiClient
- Allow client to save password - uživatel může uložit heslo
- Allow client to connect automatically - když se aplikace spustí (třeba při startu), tak se pokusí automaticky připojit
- Allow client to keep connections alive - pokud povolíme, tak se klient snaží o nové připojení, když dojde k výpadku, ale musí se uložit heslo
- DNS Split Tunneling - různé DNS pro různé domény, Split DNS support for SSL VPN portals
- Host Check - kontrola, že na klientovi běží antivir nebo firewall nebo oboje
- Restrict to Specific OS Versions - možnost omezit přístup z některých verzí OS (nabízí určité verze Windows a MacOS)
- Enable Web Mode - povolí přístup na webový portál (i když nepovolíme, tak je možno se přihlásit na web, ale neobsahuje dané funkce)
- Portal Message - nadpis a název portálu
- Theme - barevný vzhled
- Show Session Information - widget navrchu stránky, který obsahuje info době připojení, přenesených datech, uživatelovo jméno
- Show Connection Launcher - možnost vytvářet spojení na vnitřní zdroje, bez nutnosti, aby byly předdefinovány (Predefined Bookmarks), nabízí tlačítko Quick Connection
- Show Login History - seznam historie připojení uživatele
- User Bookmarks - možnost vytvořit vlastní záložku, nabízí tlačítko New Bookmark
- Pre-Defined Bookmarks - můžeme připravit různé záložky na interní zdroje
- Enable FortiClient Download - na portále je odkaz na stažení FortiClient, můžeme vybrat OS (Windows, Mac, iOS, Android), ale u mobilních platforem jde pouze o odkaz do ochodu a jinak se stehuje online installer, který dále stahuje data od Fortinetu
- Download Method - stažení přes přímý link nebo skrze SSL VPN
- Customize Download Location - můžeme zadat URL, kde je klient pro Windows a Mac
Ve webovém portálu se můžeme připojit na různé protokoly, které jsou zprostředkovány ve webovém prohlížeči. Podporované protokoly pro odkazy jsou HTTP/HTTPS, FTP, RDP, SFTP, SMB/CIFS, SSH, TELNET, VNC. Pomocí CLI můžeme nastavit ještě několik dalších parametrů. Například zakázat některé protokoly pro odkazy.
Dokumentace CLI příkazů uvádí také možnost definovat odkaz typu Port Forward. Ale tyto příkazy se mi nedaří použít a jediná zmínka o této funkci je ke staré verzi Port forwarding mode.
Nastavení portálu pomocí CLI
Dokumentace CLI vpn ssl web portal
Níže jsou zmíněny pouze určitá nastavení portálu pomocí CLI. Primárně jde o možnosti, které se nedají nastavit v GUI.
Přidělování adres klientovi
Mimo přidělení z nastaveného rozsahu (range
) můžeme nastavit použití adresy přiřazené uživateli z externího serveru (user-group
).
config vpn ssl web portal edit <name> set ip-mode range next end
Adresa DNS a WINS serveru
Můžeme zadat DNS a WINS servery, které dostane klient pro daný portál.
config vpn ssl web portal edit <name> set dns-server1 0.0.0.0 set dns-server2 0.0.0.0 set dns-suffix '' set wins-server1 0.0.0.0 set wins-server2 0.0.0.0 next end
Restrikce komunikace klienta
Zablokování komunikace VPN uživatele na jeho lokální subnet. Pokud je vypnutý Split Tunnel (set split-tunneling disable
), tak máme k dispozici dva příkazy. První Technical Tip: Enabling SSL VPN Full Tunnel, k druhému jsem nenašel žádné informace.
config vpn ssl web portal edit <name> set exclusive-routing disable set service-restriction disable next end
Nastavení Web Mode
Řada nastavení v CLI se týká Web Mode, který musí být zapnutý (set web-mode enable
).
config vpn ssl web portal edit <name>
Můžeme určit, které aplikace jsou přístupné ve Web VPN pro připojení
set allow-user-access web ftp smb sftp telnet ssh vnc rdp ping citrix portforward
Možnost skrýt widget pro záložky
set display-bookmark enable
Umožňuje uživatelům vytvářet záložky pro všechny uživatele ve stejné skupině
set user-group-bookmark enable
Po přihlášení do Web VPN otevře zadanou interní adresu skrze VPN (otevírá jako nové okno)
set redir-url ''
Možnost nastavit jazyk pro portál, která mění globální nastavení jazyk ve FortiGate
set custom-lang ''
Povoluje použíti NTLMv1 pro SMB/CIFS
set smb-ntlmv1-auth disable
Minimální a maximální povolená verze SMB
set smb-min-version smbv2 set smb-max-version smbv3
Transformace zpětných lomítek v URL
set transform-backward-slashes disable
Zabrání odeslání SSO pověření na klienta
set hide-sso-credential enable next end
Kontrola klientů
Pak máme ještě příkazy pro kontrolu klientů, na ty se podíváme v dalším díle.
config vpn ssl web portal edit <name> set host-check none set mac-addr-check disable set os-check disable next end
SSL-VPN Settings - globální nastavení SSL VPN
- (VDOM) > VPN > SSL-VPN Settings
Některá nastavení SSL VPN se nastavují globálně a nemůžeme je upravovat pro různé uživatele. Je to například interface a port, kde FortiGate poslouchá VPN připojení klientů. Co mi přijde špatné, že nemůžeme určit IP adresu, na které poslouchá. Globálně určujeme, jaké rozsahy se použijí pro přidělení adres klientům v Tunnel VPN. Provádíme mapování uživatelů (skupin) na portály.
Nastavení SSL VPN pomocí GUI
- Connection Settings - základní parametry připojení
- Listen on Interface(s) - určíme rozhraní, na kterém bude SSL VPN poslouchat, nemůžeme určit IP adresu (což mi přijde jako zásadní chyba), ale použije se primární IP adresa na interfacu a pokud jsou použity, tak i všechny sekundární
- Listen on Port - na jakém portu VPN poslouchá (HTTPS), můžeme dostat varování, že je port v konfliktu s portem pro administraci (nastavení Global > System > Settings), ale pokud používáme jiný interface, tak to není problém (opět jde o zavádějící informaci)
- Redirect HTTP to SSL-VPN - pokud uživatel přistoupí na HTTP, tak bude přesměrován
- Restrict Access - povolení přístupu z jakýchkoliv adres či pouze vybraných
- Idle Logout - při neaktivitě odhlásí VPN session
- Inactive For - doba neaktivity
- Server Certificate - certifikát pro HTTPS
- Require Client Certificate - autentizace klientským certifikátem
- Tunnel Mode Client Settings - nastavení (adres) pro SSL VPN tunel (FortiClient)
- Address Range - z jakého rozsahu se přidělují IP adresy, Specify custom IP ranges - můžeme vytvořit objekty adresa a ty zde použít, pokud necháme Automatically assign address, tak se použije předefinovaný objekt
SSLVPN_TUNNEL_ADDR1
, který můžeme upravit - DNS Server - jestli má klient dostat interní DNS servery, FortiClient tyto adresy nastavuje nejen na SSL VPN adaptér, což dělá problémy, popis změny nastavení je na konci článku v konfiguraci FortiClienta
- Specify WINS Servers - jestli má klient dostat interní WINS servery
- Address Range - z jakého rozsahu se přidělují IP adresy, Specify custom IP ranges - můžeme vytvořit objekty adresa a ty zde použít, pokud necháme Automatically assign address, tak se použije předefinovaný objekt
- Authentication/Portal Mapping - přiřazení uživatelů nebo skupin na existující portály, které určují specifické vlastnosti VPN připojení, musíme nastavit defaultní portál (All Other Users/Groups)
Nastavení SSL VPN pomocí CLI
Dokumentace CLI vpn ssl settings
Každé nastavení v GUI aplikuje určitý příkaz do konfigurace. Takže v příkazové řádce nastavíme vše, co máme v GUI, ale nachází se tam i řada dalších nastavení. Níže se podíváme na některé možnosti CLI, které v GUI nejsou.
Jenom taková poznámka, v každé části konfigurace můžeme použít příkaz show
, který nám zobrazí aktuální nastavení. Můžeme jej ještě doplnit a zobrazí se všechna nastavení, včetně těch, které mají výchozí hodnotu.
FW1 (setting) # show full-configuration
Povolené protokoly
Můžeme omezit povolené TLS a případně DTLS protokoly.
config vpn ssl settings set ssl-max-proto-ver tls1-3 set ssl-min-proto-ver tls1-2 set dtls-tunnel enable set dtls-max-proto-ver dtls1-2 set dtls-min-proto-ver dtls1-0 end
Povolené šifrovací algoritmy
Můžeme vynutit nějakou úroveň bezpečnosti povolením pouze určité kategorie algoritmů (high
by mělo být minimálně 128 bit AES nebo ChaCha). Můžeme také vyjmenovat některé šifry, které se nesmí použít (defaultně není nastaveno). Configuring encryption key algorithms
config vpn ssl settings set algorithm high unset banned-cipher end
Časové limity připojení
Odhlášení při neaktivitě (idle-timeout) můžeme nastavit i v GUI. Ale dobu platnosti autentizace (auth-timeout), která způsobí ukončení (odhlášení) SSL VPN po uplynutí zadané doby, nastavíme pouze v CLI. Výchozí hodnota je 28800 sekund, tedy 8 hodin.
config vpn ssl settings set idle-timeout 300 set auth-timeout 28800 end
HTTP Strict Transport Security (HSTS) includeSubDomains
Standardně posílá HSTS hlavičku Strict-Transport-Security: max-age=31536000
. Můžeme použít příkaz:
config vpn ssl settings set hsts-include-subdomains enable end
Poté se posílá kompletní hlavička:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Authentication/Portal Mapping - autentizační pravidla
V GUI můžeme provést jednoduché přiřazení uživatelů/skupin na portál (a případně Realm). CLI nám nabízí více možností. Autentizační pravidla (mapování) jsou číslována a můžeme je upravit (vytvořit).
config authentication-rule edit 1
V globálním nastavení určujeme, na jakém interface a z jakých adres VPN poslouchá. Můžeme zadat více rozhraní a pak na pravidlech přiřadit určité rozhraní pro dané mapování (Technical Note: SSL VPN source-interface setting in authentication rule taking precedence).
set source-interface "Port1" set source-address "all"
V globálním nastavení můžeme zapnout vyžadování autentizace klientským certifikátem (buď libovolný důvěryhodný certifikát nebo dohromady s User Peer specifický certifikát), pak se uplatní pro všechna připojení. Pokud chceme použít certifikát pouze pro určité uživatele (portál), tak můžeme definovat zde.
set client-cert disable set user-peer {string}
Síla použitých šifer. Nevím, nakolik to souvisí s globálním nastavením set algorithm
. Můžeme volit High
(>= 168 bits), Medium
(>= 128 bits) nebo Any
.
set cipher high
Omezení autentizačních metod. Můžeme volit, odkud musí být ověření uživatele, any, local, radius, tacacs+, ldap.
set auth any next
Firewall Policy - politiky pro komunikaci VPN klientů
- (VDOM) > Policy & Objects > IPv4 Policy
Poté, co nastavíme SSL VPN připojení, tak musíme definovat povolené komunikace pro uživatele připojené do VPN. Obecně, aby se vůbec mohl uživatel přihlásit do VPN, tak musí být součástí nějaké politiky (která má jako zdrojový interface SSL-VPN Tunnel Interface).
Pro komunikaci VPN klientů do interní sítě vytváříme politiky, kde je jako vstupní interface SSL-VPN Tunnel Interface
. Různá pravidla pro různé uživatele, a jejich VPN připojení, můžeme nastavit díky tomu, že jako zdroj zadáváme uživatelské skupiny a adresní rozsahy. Ovšem IP adresy z definovaných rozsahů se přidělují pouze klientům v Tunnel módu, pokud pro nějakou skupinu vytváříme pouze Web VPN, tak se dle dokumentace má zvolit adresa all
.
Pozn.: To mi dává smysl, klienti přistupují ze svých veřejných adres a FortiGate dělá proxy. Když se podíváme do logu provozu, tak to odpovídá. Klienti, kteří mají navázaný VPN tunel, tak u nich je zdrojová adresa z VPN rozsahu (to je komunikace, která se zapouzdří do tunelu a na straně FortiGate opět rozbalí). Ale co mi již nedává smysl. Uvědomil jsem si, že tam kde jsem povolil Tunel i Web, tak jsem v politice nastavil pouze IP adresy VPN uživatelů, a přesto přístup přes Web VPN fungoval. Udělal jsem různé testy a pro Web VPN vůbec nezáleží, jaká adresa se zadá jako zdroje, může tam být dokonce none
.
Parametry IPv4 politiky
- název (Name) - rozumné pojmenování politiky
- vstupní interface (Incoming Interface) - musíme volit rozhraní VPN tunelu, to má alias
SSL-VPN Tunnel Interface
- odchozí interface (Outgoing Interface) - volíme podle sítě, kam chceme povolit komunikaci
- zdroj (Source) - zadáváme uživatelské skupiny (použité v pravidlech VPN) a adresní rozsahy (objekty adresa, z kterých jsme klientům přiřadili IP adresu)
- cíl (Destination) - adresy sítí (objekty adresa), kam chceme povolit komunikaci
- služby (Service) - jaké protokoly/porty chceme povolit, můžeme použít
ALL
- akce (Action) - volíme Accept
- Inspection Mode, Security Profiles - podle toho, jak využíváme bezpečnostní kontroly, nastavíme požadované hodnoty
- NAT - opět dle požadavků a topologie můžeme a nemusíme využít překlad zdrojové IP adresy
- logování (Log Allowed Traffic) - vhodné je
All Sessions
- Enable this policy - samozřejmě musíme politiku povolit
Díky tomu, že jsme různé uživatelské skupiny přiřadili k určitému portálu, kde byl nastaven určitý adresní rozsah. Tak jednoduše vytvoříme různá pravidla pro různé uživatele. Pokud využijeme i Realm, tak můžeme stejné skupině uživatelů přiřadit různý portál (a tedy IP adresu), podle toho, přes jaké URL (Realm) se přihlásí. Můžeme tak vytvořit firemní profil (Realm), kde dochází ke kontrolám stanice (Host Check) nebo se autentizuje certifikátem. Pokud přihlášení projde, tak politika povolí více komunikací. A druhý profil, kde se uživatel může přihlásit odkudkoliv, ale připojení je omezené.
Běžně povolíme komunikaci VPN klientů do interní sítě. Můžeme ale přidat také obrácené politiky, které povolí určitou komunikaci z interní sítě na VPN klienty. Standardně není možná komunikace VPN klientů mezi sebou, a určitě to je bezpečné. Pokud je třeba, tak můžeme povolit i to Technical Tip: How to perform routing between SSLVPN Clients.
Routing - směrování
V polovině návodů na Fortinetu pro nastavení SSL VPN se uvádí, že je třeba vytvořit statickou route pro adresy klientů ve VPN. Routing in tunnel mode. V druhé polovině návodů nic takového není. Když žádné směrování ručně nenastavím, tak mi stejně veškerá komunikace funguje.
Našel jsem nějaké zmínky, že je to proto, aby fungovaly odpovědi třeba UDP protokolu. Nebo diskusi, kde se někdo ptal právě na důvod tohoto manuálního směrování. Někdo psal, že je to proto aby fungovala komunikace z interní sítě na klienty VPN. Ale ve chvíli, kdy takovou komunikaci povolím politikou, tak funguje a routa není potřeba.
Ještě je otázka, co přesně dělá následující příkaz, který je defaultně zapnutý.
config vpn ssl settings set auto-tunnel-static-route enabled end
Odstraňování problémů a monitoring klientů
Debug SSL VPN
Dokumentace SSL VPN troubleshooting
Při řešení problémů můžeme pomocí CLI zapnout debug režim pro SSL VPN.
diagnose debug application sslvpn -1 diagnose debug enable
Může se hodit zapnout zobrazení času u jednotlivých záznamů.
diagnos debug console timestamp enable
Nebo také zapnout debugování autentizace.
diagnose debug application fnbamd -1
Nyní se nám do CLI vypisují všechny související události (i když to všechny je v uvozovkách, stejně jako informační hodnota zpráv). Příklad pouze vybraných událostí při přihlášení uživatele do Web VPN:
[9314:root:188]allocSSLConn:289 sconn 0x7fe3ca091500 (1:root) [9314:root:188]SSL state:before SSL initialization (78.28.251.155) [9314:root:188]got SNI server name: vpn.firma.cz realm (null) [9314:root:188]client cert requirement: no [9314:root:188]SSL state:SSLv3/TLS read client hello (78.28.251.155) [9314:root:188]SSL state:TLSv1.3 early data (78.28.251.155) [9314:root:188]got SNI server name: vpn.firma.cz realm (null) [9314:root:188]client cert requirement: no [9314:root:188]SSL state:SSL negotiation finished successfully (78.28.251.155) [9314:root:188]SSL established: TLSv1.3 TLS_AES_256_GCM_SHA384 [9314:root:188]req: /remote/logincheck [9314:root:188]rmt_web_auth_info_parser_common:470 no session id in auth info [9314:root:188]rmt_web_access_check:723 access failed, uri=[/remote/logincheck],ret=4103, [9314:root:188]User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0 [9314:root:188]sslvpn_auth_check_usrgroup:2039 forming user/group list from policy. [9314:root:188]sslvpn_auth_check_usrgroup:2145 got user (0) group (3:0). [9314:root:188]sslvpn_validate_user_group_list:1642 validating with SSL VPN authentication rules (2), realm (). [9314:root:188]sslvpn_validate_user_group_list:1690 checking rule 1 cipher. [9314:root:188]sslvpn_validate_user_group_list:1698 checking rule 1 realm. [9314:root:188]sslvpn_validate_user_group_list:1709 checking rule 1 source intf. [9314:root:188]sslvpn_validate_user_group_list:1748 checking rule 1 vd source intf. [9314:root:188]sslvpn_validate_user_group_list:1845 rule 1 done, got user (0:0) group (1:0) peer group (0). [9314:root:188]sslvpn_validate_user_group_list:1963 got user (0:0), group (3:0) peer group (0). [9314:root:188]two factor check for bouska: off [9314:root:188]sslvpn_authenticate_user:191 authenticate user: [bouska] [9314:root:188]sslvpn_authenticate_user:198 create fam state [9314:root:188]fam_auth_send_req:583 with server blacklist: [9314:root:188]fam_auth_send_req_internal:461 fnbam_auth return: 4 [9314:root:188]Auth successful for group G VPN [9314:root:188]fam_do_cb:654 fnbamd return auth success. [9314:root:188]SSL VPN login matched rule (1). [9314:root:188]rmt_web_session_create:781 create web session, idx[1] [9314:root:188]req: /remote/hostcheck_install?auth_type=16&u [9314:root:188]deconstruct_session_id:426 decode session id ok, user=[bouska],group=[G VPN],authserver=[DC],portal=[VPN1],host=[78.28.251.155],realm=[],idx=1,auth=16,sid=7631bb58,login=1584609359,access=1584609359,saml_logout_url=no [9314:root:188]req: /sslvpn/portal.html [9314:root:188]mza: 0x26f18b0 /sslvpn/portal.html
Pro vypnutí debug režimu můžeme použít
diagnose debug disable diagnose debug reset
VPN události
- (VDOM) > Log &Report > Events
Na FortiGate se můžeme podívat na určité událost (Events) ohledně SSL VPN, jen musíme správně přepnout typ události.
Dohled na klientovi
Ve FortiClientovi můžeme zapnout Debug logování a exportovat logy. Pro náročnější kontrolu, co klient dělá, můžeme využít Sysinternals Process Monitor. Pro kontrolu šifer a dalších HTTPS vlastností můžeme využít Qualys SSL Labs.
Monitoring přihlášených uživatelů
- (VDOM) > Monitor > SSL-VPN Monitor
- (VDOM) > Monitor > Firewall User Monitor
Rovnou uvedu, že informace o navázaných SSL VPN Session a uživatelích přihlášených do VPN, je další velmi nedostatečná oblast. Dozvíme se pouze základní údaje o uživateli, z jaké veřejné IP adresy je připojen a jakou dostal interní adresu. Tunel můžeme ukončit. Pod monitorem Firewall uživatelů uvidíme několik dalších údajů, jako skupinu a přenesená data.
Nepřišel jsem na to, jak zjistit údaje o použitých protokolech (zda jde o TLS/DTLS), šifrovacích algoritmech, detaily o klientovi, aplikovaný portál a Realm, doba nečinnosti apod. Když řešíme omezení připojení klientů podle MAC adresy, tak bychom také chtěli vidět tento údaj.
Pomocí CLI se dostaneme k podobným údajům jako v GUI
FW1 (FWINT) # execute vpn sslvpn list SSL VPN Login Users: Index User Auth Type Timeout From HTTP in/out HTTPS in/out 0 bouska 16(1) 3598 1.2.3.4 0/0 0/0 SSL VPN sessions: Index User Source IP Duration I/O Bytes Tunnel/Dest IP 0 bouska 1.2.3.4 163 1167583/1216084 172.31.254.10
Pokud chceme získat údaje o historii připojování uživatelů do VPN, tak potřebujeme FortiAnalyzer. Přitom ty údaje FortiGate musí znát, protože ve Web VPN nám může zobrazovat naši historii přihlášení.
Pomocí CLI si můžeme zobrazit souhrnné statistiky.
FW1 (FWINT) # diagnose vpn ssl statistics SSLVPN statistics (FWINT): ------------------ Memory unit: 1 System total memory: 8368185344 System free memory: 5880107008 SSLVPN memory margin: 629145600 SSLVPN state: normal Max number of users: 9 Max number of tunnels: 6 Max number of connections: 13 Current number of users: 6 Current number of tunnels: 5 Current number of connections: 6
FortiClient - klient pro připojení do VPN
Jako VPN klient se používá aplikace FortiClient. Ta je aktuálně ve verzi 6.0.x a 6.2.x, mezi kterými je velký rozdíl. Do verze FortiClient 6.0.x je poskytován zdarma. Jde o klienta, který obsahuje řadu komponent a při instalaci volíme, které budeme používat. Minimálně musíme nainstalovat Security Fabric Agent (Endpoint Telemetry a Host Vulnerability Scan), abychom mohli přidat Secure Remote Access (SSL a IPsec VPN klient), další komponenty jsou třeba AntiVirus, Application Firewall, Web Filtering, Single Sign On.
Od verze FortiClient 6.2.0 začalo jít o placený produkt, který musí být řízený pomocí EMS (Enterprise Management Server). Dříve se mohl FortiClient připojit také k FortiGate (FortiOS od verze 6.2 to nepodporuje). Fortinet dává k dispozici zdarma pouze omezenou verzi FortiClient VPN 6.2. Ta neobsahuje jiné komponenty než SSL a IPsec VPN klient, ale i tyto možnosti jsou omezené. Není například podporován Host Check nebo IKEv2.
K dispozici jsou verze pro různé operační systémy, ale podpora všech funkcí je pouze v klientovi pro Windows. Detaily nalezneme na oficiální stránce FortiClient, kde je k dispozici i stažení online instalátoru (malý soubor, který si při instalaci stahuje další data přes internet, což v praxi funguje velmi pomalu). V nastavení portálu pro Web VPN můžeme povolit stažení klienta, pak se nabízí také online instalátor (takže je lepší zvolit vlastní umístnění a někam nahrát offline instalátor). Pokud máme účet, tak můžeme stáhnout offline instalaci z webu Support Fortinet v menu Download - Firmware Images - FortiClient.
Kolegové mi říkali, že FortiClient 6.0 pro Linux vyžaduje oprávnění Root a celkově nefunguje. Jako funkční zvolili alternativu OpenFortiVPN, případně Fortinet SSLVPN support for NetworkManager (pokud se využívá Split Tunnel, tak je třeba nastavit Use just for resources on this connection).
Zde se primárně věnujeme Windows verzi klienta FortiClient 6.0. Co jsem již psal v úvodu, instalátor 6.0.9.0277 má 95 MB a po nainstalování pouze VPN zabere 290 MB. Instalátor 6.2.6.0951 má 98 MB a zabere 205 MB. Rozhodně nejde o svižnou a spolehlivou aplikaci.
Nastavení FortiClient
Dokumentace FortiClient 6.0
Konfigurace FortiClient 6.2 by měla jít řídit přes EMS server. Pro FortiClient 6.0 by mělo jít vytvořit upravený instalátor, podle požadavků firmy, nástrojem FortiClient Configurator Tool. Ale abychom získali tento nástroj, tak musíme mít účet na Fortinet Developer Network. Pro vytvoření účtu potřebujeme dva sponzory, což jsou zaměstnanci Fortinet, kteří schválí vytvoření účtu.
Takže nám zbývá jen manuální konfigurace FortiClienta v GUI (která podobně jako ve FortiOS dovolí pouze něco) anebo úprava XML konfiguračního souboru. Níže je pohled na rozhraní verze 6.0 a 6.2.
Při řešení problémů se může hodit nastavení úrovně logování a export logů do textového souboru. V podstatě jediná volba pro globální nastavení VPN (další jsou parametry jednotlivých VPN připojení) je využití DTLS, což na některých místech Fortinet doporučuje, přesto je výchozí stav vypnuto.
Odemknutí nastavení
Běžně jsou některé volby zamčené a abychom je mohli použít/změnit tak musíme odemknout nastavení. Zámek vlevo dole nebo vpravo nahoře Unlock Settings.
Záloha konfigurace
Pokud chceme upravit aktuální nastavení, tak můžeme provést zálohu konfigurace, čímž získáme XML soubor s nastavením.
- FortiClient - Settings - v části System - Backup
- třeba do souboru
forticlient.conf
, potvrdíme OK, dostaneme informaci, že záloha proběhla
Obnova konfigurace
Pokud jsme upravili nastavení zálohované konfigurace, nebo jsme dostali připravený konfigurační soubor, tak jej obnovíme (importujeme) do FortiClienta.
- FortiClient - Settings - v části System - Restore
- vybereme soubor a potvrdíme, dostaneme informaci, že obnova proběhla
Záloha a obnova v příkazové řádce
Zálohu i obnovu konfigurace můžeme provést pomocí nástroje pro příkazovou řádku FCConfig.exe
.
FCConfig -m all -f <filename> -o export FCConfig -m all -f <filename> -o import
Dokonce můžeme exportovat/importovat pouze určitou část konfigurace. Níže je část VPN a pouze VPN připojení.
FCConfig -m vpn -f <filename> -o exportvpn FCConfig -m vpn -f <filename> -o importvpn
Úprava nastavení a XML konfigurační soubor
Dokumentace FortiClient 6.0.9 Administration Guide, FortiClient 6.0.9 XML Reference Guide
Pomocí XML konfiguračního souboru můžeme upravit řadu nastavení. Pomocí tohoto souboru můžeme na klienty šířit i nastavené profily pro VPN připojení. Pokud uložíme zálohu, tak v souboru máme většinu nastavení a jejich hodnot, některé další parametry můžeme doplnit. Tak jak jsme si ukázali v článku o autentizaci certifikátem, pokud chceme využít počítačový certifikát. Určitý popis všech nastavení se nachází v XML referenční příručce.
Konfigurační soubor jednoduše otevřeme v textovém editoru a upravíme hodnoty v patřičné části XML. Následně uložíme. XML soubor obsahuje řadu částí, které jsou popsány v dokumentaci. Ty hlavní pro SSL VPN jsou následující.
<forticlient_configuration> <system> </system> <endpoint_control> </endpoint_control> <vpn> <options> </options> <sslvpn> <options> </options> <connections> <connection> </connection> </connections> </sslvpn> </vpn> <vulnerability_scan> </vulnerability_scan> </forticlient_configuration>
V konfiguraci můžeme nastavit řadu speciálních vlastností. Například spouštět nějaký skript při navázání VPN tunelu. Nebo nastavit navázání VPN tunelu před přihlášením do Windows. Stojí za to podívat se do seznamu možností.
Nastavení DNS serverů pouze na SSL VPN adaptér
Jeden z problémů, které jsem řešil a nikde nenarazil na zmínku co s tím, se týkal registrace DNS jmen do firemního DNS. Když se uživatel připojil do VPN, tak se pro jeho jméno počítače vytvořily 2 i více záznamů ve firemním DNS. Jeden záznam obsahoval IP adresu z VPN připojení, tedy adaptér Fortinet SSL VPN Virtual Ethernet Adapter. Další záznam měl IP adresu z Wireless nebo Ethernet adaptéru lokální sítě uživatele.
Příčina byla vidět hned. Firemní DNS servery se nepřidaly pouze na Fortinet SSL VPN Virtual Ethernet Adapter, ale také na adaptér, kterým byl uživatel připojen lokálně do sítě.
Až v nastavení FortiClienta pomocí XML souboru jsem nalezl, jak toto chování změnit.
<forticlient_configuration> <vpn> <sslvpn> <options> <prefer_sslvpn_dns>0</prefer_sslvpn_dns> </options> </sslvpn> </vpn> </forticlient_configuration>
Případně můžeme nastavit, aby se neprováděla registrace DNS záznamu. Ale to vypadá, že pouze na Fortinet SSL VPN Virtual Ethernet Adapter odškrtne položku Register this connection's addresses in DNS. Pokud nenastavíme přepínač výše, tak se stejně zaregistruje hlavní adaptér. Také to vypadá, že po vrácení přepínače na 0 se znova volba pro registraci DNS nezaškrtne.
Nastavení je na stejném místě a jde o značku.
<no_dns_registration>1</no_dns_registration>
Odinstalace FortiClient
FortiClient VPN 6.2.6 se mi daří odinstalovat standardně přes Programs and Features. Ale u FortiClient 6.0.9 mi na všech počítačích chybí volba Uninstall a nachází se tam pouze Repair. Postup z dokumentace Uninstalling FortiClient také nefunguje.
Na fórech jsou různé rady, ale jediné, co mi zafungovalo, je použít nástroj FCRemove.exe
, který se nachází mezi FortiClientTools ve složce SupportUtils. Tyto nástroje stáhneme z webu Support Fortinet na stejném místě jako klienta.
Pozn.: Když jsme u FortiClientTools, tak se tam nachází také nástroj FortiSSLVPNclient (SSLVPNcmdline), který jsem moc nepochopil. Myslel jsem, že to je nějaký jednoduchý VPN klient, ale bez nainstalovaného FortiClienta nefunguje (ani nevypíše žádnou chybu). Při spuštění zobrazí jednoduché GUI a asi se dá volat i z příkazové řádky.
Komentáře
Ahoj, chtěl jsem se zeptat jestli jste řešil problematiku připojení pouze klientů registrovaných v EMS