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