PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo ([email protected]) per.

33

Transcript of PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo ([email protected]) per.

Page 1: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.
Page 2: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

PF ed OpenBSD:Tecniche di base

Intervento tenuto da

Gabriele Biondo([email protected])

per

Page 3: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

id (sostituisce il vecchio, deprecato whoami)

GABRIELE BIONDO

•Amministratore di sistema per più facoltà dell’Università di Bologna

•Tecnico coinvolto nel progetto Unisys Hotline

•Formatore per Corsi del Fondo Sociale Europeo

•Collaboratore con OpenBEER

•Certificato ISECOM OPST

Interessi

•Firewalling e sicurezza di rete

•Modelli matematici e ottimizzazione di algoritmi

•Programmazione in C e Perl

Page 4: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Le domande fondamentali

Perché OpenBSD

•Sistema “sicuro per default”, facilmente hardenizzabile

•Sistema Free (o quasi)

•Sistema OpenSource

•Sistema in continua evoluzione

•Sistema veramente stabile

OpenBSD risulta essere la piattaforma di partenza ideale per costruire un firewall

Page 5: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Le domande fondamentali

Perché PF

•Grammatica veramente semplice

•Sistema di regole molto pratico

•Configurazione modificabile a runtime

•Stabilità assoluta del firewall

•Caratteristiche avanzatissime (es: scrubbing)

•Abbondanza di documentazione free o a basso costo

PF è un software assai potente, che offre caratteristiche presenti soltanto in prodotti commerciali di notevole caratura,

ad un prezzo esiguo.

Page 6: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Le domande fondamentali

Chi usa OpenBSD + PF

•Adobe Systems

•INFN (Istituto Nazionale Fisica Nucleare) di Firenze

•Azienda Ospedaliera “Carlo Poma” di Mantova

Solo tre nomi, la cui rilevanza dovrebbe far pensareLa lista potrebbe essere arbitrariamente allungata…

Page 7: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

PF – questo sconosciuto

Dove risiede PF

PF è un pacchetto integrato nel Kernel di OpenBSD,A partire dalla versione 3.0 in poi.

Page 8: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

PF – questo sconosciuto

Cosa è PF

PF è un programma – ad un input costituito da un file di regoleed un traffico di rete, associa un output costituito da un file di log

e dal comportamento del nuovo traffico “shaped”

Page 9: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Il file di configurazione di PF

•/etc/pf.conf

•Composto di più sezioni

•L’ordine delle sezioni è prefissato, ma modificabile

•Le regole vengono valutate in sequenza

Page 10: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Le sezioni di pf.conf

1. macro

2. tabelle

3. opzioni

4. regole di scrub

5. regole di queuing

6. regole di redirezione/NAT

7. regole di filtraggio

Page 11: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

pf.conf – un esempio di configurazione

Supponiamo di trovarci nella seguente condizione:

•Macchina intel compatibile•2 schede di rete Realtek

rl0:•Connessa alla rete interna (192.168.1.0/24)•ip: 192.168.1.1•web server: 192.168.1.2•mail server: 192.168.1.3

rl1:•Connessa alla WAN•ip fisso: aaa.bbb.ccc.ddd/28•Connessa ad un router che lega la rete ad una parte non protetta dal firewall e ad internet

Page 12: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Modelliamo la rete interna con delle semplici macro

# MACRO# Interfaccia di rete interna

int_if = “rl0”int_ip=“192.168.1.1”int_net=“192.168.1.0/24”

# Interfaccia di rete esternaext_if = “rl1”ext_ip=“aaa.bbb.ccc.ddd”ext_net=“aaa.bbb.ccc.ddd/28”

# altre macro utilimebserver=“192.168.1.2”mailserver=“192.168.1.3”

Page 13: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Anatomia generale di una regola:

Page 14: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

VERBI

pass

nat

block

rdr

log

Fa passare il pacchetto

Specifica come fare NATting

Blocca il pacchetto

Specifica come “incrociare” le porte

Specifica di scrivere la entry sul file di log

Page 15: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

DIREZIONI

Page 16: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

SORGENTE/DESTINAZIONE

Indirizzo IPv4/IPv6 singolo:192.168.0.33/32FEC0:A702:0000:0000:0000:448A:0000:0005

Sottorete: 192.168.0.0/28FEC0:A702::::448A::0005/64

Possibilità di aggiungere un servizio:192.168.1.10 port 80

Possibilità di specificare un protocollo:proto tcpproto {tcp,udp}

Page 17: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Le prime regole di default

Siamo ora in grado di potere scrivere le prime regole.

Come default, ammettiamo di tenere chiuso ogni tipo di comunicazione,da e verso l’esterno. Apriremo poi quello che decideremo utile.

block in allblock out all

Una policy migliore, sebbene costosa, potrebbe essere: block in log allblock out log all

Anche in questo caso, avremmo potuto utilizzare altre direttive che, peresempio, permettono di filtrare sul protocollo. Ciò va comunque oltre loscopo di questa presentazione.

Page 18: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione attuale

Il firewall ha isolato la LAN da internet.

Page 19: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Un paio di idee…

In primo luogo, è necessario impostare i settaggi del natting:

nat on $ext_if from $int_net to any ->($ext_if)

Poi è importante ridirigere agli host giusti le chiamate www e smtp:

rdr on $ext_if proto tcp from any to $ext_ip \port www -> $webserver port www

rdr on $ext_if proto smtp from any to $ext_ip \port smtp -> $mailserver port smtp

Page 20: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Un paio di idee…

In primo luogo, vorremo aprire le connessioni provenienti da internet edirette al nostro server di posta ed al server web:

pass in on $ext_if proto tcp from any to $webserver \port www keep state

pass in on $ext_if proto tcp from any to $mailserver \port smtp keep state

Page 21: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione attuale

Tutte le chiamate al web ed al mail server provenienti dall’esterno vengono ora soddisfatte

Page 22: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Apriamo le porte…

Vogliamo permettere ai nostri utenti di connettersi, da dentro la rete a qualsiasihost presente su internet

pass in on $ext_if from $int_net to any keep state

pass out in $ext_if from $int_net to $ext_net \modulate state

Page 23: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione attuale

La situazione attuale è più complicata.

•Il firewall permette agli host interni alla rete di connettersi a qualsiasi servizio di qualsiasi host presente su internet

•Il firewall rifiuta connessioni provenienti da internet, eccetto quelle dirette al mail server ed al server web.

•Il firewall permette la connessione agli host nella rete esterna.

Una nota – questa configurazione è altamente insicura ed è presentata quisoltanto per motivi concernenti l’illustrazione del funzionamento delle regolein pf. Esplicitamente, sottolineiamo di non implementare questa configurazione nelproprio laboratorio, se non per fini didattici.

Page 24: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione finale

Prendendo tutte le regole viste sinora, e mettendole insieme, abbiamo unfile /etc/pf.conf teoricamente funzionante.

Page 25: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione finale

# MACRO# Interfaccia di rete internaint_if = “rl0”int_ip=“192.168.1.1”int_net=“192.168.1.0/24”

# Interfaccia di rete esternaext_if = “rl1”ext_ip=“aaa.bbb.ccc.ddd”ext_net=“aaa.bbb.ccc.ddd/28”

# altre macro utilimebserver=“192.168.1.2”mailserver=“192.168.1.3”

scrub in all

Page 26: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione finale (continua)

scrub in all

#natting e redirezionamentonat on $ext_if from $int_net to any ->($ext_if) rdr on $ext_if proto tcp from any to $ext_ip \ port www -> $webserver port www rdr on $ext_if proto smtp from any to $ext_ip \ port smtp -> $mailserver port smtp

Page 27: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Configurare PF

Situazione finale (continua)

block in log all block out log all

pass in on $ext_if proto tcp from any to $webserver \port www keep state

pass in on $ext_if proto tcp from any to $mailserver \port smtp keep state

pass in on $ext_if from $int_net to any keep state

pass out in $ext_if from $int_net to $ext_net \modulate state

antispoof for $int_ifantispoof for $ext_if

Page 28: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Risorse aggiuntive

web

www.openbsd.org

http://www.benzedrine.cx/pf.html

www.i-nfinity.com

www.openbeer.it

Page 29: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Risorse aggiuntive

web

www.openbsd.org

http://www.benzedrine.cx/pf.html

www.i-nfinity.com

www.openbeer.it

Page 30: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Risorse aggiuntive

Libri che aiutano

Page 31: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Risorse aggiuntive

Libri che aiutano

Page 32: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Risorse aggiuntive

Libri che aiutano

Page 33: PF ed OpenBSD: Tecniche di base Intervento tenuto da Gabriele Biondo (gbiondo@i-nfinity.com) per.

Loose Leaves

Ringraziamenti

Matteo Cantoni, aka goony

Franco e tutto lo staff di Proxima Solutions, Rimini

Ilary Airoldi

Lo staff del webbit

Me stesso e la mia famiglia

E per Elisa, che mi ha dimostrato che la saggezza non ha età:“Ci sono occasioni in cui un semplice ‘grazie’ non è abbastanza”