1 of 20

Firewalling�

2 of 20

Key Security Concepts

3 of 20

Firewalling

4 of 20

A che serve un firewall classico?

  • Firewall: device di filtraggio del traffico da e per un certo perimetro

    • Rende accessibili dall’esterno solo i servizi che veramente vogliamo esporre
    • Impedisce agli utenti della rete di usare determinate applicazioni
    • Protegge dagli attacchi DoS e DDoS
    • Evita che i server (o i client) interni provochino attacchi a terzi
    • Minimizza i danni se si perde il controllo di un server
      • Evitare l’effetto ‘domino’

5 of 20

A cosa NON serve

  • Una volta all’interno di un dominio di collisione
    • Tutti i dati possono essere falsificati
    • Tutto si può ‘sniffare’
    • Tutto si può ‘spoofare’
    • E’ facile creare un attacco man-in-the-middle (hijacking)
    • udp non è sicuro (e tcp anche)
    • dns non è sicuro, smtp non è sicuro ☹ ☹
    • Problemi di confidenzialità e autenticità
      • I firewall non vi difendono dai cavalli di troia e non garantiscono l’autenticità e sicurezza della trasmissione
      • I firewall non vi difendono da attacchi di ingegneria sociale e attacchi “fisici” alla rete.

6 of 20

Terminologia

  • Personal Firewall
    • A difesa di un unico host

  • Firewall
  • Web Application Firewall
  • IDS/IPS (Intrusion detection system)
  • L7 Firewall, Nextgen FW, SIEM ecc.

7 of 20

Tipi di firewall

  • Stateless: filtrano pacchetto per pacchetto
  • Stateful: conservano memoria del traffico precedente (connessioni, ecc.) e ne fanno uso per decidere il destino di un pacchetto
    • IPTABLES è stateful

8 of 20

Tipica configurazione con firewall

DMZ

LAN (REDAREA)

Mondo esterno

10.1.1.0/24

10.1.0.0/30

10.1.2.0/24

eth1

eth2

eth0

9 of 20

Esigenze tipiche aziendali

  • DNS, Mail, HTTP, Proxy server in DMZ, Altri servizi
    • Accessibili dall’esterno
    • Alternativa: DMZ in cloud esterna
  • Server e pc aziendali in LAN (REDAREA)
    • Normalmente possono aprire connessioni verso l’esterno, ma non viceversa

10 of 20

Funzionamento di IPTables

  • Code (dette anche ‘catene’)
  • Ogni catena ha un insieme di regole che dicono quali pacchetti possono transitare in avanti

11 of 20

Definizione delle policy�

  • Impostare la policy di default:

iptables –P catena politica

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

politica=DROP, REJECT, ACCEPT

  • Vedere il contenuto delle catene:

IPTABLES -L

12 of 20

Prime catene

Come creare una nuova catena:

iptables –N nomecatena

iptables -N landmz

#dalla scheda di rete eth0 alla scheda di rete eth1

iptables -N laninet

#dalla scheda di rete eth0 alla scheda di rete eth2

iptables -N dmzinet

#dalla scheda di rete eth1 alla scheda di rete eth2

iptables -N dmzlan

#dalla scheda di rete eth1 alla scheda di rete eth0

iptables -N inetdmz

#dalla scheda di rete eth2 alla scheda di rete eth1

iptables -N inetlan

#dalla scheda di rete eth2 alla scheda di rete eth0

13 of 20

Prime catene

Aggiungere una nuova regola

iptables –A nomecatena condizioni –j decisione

decisione=un nome di catena, oppure DROP, REJECT, ACCEPT

iptables -A FORWARD -i eth1 -o eth2 -j landmz

iptables -A FORWARD -i eth1 -o eth0 -j laninet

iptables -A FORWARD -i eth2 -o eth0 -j dmzinet

iptables -A FORWARD -i eth2 -o eth1 -j dmzlan

iptables -A FORWARD -i eth0 -o eth2 -j inetdmz

iptables -A FORWARD -i eth0 -o eth1 -j inetlan

14 of 20

Dalla LAN alla DMZ

Tipi di condizione

  • -i nomescheda
  • -o nomescheda
  • -s subnet o indirizzo mittente
  • -d subnet o indirizzo destinatario
  • --dport porta destinazione
  • --sport porta sorgente
  • -p protocollo
  • ! nega la condizione
  • altre...

iptables -A landmz ! -s 10.1.1.0/24 -j DROP

iptables -A landmz ! -d 10.1.2.0/24 -j DROP

iptables -A landmz -p tcp -d server.web --dport http -j ACCEPT

iptables -A landmz -p tcp -d server.smtp --dport smtp -j ACCEPT

iptables -A landmz -p tcp -d server.pop3 --dport pop3 -j ACCEPT

iptables -A landmz -p tcp -d server.proxy --dport webcache –j ACCEPT

iptables -A landmz -p tcp -d server.dns --dport domain -j ACCEPT

iptables -A landmz -p udp -d server.dns --dport domain -j ACCEPT

15 of 20

Dalla DMZ alla LAN

Regole stateful

opzione –m state

--state [ESTABLISHED,RELATED,NEW,INVALID]

Regole non stateful

opzioni per controllare i flag

--syn se il segmento ha i flag SYN=1, ACK=0, RST=0

--tcp-flags FLAG_da_Controllare FLAG_a_1

Esempio

--tcp-flags SYN,ACK ACK

vero per segmenti con SYN=0,ACK=1 (RST, URG, PSH possono valere qualsiasi cosa)

iptables -A dmzlan ! -s 10.1.2.0/24 -j DROP

iptables -A dmzlan ! -d 10.1.1.0/24 -j DROP

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

oppure

iptables -A dmzlan –p tcp ! -–syn -j ACCEPT

oppure

iptables -A dmzlan –p tcp –tcp-flags ! SYN,ACK,RST SYN -j ACCEPT

iptables -A dmzlan -p tcp -j REJECT --reject-with tcp-reset

16 of 20

Dalla LAN ad Internet

iptables -A laninet ! -s 10.1.1.0/24 -j DROP

iptables -A laninet -p tcp --dport ftp -j ACCEPT

iptables -A laninet -p tcp --dport http -j ACCEPT

iptables -A laninet -p tcp --dport https -j ACCEPT

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

iptables -A laninet -p tcp -j REJECT --reject-with tcp-reset

Da Internet alla LAN

iptables -A inetlan ! –d 10.1.1.0/24 -j DROP

iptables -A inetlan –s 10.1.2.0/24 -j DROP

iptables -A inetlan –s 10.1.1.0/24 -j DROP

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

iptables -A inetlan -p tcp -j REJECT --reject-with tcp-reset

17 of 20

DMZ<->Internet

Da Internet alla DMZ

iptables -A inetdmz -s 10.1.1.0/24 -j DROP

iptables -A inetdmz -s 10.1.2.0/24 -j DROP

iptables -A inetdmz -p tcp -d nostro.server.web --dport http -j ACCEPT

iptables -A inetdmz -p tcp -d nostro.server.smtp --dport smtp -j ACCEPT

iptables -A inetdmz -p tcp -d nostro.dns --dport domain -j ACCEPT

iptables -A inetdmz -p udp -d nostro.dns --dport domain -j ACCEPT

iptables -A inetdmz -p tcp -d nostro.ftpserver --dport ftp -j ACCEPT

iptables -A inetdmz -m state --state ESTABLISHED,RELATED –j ACCEPT

iptables -A inetdmz -p tcp -j REJECT --reject-with tcp-reset

Da DMZ a Internet

iptables -A dmzinet -s ! 10.1.2.0/24 -j DROP

iptables -A dmzinet -p tcp -s nostro.server.smtp --dport smtp -j ACCEPT

iptables -A dmzinet -p udp -s nostro.server.dns --dport domain -j ACCEPT

iptables -A dmzinet -p tcp -s nostro.server.dns --dport domain -j ACCEPT

iptables -A dmzinet -p tcp -s nostro.server.proxy --dport http -j ACCEPT

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

iptables -A dmzinet -p tcp -j REJECT --reject-with tcp-reset

18 of 20

Traffico da e per il Firewall

Modulo limit

Per limitare il numero di connessioni nel tempo. Si può usare anche per limitare i problemi di SYN flood.

Opzioni per ICMP

--icmp-type tipo, dove tipo può essere echo-request, echo-reply, network-unreachable, ecc...

iptables -A INPUT -m limit --limit 10/min -p tcp --syn --dport ssh -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

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

iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

19 of 20

Performance

  • Fondamentale gestire l’ordine delle regole
    • «ESTABLISHED –j ACCEPT» in cima!

20 of 20

Mascheratura (NAT)

  • Si fa uso delle catene PREROUTING e POSTROUTING

  • iptables -t nat -A PREROUTING -p tcp -i eth0 --dport http -j DNAT --to nostro.proxy.server
  • iptables -t nat -A POSTROUTING -o eth2 -s 192.168.200.0/24 -j SNAT --to 123.45.68.1