Filtraggio Pacchetti e Firewalls

Difese Perimetrali e in Profondità

Perimprof

Difesa Perimetrale:

  • Firewall Tradizionale
  • Sopprimere tutti gli accessi alternativi (smartphone, ecc.)
  • Monitorare e persegure le violazioni

Difesa in Profondità:

  • Difendere ogni macchina
  • Logging e filtri addizionali
  • Gli attacchi possono provenire dall’interno
  • Uso pervasivo di tecniche di crittografazione
  • Segmentazione rete interna con switch

Firewall Perimetrale

Insieme di funzionalità coordinate che separano l’Intranet dall’Internet.

Sistema di difesa tra Intranet e Internet.

Composto di più ruoli:

Fireruoli

Implementato da piu’ piattaforme (una al limite).

Schema logico di un Firewall

Fire-schema

Tabella di Filtraggio Pacchetti

Fire-tab

Gateway di Circuito

Gw-circ

Router Interno

Separa indirizzi IP validi da interni.

Può compiere ulteriore filtraggio pacchetti

Può implementare Network Address Translation (NAT).

Rout-int

Proxy Web in Uscita

Proxy-web

Relay di Posta

Relay-mx

DNS

Dns-fw

Firewall di Linux

Tuning del firewall per la difesa

Sistemare i parametri di tuning nel file di configurazione /etc/sysctl.conf:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.ip_forward = 1

Tabelle iptables

iptables -t filter ...

  • Default
  • Filtraggio in ingresso
  • Nessuna variazione di campi in uscita

iptables -t nat ...

  • Filtraggio in ingresso
  • Variazione in uscita dei campi IP(mittente), IP(destinatario),
  • Porta(mittente), Porta(destinatario)

iptables -t mangle ...

  • Filtraggio in ingresso
  • Variazione in uscita di qualsiasi campo

iptables -t filter

Fw-filter

Default.

Chains predefinite (non si possono eliminare):

  • INPUT - pacchetti destinati a questo host
    • Firewall personale - Ingress filtering
  • OUTPUT - pacchetti in partenza da questo host
    • Egress filtering
  • FORWARD - pacchetti in transito da questo router
    • Firewall perimetrale

Operazioni su una Chain

iptables [-t filter] ...
  • -A chain regola -j destinazione - append
  • -I chain regola -j destinazione - insert
  • -D chain numero - delete
  • -R chain numero regola -j destinazione - replace
  • -L [-v] [chain] - list
  • -F [chain] - flush
  • -N nuovachain - crea nuova chain
  • -X nuovachain - rimuovi chain
  • -E vecchiachain nuovachain - rinomina chain
  • -P chain destinazione - policy di default

Destinazioni finali - nessun ulteriore processamento:

  • ACCEPT - il pacchetto passa
  • REJECT - non passa, è inviato un messaggio al mittente di tipo ICMP administratively-prohibited
  • DROP - non passa e non è inviato alcun messaggio

Destinazioni non finali:

  • LOG - registrato a syslog
  • Nuovachain - alla chain nuova come subroutine
  • RETURN - ritorna alla chain chiamante

Solo ACCEPT e DROP si possono usare come policy di default (opzione -P)

Esempi di Regole

  • -s 180.24.36.0/24 - rete sorgente
  • -d 10.0.0.0/8 - rete destinazione
  • -s ! 172.1.2.0/24
  • -d ! 192.168.1.32/27 - NOT reti specificate
  • -i eth0 - interfaccia di ingresso
  • -o eth1 - interfaccia di uscita
  • -p tcp | udp - protocollo
    • --sport 1024:65500 - porta sorgente (range)
    • --dport 23 - porta destinazione
  • -p icmp
    • --icmp-type 0 - tipo di messaggio ICMP

Regole non specificate valgono ANY | EVERYWHERE

Policy di Default

iptables -t filter -P chain ACCEPT

  • Blacklist: tutto è accettato tranne il traffico descritto dalle regole del chain
  • Ogni regola del chain ha destinazione DROP o REJECT
  • Strategia deprecata

iptables -t filter -P chain DROP

  • Whitelist: tutto è negato tranne il traffico descritto dalle regole del chain
  • Ogni regola del chain ha destinazione ACCEPT
  • Strategia favorita

Firewall Stateless

SSH con firewall personale stateless

Fw-pers-stateless

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT

SSH con firewall perimetrale stateless

Fire-peri-less

iptables -t filter -A FORWARD -d 192.168.1.7 -p tcp --dport 22 -j ACCEPT

iptables -t filter -A FORWARD -s 192.168.1.7 -p tcp --sport 22 -j ACCEPT

Firewall Stateful

Solo per le connessioni con TCP.

Tutte le connessioni già stabilite o in relazione ad esse, sono concesse.

Personale:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Perimetrale:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Le connessioni nuove concesse con più discriminazione:

iptables -A INPUT -s 10.10.10.0/24 -i eth1 -p tcp --dport 22 -m state --state NEW -j ACCEPT

Firewall e ICMP

Se eth0 è l'interfaccia esterna ed eth1 l'interfaccia interna del filtro personale:

iptables -A OUTPUT -p icmp --icmp-type 8 -o eth0 -j ACCEPT

“ping” in uscita

iptables -A INPUT -p icmp --icmp-type 0 -i eth0 -j ACCEPT

“pong” in ingresso

iptables -A INPUT -p icmp --icmp-type 3 -i eth0 -j ACCEPT

destination unreachable in ingresso

iptables -A INPUT -p icmp --icmp-type 11 -i eth0 -j ACCEPT

TTL exceeded in ingresso

Simili regole per il firewall perimetrale

Tabelle di Iptables

filter:

  • ACCEPT o DROP sulla base dei campi del pacchetto in ingresso
  • Nessun cambiamento ai campi del pacchetto

nat (Network Address Translation):

  • Cambiamento a uno o più dei campi: IP_mittente, IP_destinazione, Porta_mittente, Porta_destinazione
  • Eseguito prima del routing (PREROUTING) o dopo il routing (POSTROUTING)

mangle:

  • Cambiamento a uno o più campi qualsiasi
  • Potenzialmente potente e flessibile, poco usato
  • Eseguito prima del routing (PREROUTING) o dopo il routing (POSTROUTING)

Masquerade

Il Firewall si ‘maschera’ come mittente del pacchetto.

Deve sapere a chi va il pacchetto di ritorno.

Masquerade

Esempio:

iptables -A POSTROUTING -t nat -o eth0 -s 192.168.1.0/24 -d 0/0 -j MASQUERADE

Iptables Flowchart

Iptables-flow