[OpenBSD]

[Precedente: Liste e Macro] [Indice] [Successivo: Filtraggio pacchetti]

PF: Tabelle


Indice


Introduzione

Una tabella è usata per contenere un gruppo di indirizzi IPv4 e/o IPv6. Le verifiche su una tabella sono molto più veloci e consumano meno memoria rispetto a una lista. Ad esempio la verifica di una tabella con 50.000 indirizzi richiede solo un pò più di tempo rispetto a una che ne contiene solo 50. Le tabelle possono essere usate nei seguenti modi:

Le tabelle sono create sia in pf.conf oppure utilizzando pfctl(8).

Configurazione

In pf.conf, le tabelle sono create usando la direttiva table. Per ogni tabella possono essere specificati i seguenti attributi:

Esempio:

table <goodguys> { 192.0.2.0/24 }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, \
   10.0.0.0/8 }
table <spammers> persist

block in on fxp0 from { <rfc1918>, <spammers> } to any
pass  in on fxp0 from <goodguys> to any

Gli indirizzi possono essere specificati usando anche la negazione (o "not") come ad esempio:

table <goodguys> { 192.0.2.0/24, !192.0.2.5 }

La tabella goodguys sarà costituita da tutti gli indirizzi della network 192.0.2.0/24 con l'eccezione di 192.0.2.5.

Da notare che i nomi delle tabelle sono sempre racchiusi da < >.

Le tabelle possono anche essere composte da file di testo contenenti liste di indirizzi IP e network:

table <spammers> persist file "/etc/spammers"

block in on fxp0 from <spammers> to any

Il file /etc/spammers conterrebbe una lista di indirizzi IP e/o blocchi di network CIDR disposti uno per linea. Ogni linea che inizia con # è considerata un commento e viene ignorata.

Modifiche con pfctl

Le tabelle possono essere modificate in ogni istante usando pfctl(8). Ad esempio per aggiungere una network alla tabella <spammers> creata precedentemente:
# pfctl -t spammers -T add 218.70.0.0/16

Questo comando consente inoltre di creare la tabella <spammers> se non dovesse esistere. Per vedere la lista degli indirizzi di una tabella:

# pfctl -t spammers -T show
L'argomento -v può essere usato con -Tshow per mostrare statistiche riferite a ogni parametro della tabella: To remove addresses from a table:
# pfctl -t spammers -T delete 218.70.0.0/16

Per ulteriori informazioni su come modificare le tabelle con pfctl, vedere pfctl(8).

Definire gli indirizzi

Gli host possono essere identificati da un indirizzo IP oppure da un hostname. Quando il nome dell'host viene risolto in un indirizzo IP, il risultante indirizzo IPv4 o IPv6 si sostituisce all'hostname nella tabella. Gli indirizzi IP possono anche essere inseriti in una tabella specificando un nome di interfaccia valido oppure utilizzando la keyword self. La tabella conterrà quindi tutti gli indirizzi IP assegnati a quell'interfaccia o all'host (inclusi gli indirizzi di loopback).

In una tabella non è consentito specificare gli indirizzi 0.0.0.0/0 e 0/0. L'alternativa è di fare l'hard code di quell'indirizzo oppure utilizzare una macro.

Corrispondenza di indirizzo

Una regola di firewall che fa riferimento a una tabella verifica ogni indirizzo della tabella per trovare una corrispondenza. Questo consente di creare tabelle come la seguente:
table <goodguys> { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }

block in on dc0 all
pass  in on dc0 from <goodguys> to any

L'indirizzo sorgente di ogni pacchetto in ingresso a dc0 sarà confrontato con gli indirizzi della tabella <goodguys>:

[Precedente: Liste e Macro] [Indice] [Successivo: Filtraggio pacchetti]


[back] www@openbsd.org
$OpenBSD: tables.html,v 1.3 2008/02/22 10:12:26 tobias Exp $