section

Fortigate external threat feed list

12.08.2022 | Tag Fortinet

Fortigate umožňuje napojit se na externí web server, stáhnout si z něj list IP nebo URL adres a tento list následně použít v politikách. V rámci automatizace to může být šikovná pomůcka, chci proto ukázat, jak se tato funkce nastavuje.

Při konfiguraci rozsáhlých či často se měnících pravidel se může funkce external threat feed hodit. Jde o list IP nebo URL adres, který si firewall do sebe pravidelně natahuje a dovoluje ho dál použít v politikách. Navzdory svému pojmenování je možné tento list použít v jakýchkoliv politikách, povolujících i zakazovacích. Fortigate tuto funkci schovává pod Security Fabric. V jejím rámci je možné napojit se na širokou škálu vendorů a používat údaje z nich dále ve firewallu. O tom však v jiném článku. Velice podobnou vlastnost jsem dřív používala na Palo Alto firewallu pro řízení přístupu na O365 služby. Sám Microsoft i další technologické firmy dávají seznamy IP adres a URL k dispozici pro nastavení prostupů. Pokud mají správný formát, dá se na ně chytit napřímo a používat je.

FEED2
FEED3

Trochu bokem, zmíněný příklad využití bych už dnes popravdě nepraktikovala. Škrtit přístup do internetu na úrovni povolených IP adres může působit jako dobré řešení, ale při dnešních CDN sítích, AWS a Microsoft službách se tyto politiky nedají pořádně řídit a v konečném důsledku to nedopadá tak, jak by admin chtěl. Když jsou k dispozici L7 ochrany a firewally rozeznávající aplikace, je dle mého lepší volit black listing metodu – jedním pravidlem zakážu aplikace, které opravdu fungovat nemají (případně spolu s tím i nechtěné URL adresy, přípony souborů atp.) a dalším pravidlem přístup do internetu otevřu. Ideálně s SSL dekrypcí a plnou L7 ochranou. Přijde mi, že tahle metoda je ve finále efektivnější než se snažit řídit povolené IP adresy. Tak dál.

Jak jsem zmínila, threat feed list se dá použít pro automatizaci, případně pro řízení náročných pravidel. Firewall si pravidelně threat feed stahuje a aktualizuje seznam obsažených adres. To se projeví ve všech politikách, ve kterých je list použit, a admin se o nic nemusí starat. Pokud to vztáhneme na příklad s Microsoftem – MS upraví list IP adres, které reprezentují jejich O365 servery, Fortigate na to přijde, list sám stáhne a updatuje v politikách.

Dalším příkladem může být kooperace v rámci větší firmy, kdy na interním web serveru mohou být vystavené seznamy adres např. nově natočených vývojových mašin, kam se vývojáři potřebují dostávat z VPN a v rámci síťové segmentace. Protože je zde neustálý tlak na čas, prostupy musí fungovat okamžitě (určitě známe). Zároveň není žádoucí, aby se vývojáři sami dostávali do administrace Fortigate a něco si tam nastavovali. Proto upravují seznam (nebo se sám generuje z nějakého zdroje) na web serveru a Fortigate reaguje na změny automaticky tím, že si seznam stahuje a použije. Tenhle přístup mi popravdě přijde sympatický. Alternativou může být napojení přímo na virtualizaci a pomocí filtrů dosáhnout toho samého. Dál už praktická ukázka.

Na straně Fortigate se v GUI musíme dostat přes Security Fabric do External Connectors, kde vytvoříme nový IP Address Threat Feed. Mimochodem, jak je vidět, Fortigate se umí napojit na mnoho platforem, ať on-prem nebo cloudových.

FEED5

Pro feed se zvolí jméno, pod kterým bude následně list dostupný jako objekt pro použití v politikách. Dál se nastaví URL cesta k listu a interval, který definuje, jak často má FortiGate list kontrolovat a případně aktualizovat. List musí být vystavený přes http nebo https protokol (nelze tedy použít FTP, SFTP, nebo jiný podobný server) a může být chráněný přístupovými údaji. Při testech jsem zkoušela http i https variantu s ověřením i bez a vše bylo bez problémů. Pro https přístup jsem pro jistotu kvůli důvěryhodnosti do Fortigate napřed nahrála certifikáty mé interní autority, které web server používal, ale to popravdě nevím, jestli je třeba. A pokud je list vystavený na nějakém serveru v internetu se známou autoritou, mělo by to být úplně bez problémů.

FEED6

Pro mou ukázku jsem měla list IP adres vystavený na interním serveru, který se viděl s Fortigate napřímo, takže nebylo třeba řešit žádné politiky. Nicméně při stahování listů z internetu je potřeba zajistit to, aby se na server s listem Fortigate dostala. Ohledně web serveru, níže je spíše pro ukázku konfigurace default site v Nginxu s nějakým jednoduchým ověřením. Není to zrovna čistý konfig, ale chci tím ukázat, že i vytvoření vlastního web serveru s certifikátem a ověřením je velmi jednoduché.

FEED9
FEED11

Samotný IP list musí být v UTF-8 a uvedené záznamy ve správném formátu, každý na samostatné řádce. Soubor má nějaké velikostní limity, ty jsou ale dle mého dost vysoké. Fortigate vezme subnet s maskou, adresní rozsah i adresu samotnou. Na vyloženě syntaktickou chybu upozorní, ale např. na duplicitní záznamy už ne. Níže pro ukázku, jak to vypadá.

FEED4

Pokud je jeden záznam špatně, na funkčnost celého listu to vliv nemá. Hezké je, že fungují komentáře, záznamy se tedy v listu nemusí přímo mazat, Fortigate komentáře respektuje a adresy vůbec nezobrazí. Pokud spojení na server s listem vypadne, Fortigate si pamatuje poslední verzi a co jsem zkoušela, udrží ji i přes restart. Pravidla by tedy měla zůstat platná za všech okolností, jen se nebudou updatovat. Když se myší najede na položku thread feedu, ukáže se datum a čas prvního stažení, poslední aktualizace a stav feedu. Stažený list nejde přes GUI ani CLI firewallu upravit, musí se vždy řídit přes soubor, ze kterého Fortigate čerpá.

FEED10
FEED1

A nakonec, takto vytvořený threat list se dá použít jako zdroj či cíl v security politikách (podle dokumentace i v DNS filtru, to jsem však nezkoušela). Na tom už nic zajímavého není, list se zobrazí v seznamu dostupných objektů pro zdroj i pro cíl a pracuje se s ním jako s kterýmkoliv jiným objektem. Jeden list má svou IPv4 i IPv6 podobu, pravděpodobně si tedy Fortigate umí vyzobat záznam se správným formátem a použít jej, ale to jsem neověřovala. Jak jsem zmiňovala, threat feed se dá použít na politiky s jakoukoliv akcí, tedy allow i deny.

FEED7
FEED8

To by k této funkci bylo vše. Běžně se bez ní dá obejít, ale v určitých případech může být šikovná a je dostupná v základu každé FG bez nějakých dalších licencí.