Dipende dalla tua definizione di firewall, e tu sei la definizione di run .
L'attuale intercettazione del pacchetto viene eseguita nello spazio del kernel, prima che i pacchetti vengano visti da qualsiasi programma utente. Lo stack di rete si trova nel kernel, quindi anche il filtro su quello stack di rete deve essere nel kernel. Potresti creare uno stack di rete in userspace, ma è molto lavoro senza vantaggi reali, e nessuno lo fa più.
Quindi, con questa definizione, tutti i firewall moderni funzionano nello spazio del kernel.
Tranne che esistono programmi userspace per la gestione delle regole del firewall. La parola iptables si riferisce a volte al componente "netfilter" del kernel, e anche un programma userspace chiamato iptables
per la gestione delle regole di netfilter. Ci sono storie simili per altri sistemi operativi.
Ma diventa ancora più fangoso perché la maggior parte dei sistemi operativi moderni supporta la possibilità di inviare pacchetti a uno strumento usespace per ispezione, modifica, ecc. Così mentre l'intercettazione iniziale avviene nel kernel, il kernel esternalizza parte per le attività del firewall per i programmi dello spazio utente.
E ancora meno chiaro quando si tratta di ciò che si qualifica come "firewall". Da un punto di vista purista, un firewall viene eseguito a livello 3 † e può eseguire il monitoraggio dello stato di base per TCP e può anche eseguire la scansione delle associazioni di porte FTP, ma non sta analizzando le richieste HTTP. Questo non vuol dire che una scatola che hai designato come "il firewall" non possa farlo, comunque. Non è raro associare un dispositivo "firewall" con un proxy HTTP trasparente e causare tutti i tipi di mal di testa per gli utenti nel nome della sicurezza. Questo, ovviamente, è sicuramente non nel kernel. Questo non vuol dire che non potrebbe essere . Ma nessuno lo fa.
† : oltre a iptables , c'è anche ebtables , che fa la stessa cosa ma per i frame ethernet.