section

FortiGate flash oddíly

01.09.2022 | Tag Fortinet

Fyzické FortiGate firewally mají v rámci své flash dva bootovací oddíly (partition) pro uchovávání dvou souborů s firmware. Box se tak chrání před nemožností nabootovat a dává možnost přepínat se mezi dvěma verzemi systému.

Předně, virtualizované firewally tuto srandu nedokážou, jde čistě o vlastnost fyzických boxů, nicméně u VM jsou zase k dispozici jiné pěkné funkce na úrovni hypervizora. Podle guidy dvě partitions nemají všechny boxy, a i když jsem zatím neviděla model, který by tuto funkci neobsahoval, bude dobré si dostupnost u každého modelu předem potvrdit.

Fyzické boxy mají pro uchovávání firmwarů a konfigurace flash úložiště, které má dva oddíly – primární a sekundární. V obou je uložen firmware a příslušná konfigurace nějaké verze. Box standardně bootuje z primárního oddílu a sekundární používá jako zálohu, pokud by z primárního nabootovat nedokázal. V rámci CLI (s právy super admina) se pak dá příkazově řídit, z jaké partition má firewall příště bootovat, což se kolikrát může hodit při rollbacku, testování verzí a tak podobně. Jde o globální příkaz, při zapnutých VDOMách se nastavení vztahuje na celý box.

Aktuální obsah flash se dá vypsat následovně:

diagnose sys flash list


FPART1

Malá poznámka, verze firmware se ve flash listu vypíšou jako názvy souborů, takže typ boxu a číslo buildu. Co to je reálně za verzi jde u aktivního oddílu zjistit CLI příkazem get system status, v GUI pod System - Firmware, nebo obecně na Fortinet support stránkách, či přes Upgrade path tool.

FPART2
FPART3

Příkaz diagnose sys flash list řekne, která partition je nyní aktivní a jaké verze firmware jsou aktuálně uložené. Co bohužel není vidět, jsou konfigurace, které jsou v každém oddílu také schované. V guidách jsem o tomto chování překvapivě nic nenašla a v reálu mě pak dost zaskočilo, když se s předchozí verzí firmware objevila i předchozí verze konfigurace. Na to je tedy třeba dávat pozor. Běžně to funguje tak, že při bootu z vybraného oddílu se spolu s firmware načte i konfigurace s daným oddílem svázaná.

Během upgradu box nahraje nový firmware do backup oddílu. Vezme si konfiguraci z primárního oddílu, převede ji na novou verzi a zkopíruje taktéž do backup oddílu. Backup oddíl následně označí za bootovací/aktivní a restartuje se. Po restartu je (v ideálním případě) načtený nový firmware a převedená konfigurace z původního backup oddílu a stará verze a konfig čeká na druhém oddílu, který byl před upgradem primární. Kdyby se něco hodně nepovedlo, box se pokusí zachránit bootem z druhého oddílu. Stejně tak je možné změnit aktivní oddíl ručně a restartem načíst jiný firmware. Postup ukážu dále. Níže jsou screeny z upgradu na verzi 7.0 a co to udělalo s flash oddíly.

FPART4
FPART5

Na základě výpisu oddílů přes příkaz identifikujeme, která partition je nyní aktivní. 1 je primary, 2 secondary. Příkazem níže stanovíme aktivní oddíl po dalším restartu.

execute set-next-reboot {primary/secondary}

Následně box otočíme.

execute reboot


FPART6

Je důležité počítat s tím, že konfigurace se mezi oddíly nereplikují. Při přepnutí na backup oddíl se načte konfigurace z doby, kdy byl její oddíl aktivní. Jak jsem psala, mě to třeba dost zaskočilo. Měla jsem v prvním oddílu už vlastního admina a default byl smazaný. Druhý oddíl měl ještě stále default admina s nějakým náhodným heslem, které jsem si nepamatovala :). Což mě vede ke druhé poznámce – factory reset se vztahuje na právě aktivní oddíl. Ve druhém oddílu bude pořád konfigurace schovaná.

Původně jsem chtěla také napsat, že je možné příkazem nahrát nový firmware do neaktivní partition a následně z ní nabootovat, to se mi však při testech nepovedlo bezchybně provést. Fortigate příkaz přijal, nicméně po nahrání vyskočila chyba s flash a test nedopadl. Proto pouze informativně, je možnost nahrát firmware do druhého oddílu, ale reálnou funkčnost nemůžu zrovna potvrdit :). Tím nechci od této procedury odrazovat, působí zajímavě, ale možná je potřeba splnit nějaké prerekvizity. Jestli je podobným způsobem možné na oddíly ručně nahrávat konfiguraci, to nevím. Zkoušela jsem tuto možnost hledat všude možně, ale nedopátrala jsem se.

execute restore secondary-image ftp

Co mám vyzkoušeno z testů, tak četné skákání mezi oddíly FortiGate nevadí. Mám na jednom oddílu verzi 7.0 a na druhém verzi 6.4. V případě potřeby mohu aktivní oddíl prohodit a po restartu mám k dispozici druhou verzi (spolu se spjatou konfigurací). Takhle jsem přeskakovala během testu několikrát a vše fungovalo v pořádku. Pokud tedy admin má zmapovaný stav konfigurací, může vcelku jednoduše testovat verze.

Ohledně HA, tam to je složitější. Nemám to otestované, chybí mi železný HA cluster, ale zmíněné příkazy by měly platit na každého člena zvlášť, ne na cluster jako celek. Použití této funkce tedy asi je teoreticky přípustné, ale rozhodí na určitý čas HA, a v případě rozdílných konfigurací na oddílech to může být i na delší lokte.

To by mohlo stačit. V rámci testování na standalone železné FortiGate je to určitě zajímavá možnost, která stojí za prozkoumání.