Il web filter non è un blocco unico: in FortiOS è fatto di tre componenti che lavorano in sequenza. Il web content filter blocca le pagine che contengono parole o pattern che indichi tu, l’URL filter agisce su URL e pattern di URL, e il servizio FortiGuard Web Filtering aggiunge le categorie. L’ordine di applicazione non è negoziabile ed è quello: prima URL filter, poi FortiGuard, poi content filter, poi web script filter, infine la scansione antivirus. Tenere a mente questa catena spiega metà degli esiti che a prima vista sembrano sbagliati.
Il feature set deve combaciare con la policy
È la regola che manda a vuoto più configurazioni. Il feature set del profilo web filter — Flow-based o Proxy-based — deve corrispondere all’inspection mode della firewall policy che lo applica. Un profilo flow-based va usato con una policy flow-based, punto. Se in un profilo non vedi nemmeno il selettore Feature set, non è un bug: va abilitato.
config system settings
set gui-proxy-inspection enable
end
Nella GUI le opzioni disponibili solo in proxy sono contrassegnate da un’icona P, quindi hai un modo veloce per capire cosa stai perdendo passando a flow.
Serve anche ricordare che nella firewall policy vanno selezionati due profili, non uno: quello di web filter e un profilo di SSL/SSH inspection, anche solo certificate-inspection. Senza il secondo, sul traffico HTTPS il web filter ha ben poco da leggere.
FortiOS parte con tre profili web filter precaricati: default, monitor-all (flow-based, monitora e logga tutti gli URL visitati) e wifi-default. Puoi personalizzarli o crearne di tuoi.
Le sei azioni delle categorie FortiGuard
Il servizio FortiGuard classifica i siti e restituisce una categoria: quando la funzione è attiva, il daemon WAD invia l’URL al server FortiGuard più vicino e riceve la categoria o il rating. Serve una licenza FortiGuard valida.
Su ogni categoria puoi impostare sei azioni. Allow permette l’accesso senza log. Monitor permette e registra, ed è l’unica azione — insieme a Warning e Authenticate — su cui puoi appoggiare una quota. Block nega e mostra un replacement message. Warning mostra un avviso che l’utente può superare proseguendo; l’intervallo di warning è il tempo dopo il quale l’avviso ricompare. Authenticate obbliga l’utente ad autenticarsi sul FortiGate prima di accedere. Disable rimuove la categoria dal profilo ed è disponibile solo per le categorie locali o remote, dal menu contestuale.
Il blocco di una categoria in CLI passa dal suo ID numerico, non dal nome:
config webfilter profile
edit "webfilter"
config ftgd-wf
config filters
edit 1
set category 52
set action block
next
end
end
next
end
Per ricavare l’ID della categoria usa get webfilter categories. Nell’esempio la 52 è Information Technology.
La precedenza fra categorie locali, remote e FortiGuard
Un URL può appartenere a più categorie attive contemporaneamente, e allora conta l’ordine di precedenza: categoria locale, poi categoria remota (i threat feed), infine categoria FortiGuard integrata. Se un URL è configurato come categoria locale segue solo il comportamento della categoria locale e ignora le altre. È il meccanismo con cui il web rating override sovrascrive la classificazione FortiGuard di un sito, ed è anche il primo posto da guardare quando un sito si comporta diversamente da come la sua categoria FortiGuard farebbe supporre.
Cosa perdi davvero in flow-based
La tabella di confronto tra le modalità è materia d’esame. Sul web filter, in flow mode:
- la Category Usage Quota non esiste: le quote sono disponibili solo in ispezione proxy. Sono giornaliere, si calcolano separatamente per ogni utente e si azzerano a mezzanotte;
- il Web Profile Override non è disponibile;
- delle Proxy Option restano solo HTTP POST Action e Remove Cookies;
- le categorie locali e remote non supportano le azioni warning e authenticate, e non possono essere sottoposte a override.
Restano invece pienamente disponibili in entrambe le modalità il filtro per categoria FortiGuard, lo Static URL Filter, le Rating Option e la sezione Search Engines. Anche il safe search su Google, Yahoo, Bing e Yandex funziona in flow; l’opzione Restrict YouTube Access compare nella GUI quando safe-search è impostato su header, perché agisce iniettando l’header YouTube-Restrict. Il logging di tutte le chiavi di ricerca, invece, è proxy-based.
Verificare che il profilo stia lavorando
Non fidarti della configurazione: guarda il log. Un blocco per categoria produce una voce UTM con eventtype="ftgd_blk", e i campi che ti servono per la diagnosi sono cat, catdesc, action, ratemethod e profile.
execute log filter category utm-webfilter
execute log display
Se il campo ratemethod dice domain sai che la valutazione è avvenuta sul nome a dominio. Se cat non è quella che ti aspettavi, prima di riconfigurare il profilo verifica che non ci sia un rating override locale a monte, e controlla la connettività verso FortiGuard: senza licenza attiva o senza raggiungibilità, il servizio restituisce un rating error e le categorie smettono semplicemente di applicarsi.
execute ping service.fortiguard.net
execute ping update.fortiguard.net