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.
Řadu věcí a konfigurace FortiGate jsem popisoval v článku Fortinet FortiGate, který se týkal verze 5.6.3. V tomto článku (a dalších) nebudu popisovat úplně vše znovu, takže pro některé informace je možno nahlédnout do staré verze.
Dokumentace
Fortinet v nových verzích přidává mnoho novinek a mění i principy funkce či konfigurace. Popis bohužel pokulhává. K verzi 6.2.3 není k dispozici komplexnější dokumentace. V dokumentaci ke každé podverzi je popsáno něco jiného, takže se opravdu těžko hledá nějaká informace (je třeba procházet řadu dokumentů).
- FortiOS 6.2.3 Cookbook
- FortiOS 6.0.0 Cookbook
- FortiOS 6.0.0 Handbook
- FortiOS 6.2.3 CLI Reference
- Fortinet Knowledge Base
- Index of Knowledge Base articles
- YouTube David Adams FortiGate videa
Instalace / úvodní konfigurace
HW appliance FortiGate má nainstalovánu určitou verzi FortiOS a nastavenu výchozí IP adresu na MGMT rozhraní. Připojíme se k tomuto interface a pomocí webového rozhraní (nebo CLI) https://192.168.1.99
se dostaneme do konfigurace. Uživatel je admin
bez hesla. Connecting using a web browser
Provedeme základní nastavení, kdy také nastavíme interface pro správu, a poté připojíme FortiGate standardně do sítě.
- Network > Interfaces - nastavení IP adresy a Administrative access
- Network > Static Routes - Default Gateway
- System > Settings - jméno zařízení
Upgrade FortiOS
Dokumentace Performing a firmware upgrade, Firmware upgrade cluster.
- (Global) > System > Firmware
Je dobré si přečíst FortiOS Release Notes, protože občas dochází k velkým změnám. Samozřejmě vytvořit zálohu. Mít k dispozici aktuální verzi firmware, kdyby bylo třeba se vrátit zpět.
Nabízí se možné verze, někdy je třeba nejprve upgrade na nižší verzi a pak na vyšší. Instaluje se patch v rámci verze nebo nová verze. Upgrade probíhá rychle, pak je nutný reboot zařízení, který trvá 2 až 3 minut (FortiOS 5.6 ve VM asi 1,5 minuty).
Pozn.: Ne vždy se nové verze v GUI nabízí (ale můžeme stáhnout ručně ze Supportu). Narazil jsem na článek Troubleshooting Tip: No firmware available from FortiGuard under firmware management. Po několika testech na dvou FortiGate to vypadá, že bude spíš problém v dostupnosti FortiGuard serverů. Příkazy často vrací Timeout nebo Error, ale občas vypíší seznam.
V případě HA clusteru probíhá upgrade také automaticky. Nejprve se povýší podřízené jednotky (Slave Node), restartují, přepne se primární jednotka (Master) a proběhne její upgrade. V defaultním nastavení (override disable, ha-uptime-diff-margin 300) se často znovu přepne primární jednotka. Master se volí podle delšího HA uptime, ale ignoruje se, pokud je rozdíl menší než 5 minut (můžeme změnit v konfiguraci). U Active-Active clusteru se na začátku upgradu vypíná Load Balancing.
Pokud používáme Virtual clustering, tak se nejprve přepne Master pro Virtual cluster 2 (aby byl všude primární jednotkou jeden fyzický FortiGate) a proběhne upgrade Slave jednotky. Po naběhnutí upgradované jednotky se čeká (vypadá to na 10 minut). Následně se přepne Master na upgradovanou jednotku a proběhne upgrade druhého FortiGate. Dojde k synchronizaci clusteru a HA override zařídí nastavení Master-Slave na virtuální clustery. V případě clusteru je tedy Firewall téměř neustále dostupný, ale při každém přenutí se přeruší navázané session (třeba VPN).
Po upgradu je dobré provést kontrolu, zda se převedly všechny objekty politiky. Kontrola se provádí příkazem v CLI (Technical Tip: After FortiOS upgrade, some of the ISDB objects in the policy are missing).
diag debug config-error-log read
Základní nastavení
Pokud používáme VDOM, tak jsou některá nastavení globální (Global) a ovlivňují celý FortiGate. Ale většina se nastavuje v rámci VDOM. Tyto konfigurace musíme provést ve všech vytvořených VDOM. Potřeba je nezapomenout třeba na Feature Visibility.
- (Global) > System > Settings - Idle timeout, System Time (vlastní NTP musíme nastavit v CLI), Email Service
- (Global) > System > Settings - Administration Settings HTTPS port - běžně se zde píše varování, že je port 443 v konfliktu se SSL VPN, pokud ale máme povolen admin přístup na jiném interface než SSL VPN (nebo ji vůbec nepoužívám), tak to můžeme ignorovat
- (VDOM) > System > Feature Visibility
- (Global) > Network > DNS
- (Global/VDOM) > System > SNMP
- (Global/VDOM) > Log & Report > Log Settings
- (VDOM) > Log & Report > Email Alert Settings
Nahrání certifikátů
- (Global/VDOM) > System > Certificates - Import - Local Certificate
Jako lokální certifikát nahráváme serverové certifikáty, většinou včetně privátního klíče (můžeme také generovat žádost a nahrát podepsaný certifikát). Tyto certifikáty použijeme přímo pro FortiGate, SSL inspekci či publikaci serveru.
Další možnost jsou vzdálené certifikáty (Remote certificate). To jsou veřejné certifikáty bez privátního klíče.
- (Global/VDOM) > System > Certificates - Import - CA Certificate
Pokud FortiGate nezná nějakou certifikační autoritu (CA), například interní, tak je dobré nahrát její certifikát. Když importujeme certifikát autority, tak se mu automaticky nastaví jméno. Změnit můžeme pouze v CLI
FW1 (global) # config certificate ca FW1 (ca) # show config certificate ca edit "G_CA_Cert_1" next end FW1 (ca) # rename "G_CA_Cert_1" to Firma_Root_Authority
Pokud jsme nahráli a používáme nějaký Local Certificate, tak potřebujeme mít v systému certifikát jeho kořenové CA. V případě víceúrovňové CA, certifikát všech CA v řetězci. Jinak můžeme dostávat chybu
fortigate certificate chain is incomplete
Pokud importujeme lokální certifikát z PFX, které obsahuje i certifikáty Root a Intermediate CA, tak stejně musíme ručně nahrát certifikáty CA.
Módy provozu systému FortiGate
Dokumentace Inspection modes (6.0.0), About inspection modes (6.2.3), Profile-based NGFW vs policy-based NGFW (6.2.3)
Jakým způsobem FortiGate zpracovává provoz, a uplatňuje bezpečnostní funkce, je dáno několika módy provozu. Jedná se o operační mód, inspekční mód a NGFW mód (případně další související parametry). Dříve (do verze 6.0.9) se všechny módy nastavovaly globálně pro celý FortiGate, případně pro každou VDOM (pokud byly aktivované). Od verze 6.2.0 došlo k zásadní změně a inspekční mód se nastavuje per FW politika. Předtím došlo k větší změně ve verzi 5.6.0, kdy byl přidán NGFW mód.
System Operation Settings
- (Global) > System > Settings - System Operation Settings
Globální nastavení se nachází v nastavení systému v sekci System Operation Settings. Pokud používáme VDOM, tak jsou některé konfigurace v Global > System > VDOM. Nachází se zde také volba
- VLAN switch mode - zapíná možnost využít VLAN switch, Virtual switch support for FortiGate 300E series
Operační mód - Operating Mode
Mód fungování nastavujeme pro celý FortiGate, v případě použití VDOM pro každou VDOM. Výchozí je NAT/Route.
- NAT/Route- standardní režim pro většinu situací, FortiGate funguje jako brána (Gateway) nebo směrovač (Router) mezi sítěmi, umožňuje využít NAT (nebo routing) a skrýt interní adresy
- Transparent - v transparentním módu FortiGate nijak nemění IP adresy, pouze provádí bezpečnostní skenování provozu, umisťuje se mezi interní síť a směrovač
Přepnutí se provádí pomocí CLI
config system settings set opmode {nat | transparent} end
Inspekční mód - Inspection Mode
- (VDOM) > Policy & Objects > IPv4 Policy
Od verze 6.2.0 se inspekční mód nastavuje v každé politice (Firewall Policy) a výchozí je Flow-based. Dříve se nastavoval globálně pro FortiGate (System > Settings) nebo VDOM (Global > System > VDOM) a výchozí byl Proxy-based. Stručné info Inspection Mode Per Policy.
- Flow-based inspection - porovnává vzory (pattern) se snímkem paketů pro identifikaci bezpečnostních hrozeb, poskytuje větší výkon, obsah paketů se kontroluje paket po paketu jak prochází politikou (neukládá se do bufferu), poslední paket se zadrží a čeká na výsledek testu, pokud došlo k narušení (violation), tak se odesílá reset
- Proxy-based inspection - rekonstruuje obsah, který prochází politikou, a zkontroluje jej z hlediska bezpečnostních hrozeb, podporuje více konfiguračních možností, ale je pomalejší, provoz procházející politikou se ukládá do vyrovnávací paměti pro inspekci (třeba při stahování souboru, příjmu poštovní zprávy apod. se ukládají všechny pakety souboru/zprávy, pak se jako celek ověří), pokud dojde k narušení, tak je zahozen a nahrazen zprávou (replacement message), v opačném případě je uvolněn cíli, musíme řešit velké soubory
Pozn.: Ve starších verzích, pokud jsme chtěli používat Virtual Server s HTTPS (a dalšími SSL protokoly), tak jsme museli mít nastaven mód Proxy-based. Nyní nastavujeme per politiku, takže stačí mít určitou politiku v tomto módu (pro použití jakéhokoliv Virtual Server musí být mód Proxy).
config firewall policy edit <policyid> set inspection-mode {proxy | flow} next end
NGFW mód - Next-Generation FireWall Mode
NGFW mód se nastavuje globálně pro FortiGate (System > Settings) nebo pro VDOM (Global > System > VDOM). Výchozí je Profile-based. Dříve byl k dispozici pouze pro Flow-based Inspection Mode. Možnosti jsou
- Profile-based - tradiční způsob, kdy vytváříme profily (Profile) pro bezpečnostní funkce (jako AV, Web Filter, Application Control, apod.) a ty aplikujeme na politiky (Policy), definujeme IPv4 Policy
- Policy-based - přímo v politice můžeme používat aplikační a URL kategorie (nevytváříme profil), vždy používá Central SNAT, definujeme Firewall Policy a Security Policy
Central SNAT můžeme zapnout také pro Profile-based NGFW mode. Pokud využíváme Source NAT, tak jej pak nemusíme definovat na každé politice, ale pouze centrálně v Policy & Objects > Central SNAT.
Pozn.: Dokumentace uvádí, že při přepínání mezi Profile-based a Policy-based dojde ke konverzi politik. V praxi se zobrazí info, že politiky budou smazány, a to se stane.
config system settings set ngfw-mode {profile-based | policy-based} end
Network Interfaces - síťová rozhraní
Dokumentace Interfaces (6.0.0), Interfaces (6.2.3)
- (Global/VDOM) > Network > Interfaces
Rozhraní umožňují tok dat mezi sítěmi. Fyzická rozhraní (Physical Interfaces) jsou fyzické porty na zařízení. Můžeme vytvářet množství virtuálních rozhraní.
Speciální rozhraní
Některé speciální typy jsou
- Zone - zóna je skupina jednoho nebo více fyzických či virtuálních rozhraní, v politikách se pak používají zóny (zařazené interface se ani nenabízí), což může být zjednodušení (třeba pro seskupení síťových segmentů), rozhraní mají stále svoje adresy a směrování (není ovlivněno zónami), při použití VDOM se zóny konfigurují v rámci VDOM a ne globálně, takže mohou mít i stejné názvy (ostatní rozhraní musí mít unikátní název)
- Virtual Wire Pairs - logicky váže dvě fyzická rozhraní, provoz, který přijde přes jedno rozhraní může odejít pouze druhým rozhraním (pokud je povoleno ve Virtual Wire Pair Firewall Policy)
- VDOM Link - interní spoj mezi virtuálními doménami (VDOM), které umožňuje Inter-VDOM routing
Pozn.: Narazil jsem na doporučení používat zóny, i když nepotřebujeme seskupit rozhraní. Ale každý interface zařadit do Zone. V politikách pak využíváme zóny, pokud potřebujeme udělat změnu interface, tak zařadíme do zóny jiný a politiky stále fungují.
Pozn2.: Tak jsem to řešil v praxi, že jsem potřeboval změnit interface. Využití zón je fajn, ale pořád je bohužel řada míst, kde se nezadává zóna, ale přímo interface, takže úprav je potřeba hodně. Například statické routy a Virtual IP. Užitečná je funkce zobrazení referencí.
Typy rozhraní
Většinu rozhraní vytváříme pomocí Create New - Interface a následně volíme Type. Také vybíráme jiný interface/port (případně více portů) na kterém se nové rozhraní vytvoří. Některé z možných typů jsou:
- VLAN - fyzický interface můžeme připojit do sítě jako trunk (IEEE 802.1Q) a na něm vytvořit rozhraní (subinterfaces) pro jednotlivé VLANy dle VLAN ID, když používáme VDOM, tak zařazujeme do VDOM přímo VLAN rozhraní (nemusíme tam dávat rozhraní, na kterém VLAN vytváříme)
- 802.3ad Aggregate - fyzická rozhraní spojíme do agregovaného rozhraní
- Redundant Interface - fyzická rozhraní spojíme do redundantního rozhraní
- Software Switch - logické spojení fyzických portů (můžeme spojit i s WiFi interface) do switche, zařízení na portech mohou mezi sebou komunikovat (neuplatňují se politiky), jsou ve stejném subnetu, switch má jednu IP adresu, chová se jako jeden interface
- Hardware Switch - spojení portů, které jsou součástí integrovaného switche
- VLAN Switch - virtual switch, který může mít porty v různých VLAN
- Loopback Interface - virtuální rozhraní, které je vždy nahoře (link up)
- EMAC VLAN - Enhanced MAC VLAN umožňuje na fyzickém rozhraní vytvořit několik virtuálních s různou MAC adresou
- VXLAN - Virtual Extensible LAN zapouzdřuje L2 rámce do L3 paketů, vytváří se VXLAN tunel ukončený na fyzickém nebo virtuálním switch port (VXLAN Tunnel Endpoint - VTEP), konfigurace pouze v CLI
Rozhraní 802.3ad Aggregate a Redundant Interface jsou podrobněji popsána v kapitole Redundantní připojení do sítě článku FortiGate High Availability cluster a Virtual Domains (VDOM).
Rozhraní můžeme různě kombinovat. Například spojíme dva fyzické porty do virtuálního 802.3ad Aggregate Interface, který je nastavený jako trunk, takže nad ním vytvoříme několik VLAN subinterfaces.
Pozn.: Další rozhraní jsou například VPN tunely.
Role rozhraní
U rozhraní nastavujeme roli, která nám může sloužit k určité identifikaci, a v GUI způsobí zobrazení/skrytí určitých položek nastavení interface.
- Undefined - žádná specifická role, zobrazuje vše (až na vytvoření adresního objektu)
- WAN - připojení do internetu, řada nastavení je skryta, naopak je k dispozici Estimated bandwidth
- LAN - koncová zařízení v lokální síti
- DMZ - servery v DMZ
Některá nastavení rozhraní
Rozhraní mají řadu nastavení, dle typu a zvolené role. Některé možnosti jsou:
- Address IP - pro většinu rozhraní nastavujeme manuálně IP adresu (která pak slouží jako brána pro daný síťový segment) a masku sítě
- Secondary IP address - můžeme přidat i více IP adres a u každé určit Administrative access
- Create address object matching subnet - většinou je defaultně zapnutá volba, která k rozhraní vytvoří stejně pojmenovaný objekt adresa (ten se určitě hodí, ale možná si jej chceme pojmenovat jinak)
- Administrative access - povolujeme různé typy (protokoly) správcovského přístupu přes toto rozhraní, většinu chceme povolit pouze pro Management rozhraní
- Security mode - umožňuje zapnout Captive Portal pro autentizaci
- Device Detection - pasivní shromažďování informací o zařízeních za tímto rozhraním
- Outbound shaping profile - můžeme vynutit limit šířky pásma pro rozhraní
config system interface edit "<Interface_Name>" set ... next end
Směrování - Static Routes
Dokumentace Advanced static routing
- (VDOM) > Network > Static Routes
Patrně vždy potřebujeme nastavit Default Gateway (Route) pro cíl 0.0.0.0/0.0.0.0
. Často potřebujeme další specifické routy (pro přímo připojená rozhraní definovat nemusíme).
- (VDOM) > Monitor > Routing Monitor
Zde si můžeme prohlédnout routovací tabulku.
Command Line Interface (CLI)
Dokumentace CLI Reference - Using the CLI
Vše, co nastavíme pomocí GUI se převádí do příkazů. Konfiguraci můžeme provádět přímo v příkazové řádce (CLI), která poskytuje o dost více možností. Příkazovou řádku můžeme použít přímo ve webovém prohlížeči v GUI, kde se v pravém horním rohu nachází tlačítko >_
(CLI Console). Jinak se můžeme připojit běžným způsobem, pomocí lokální konzole (sériový port) či SSH.
Pro použití CLI a pro syntaxi příkazů platí řada pravidel. Při zadávání příkazů můžeme využít:
- Tab - k zadaným znakům doplní příkaz, dalším stiskem prochází možnosti
- ? - zobrazí možné příkazy
- šipka nahoru a dolů - listuje dříve použité příkazy
- \ a ENTER - umožní zadat příkaz na více řádků (přejde na další řádek bez spuštění příkazu)
Filtrování výstupu
Za příkazy get
, show
a diagnose
můžeme využít příkaz grep
pro filtrování výsledků. Můžeme zobrazit řádky, které obsahují nějaký řetězec.
FW1 # get hardware nic mgmt | grep HWaddr Current_HWaddr 00:09:0f:09:00:01 Permanent_HWaddr 04:d6:90:53:33:0a
Také můžeme použít některé přepínače, zajímavý je kontextový výstup části konfigurace.
FW1 (INT) # show | grep -f full-access config vpn ssl web portal edit "full-access" <--- set tunnel-mode enable set web-mode enable set ip-pools "SSLVPN_TUNNEL_ADDR1" next end
Vnoření příkazů, použití next, end
Příkazy se v konfiguraci FortiOS zanořují do sebe a v daném rozsahu (scope) jsou k dispozici určité podřízené příkazy. Při zobrazení se používá odsazení, které určuje stupeň zanoření. Pro ukončení bloku (přesněji položky tabulky nebo objektu) se používají příkazy next
a end
.
Důležité je, že při zadávání příkazů v určitém bloku/položce se tyto neuplatní hned, ale až po uložení. Uložení provedou právě tyto příkazy. Příkaz next
se používá v rámci stejné úrovně pro ukončení edit
, kdy ukončujeme jednu položku tabulky a může následovat další. Příkaz end
ukončí blok a dostaneme se o úroveň výše.
Pokud bychom změny nechtěli uložit, tak můžeme použít abort
.
Zobrazení konfigurace
Kdykoliv můžeme použít příkaz show
, který nám zobrazí konfigurační příkazy (změny oproti výchozí konfiguraci) v dané úrovni (objekt/tabulka). Můžeme také zobrazit konfiguraci včetně výchozích hodnot příkazem show full-configuration
.
Zobrazení logů a debug
V příkazové řádce můžeme zobrazovat a filtrovat logy. Dokumentace Technical Tip: Displaying logs via CLI.
Pro řešení problémů je užitečné (a často nutné) zapnout debug určité oblasti příkazem diagnose debug
. Dokumentace Technical Tip: How to use debug flow to filter traffic. Hodit se může zapnout zobrazení času do výstupu.
diagnos debug console timestamp enable
Automatické zálohování konfigurace
Dokumentace Technical Tip: How to send automated backups of the configuration from a FortiGate and How to add multiple commands in the CLI script, FortiOS CLI execute backup
Ručně můžeme provést zálohu konfigurace, když klikneme v pravém horním rohu na přihlášeného uživatele a zvolíme Configuration - Backup.
Pomocí CLI můžeme vytvořit skript, který se bude opakovaně spouštět po zadaném čase (interval) určitou dobu (repeat, 0 navždy). Provede příkaz, který uloží zálohu na FTP server. Příklad níže je při použití VDOM.
config system auto-script edit "BackupFTP" set interval 86400 set repeat 0 set start auto set script " config global execute backup config ftp FortiGate/backup.conf 10.0.0.10 uzivatel heslo" next end
Zobrazení výsledku skriptu
FW1 (global) # execute auto-script result BackupFTP Script BackupFTP output: ########## script name: BackupFTP ########## ========== #1, 2020-04-16 08:05:41 ==========
Příkazy, které zobrazí stav skriptů, případně skript zastaví.
execute auto-script status execute auto-script stop BackupFTP
Nemáte strach z důvodu security ukládat po síti na ftp? Datový přenos není šifrovaný.
odpověď na [1]Pavel: Tak samozřejmě síť pro správu/zálohování/apod. by měla být oddělena od provozní sítě a přístup do ní řízen. Jinak stejné riziko je nejen přenos po síti, ale také uložená data.