Velmi často slýcháme otázku: „Jak můžeme využít Flowmon k zablokování útoku?“  

Jelikož Flowmon není inline síťový prvek, který by stál v cestě příchozímu provozu, je potřeba využít řešení třetích stran jako jsou firewally nebo bezpečnostní brány. 

Co budete potřebovat

Na našem partnerském portálu si můžete stáhnout integrační skripty. K dispozici je také kompletní dokumentace. 

Aktuálně tato integrace pracuje pouze s IPv4 adresami. Rozšíření pro podporu IPv6 adres by bylo nutné další API volání a vytvoření skupiny pro IPv6 adresy. Toto však závisí na vašem připojení k internetu. Pokud máte ve vaší WAN k dispozici pouze protokol IPv4, nedává blokování IPv6 smysl.

Příklad užití

Jedním ze způsobů, jak blokovat útoky na FortiGate s povolenou službou IPSec VPN, je skrze nastavení Local-In Policy. Ve výchozím stavu umožňuje přístup všem adresám, ale můžete vytvořit skupinu k blokování konkrétních IP adres. Jedna taková skupina může obsahovat seznam až 600 IP adres (limit se může lišit dle platformy). K dispozici máte také skript, který umožňuje po určité době (nastaveném čase TTL, po který adresa zůstane ve skupině) odstranit IP adresy a udržovat seznam krátký.

Předtím než může Flowmon ADS poskytnout IP adresy k blokaci, je zapotřebí nahlédnout do síťového provozu dříve, než dorazí k FortiGate.

Jinými slovy potřebujete NetFlow/IPFIX data z routeru nebo flowmon sondy, než dorazí k firewallu. Nedoporučuji pro tyto účely využívat samotný FortiGate, protože v jeho flow exportu chybí TCP flags a v řadě detekčních metod byste se setkali s nesprávnou detekcí. To platí i pro nejnovější FortiOS 6.4.

V okamžiku, kdy máte připravený zdroj flow dat a váš Flowmon ADS je nastaven tak, aby detekoval síťové anomálie, můžete nainstalovat výše uvedený balíček skriptů. Využívá volání REST API, aby z událostí Flowmon ADS ve FortiGate přiřadil adresy do předdefinované skupiny a uchoval databázi dříve blokovaných IP adres pro pozdější použití.

Jedná se o skript v jazyku Python, a jelikož potřebuje další knihovny, je potřeba je ještě doinstalovat z balíčku.

Instalace

Nejprve si stáhněte balíček (ag-mitigation.tar.gz) a skrze konfigurační centrum jej normálně importujte jako jakýkoliv jiný softwarový balíček Flowmon. Všechny části po instalaci pak naleznete zde: /data/components/fgt-mitigation/.

Seznam nainstalovaných balíčků ve Flowmon Configuration Center

Balíček obsahuje konfigurační soubor a dva skripty; ag-mitigation.py je zodpovědný za blokování a bude vyžadovat nahrání na Flowmon ADS (viz níže). Druhý, ag-timeout.py, odstraní blokované adresy po vypršení nastaveného času.

Po instalaci budete moci spustit/zastavit skript ag-timeout.py přímo z uživatelského rozhraní (spouští se pomocí cronu). K uchování informací o blokovaných IP adresách a době po kterou mají zůstat v těchto záznamech se využívá SQLite3 databáze. Můžete nastavit nejen jak dlouho zde mají záznamy zůstat, ale také jak často se má skript spustit (úpravou cron scheduleru).

Dále je třeba nastavit Local-In Policy na vašem FortiGate, aby v defaultním stavu neustále blokovaly veškerý provoz ve skupině Flowmon ADS.

Nastavení Local-In Policy v konzoli FortiGate

Na začátku se tato skupina skládá pouze z jednoho záznamu, který v podstatě znamená „žádná IP adresa“. A to jen proto, že skupina adres ve FortiGate nemůže být prázdná a tento jeden záznam nedělá nic.

Webové rozhraní FortiGate – nastavení skupin adres pro skript

Následně nastavte jedno monitorovací rozhraní Flowmon tak, aby vidělo WAN provoz před firewallem FortiGate (já pro testování využil monitorování virtuálního přepínače s vnitřní sítí propojenou s internetem). Umožňuje to vidět jakýkoli útok vůči WAN IP adrese FortiGate, protože veškerý provoz prochází tímto pozorovacím bodem.

V nastavení Flowmon ADS je potřeba nahrát vlastní skript. Není potřeba nastavit žádné parametry tomuto skriptu, jelikož vše potřebné se dá nastavit ve skriptu samotného. Tento skript se pak nastaví pro spuštění nad nějakou událostí v určité perspektivě. V příkladě je použita perspektiva Security issues, a spustí se v případě, že je detekována událost s prioritou větší než střední.

Konfigurace vlastního skriptu Flowmon ADS

Blokování

Před zablokování jakéhokoli útoku můžete jednoduše zkusit ping na WAN IP adresu FortiGate. Toto je tedy k vyzkoušení, že žádný provoz není blokován.

Úspěšný příkaz ping s FortiGate IP adresou

Při spuštění skriptu se informace ve FortiGate aktualizují prostřednictvím REST API, včetně IP adresy a zároveň se zařadí do skupiny adres – v našem příkladu se jmenuje Flowmon ADS.

IP adresa přidaná z Flowmon ADS včetně ID události

A je také přidána do skupiny adres

Nyní je seznam aktualizován a zařízení s IP adresou 192.168.47.79 již nemůže zkoušet ping na FortiGate ani se k němu připojit na žádném z jeho portů. Brána firewall jej blokuje na základě pokynů od Flowmon ADS.

Příkaz ping bez odpovědi

Skript ag-timeout.py slouží k vymazání seznamu blokovaných IP adres. Po několika opakováních tohoto skriptu se vše vrátí do původního stavu.

Několik spuštění skriptu časovače

Výše uvedená obrazovka ukazuje, že do skupiny byla přidána jiná IP adresa. Ta je pro snazší manipulaci uložena v databázi v celočíselném tvaru.

Závěrem

Ukázali jsme si jeden ze způsobů, jak můžete využít kombinaci Flowmonu s řešením třetí strany v rámci automatické mitigace útoku. Můžete také využít standardní politiku firewallu a přiřadit dodatečnou IP adresu pro rozhraní loopback (lokální smyčku) a zablokovat nežádoucí provoz. Vždy je to jen o tom, co nejlépe vyhovuje právě vašim potřebám a okolnostem.