Quasi tutto il traffico in uscita è cifrato, e un profilo antivirus applicato a una sessione TLS che il FortiGate non apre non trova niente. Da qui la domanda che l’esame ripropone in mille varianti: quanto in profondità stai guardando. Le due risposte possibili sono certificate inspection, che si ferma agli header fino al livello SSL/TLS, e full SSL inspection, dove il FortiGate si sostituisce al destinatario della sessione, decifra, ispeziona, ricifra e inoltra al destinatario vero.
I quattro profili preinstallati
FortiOS 7.6 arriva con quattro profili SSL/SSH: certificate-inspection, deep-inspection, no-inspection e custom-deep-inspection. I primi tre sono in sola lettura e si possono solo clonare; il quarto è quello pensato per essere modificato.
La conseguenza pratica la incontri subito. Il profilo certificate-inspection di fabbrica ascolta solo sulla porta 443: se il server usa la 8443 devi clonarlo e aggiungere la porta al campo HTTPS (443,8443), oppure attivare Inspect all ports. Non esiste il modo di modificare il profilo originale.
Nel profilo, Enable SSL Inspection of distingue i due mestieri: Multiple Clients Connecting to Multiple Servers è il caso in uscita, con destinazione ignota, ed è quello che ti serve qui; Protecting SSL Server serve invece in ingresso, verso un server dietro il FortiGate del quale carichi il certificato reale. Sotto, Inspection method sceglie fra SSL Certificate Inspection e Full SSL Inspection.
Cosa si accende solo con la full inspection
Diverse opzioni compaiono o cambiano significato passando alla full inspection, e sono materiale da domanda secca.
Untrusted SSL certificates ha tre valori: Allow (default), Block e Ignore. Ignore vale solo in full inspection e ri-firma come attendibile un certificato server non attendibile; impostato in GUI su un profilo di certificate inspection non ha effetto e non viene nemmeno salvato. Sono esclusive della full inspection anche Enforce SSL cipher compliance, Enforce SSL negotiation compliance e RPC over HTTPS, oltre alla sezione Exempt from SSL Inspection e a DNS over QUIC.
HTTP/3 si comporta di conseguenza: con certificate inspection, o con HTTPS disabilitato, resta forzato a Bypass e non è modificabile; solo con full inspection puoi scegliere fra Inspect, Bypass e Block.
Le esenzioni meritano attenzione perché non sono un ripiego ma una scelta di progetto. Reputable Websites usa la allowlist FortiGuard dei siti comunemente attendibili; le Web Categories partono con Finance and Banking, Health and Wellness e Personal Privacy già inserite, proprio perché sono quelle in cui le applicazioni pretendono un certificato specifico; e gli Addresses accettano oggetti indirizzo la cui interfaccia sia any. Log SSL exemptions ti dice poi che cosa hai effettivamente saltato.
Certificati non validi e anomalie
Common Options è il blocco che decide come reagire a un certificato server che non torna. Con Invalid SSL certificates impostato su Custom compaiono quattro categorie separate: certificati scaduti (default block), revocati (default block), la cui validazione va in timeout (allow con certificate inspection, Keep Untrusted & Allow con deep inspection) e la cui validazione fallisce (default block). In deep inspection le azioni disponibili diventano Keep Untrusted & Allow, Block e Trust & Allow.
Server certificate SNI check è l’altra voce che conviene ricordare: con Enable, se l’SNI non combacia con CN o SAN del certificato restituito, il FortiGate usa il CN per il filtro URL; con Strict chiude la connessione; con Disable il controllo non viene fatto.
Log SSL anomalies è attivo di default e scrive nel log UTM, sottotipo SSL. È il primo posto in cui guardare quando un sito «funzionava ieri».
Porte, versioni e le differenze fra flow e proxy
Qui si concentrano le trappole. Il protocol port mapping funziona solo con l’ispezione proxy-based: in flow-based tutte le porte vengono ispezionate a prescindere da come hai compilato quei campi. Nel dettaglio, con deep inspection in modalità proxy, se Inspect all ports è disattivato vengono esaminate solo le porte elencate; in modalità flow vengono esaminate tutte comunque. Con la sola certificate inspection, invece, flow e proxy si comportano allo stesso modo.
Anche il controllo di versione TLS è proxy-only: la flow-based non lo supporta.
config firewall ssl-ssh-profile
edit "custom-deep-inspection"
config https
set min-allowed-ssl-version tls-1.2
set unsupported-ssl-version block
end
next
end
A livello globale set strong-crypto enable porta la versione minima ammessa a TLS 1.1 come default. Una sessione che scende sotto il minimo viene bloccata, salvo scelta contraria.
SSH e Encrypted Client Hello
SSH deep scan è dentro lo stesso profilo, con SSH port impostabile su Any — cerca pacchetti SSH su qualunque porta, al prezzo di più lavoro per l’apparato — oppure su una porta specifica. La scansione dei file trasferiti in SCP e SFTP richiede l’ispezione proxy-based e non è disponibile sui modelli con 2 GB di RAM o meno; il blocco vero e proprio si configura a parte.
config ssh-filter profile
edit "no-scp"
set block scp
set log scp
next
end
Su ECH il comportamento è netto e va saputo nella direzione giusta: in deep inspection il FortiGate rimuove sempre l’estensione ECH, costringendo di fatto il browser a una connessione TLS in chiaro nel ClientHello. Bloccare o consentire ECH in modo esplicito, al contrario, si configura solo su un profilo in certificate inspection, dove l’SNI in chiaro è l’unica cosa su cui puoi filtrare.