Libero
Avanti Indietro Indice

6. Nuovi match IPv6 per netfilter

In questo capitolo si cercherà di spiegare come utilizzare i nuovi match realizzati per netfilter. Le patch appariranno secondo l'ordine alfabetico, avverto inoltre che non saranno spiegate quelle patch che corrompono le altre patch, ciò probabilmente sarà aggiunto successivamente.

In genere, per quanto riguarda i match, si possono ottenere delle informazioni utili su un particolare modulo utilizzando:

# ip6tables -m match_che_vuoi_usare --help

Questo comando dovrebbe visualizzare il messaggio classico di aiuto di ip6tables e in aggiunta il messaggio di aiuto specifico per il match ``match_che_vuoi_usare''.

6.1 agr patch

Questa patch sviluppata da Andras Kis-Szabo <kisza@sch.bme.hu> aggiunge 1 nuovo match:

Stato attuale: pendente (2.4.19)

Questa patch può risultare di grande aiuto per le persone che utilizzano una schema di indirizzamento EUI-64 IPv6 per controllare i pacchetti in una LAN in base all'indirizzo di consegna.

Ad esempio, per redirigere i pacchetti che hanno un indirizzo EUI-64 corretto si utilizzi:

# ip6tables -N ipv6ok
# ip6tables -A INPUT -m eui64 -j ipv6ok
# ip6tables -A INPUT -s ! 3FFE:2F00:A0::/64 -j ipv6ok
# ip6tables -A INPUT -j LOG
# ip6tables -A ipv6ok -j ACCEPT

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ipv6ok     all      anywhere             anywhere           eui64
ipv6ok     all     !3ffe:2f00:a0::/64    anywhere
LOG        all      anywhere             anywhere           LOG level warning

Chain ipv6ok (2 references)

target     prot opt source               destination
ACCEPT     all      anywhere             anywhere

Questo match non presenta opzioni.

6.2 ahesp6 patch

Questa patch realizzata da Andras Kis-Szabo <kisza@sch.bme.hu> aggiunge un nuovo match che consente di selezionare un pacchetto in base al contenuto delle intestazioni ah ed esp. Nomi dei match:

Stato attuale: base, a me funziona

Ad esempio, in questo caso scarteremo tutti i pacchetti AH aventi SPI uguale a 500 e controlleremo il contenuto dei campi riservati dell'intestazione:

# ip6tables -A INPUT -m ah --ahspi 500 --ahres -j DROP

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           ah spi:500 reserved

Le opzioni supportate dal match ah sono le seguenti:

--ahspi [!] spi[:spi]

-> spi utilizzato per la selezione (intervallo)

--ahlen [!] length

-> dimensione di questa intestazione

--ahres

-> controlla il contenuto del campo reserved

Il match esp funziona esattamente come in IPv4:

# ip6tables -A INPUT -m esp --espspi 500 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           esp spi:500

Le opzioni supportate dal match esp sono:

--espspi [!] spi[:spi]

-> spi (intervallo)

In IPv6 questi match possono essere concatenati:

# ip6tables -A INPUT -m ah --ahspi 500 --ahres --ahlen ! 40 -m esp --espspi 500 -j DROP

# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           ah spi:500 length:!40 reserved esp spi:500

6.3 frag6 patch

Questa patch di Andras Kis-Szabo <kisza@sch.bme.hu> aggiunge un nuovo match che consente di selezionare un pacchetto in base al contenuto dell'intestazione fragmentation. Nome del match:

Stato attuale: base, a me funziona

Ad esempio, scartiamo tutti i pacchetti aventi un ID compreso tra 100 e 200 e tali che siano il primo frammento:

# ip6tables -A INPUT -m frag --fragid 100:200 --fragfirst -j DROP

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           frag ids:100:200 first

Le opzioni supportate dal match frag sono:

--fragid [!] id[:id]

-> seleziona in base all'id (o all'intervallo) della frammentazione.

--fraglen [!] length

-> seleziona in base alla dimensione totale dell'intestazione

--fragres

-> verifica il contenuto del campo reserved

--fragfirst

-> seleziona in base al primo frammento

--fragmore

-> più frammenti

--fraglast

-> ultimo frammento

6.4 ipv6header patch

Questa patch realizzata da Andras Kis-Szabo <kisza@sch.bme.hu> aggiunge un nuovo match che consente di selezionare un pacchetto in base alle intestazioni di estensione. Nome del match:

Stato attuale: iniziale, molto sperimentale

Ad esempio, per scartare i pacchetti che hanno intestazioni hop-by-hop, ipv6-route e un protocollo si utilizzi:

# ip6tables -A INPUT -m ipv6header --header hop-by-hop,ipv6-route,protocol -j DROP

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           ipv6header flags:hop-by-hop,ipv6-route,protocol

Per scartare i pacchetti aventi invece un'intestazione di estensione ipv6-route si utilizzi:

# ip6tables -A INPUT -m ipv6header --header ipv6-route --soft -j DROP

# ip6ptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           ipv6header flags:ipv6-route soft

Le opzioni supportate dal match ipv6header sono le seguenti:

[!]--header headers

-> Con questa opzione si possono indicare le intestazioni a cui si è interessati. I formati accettati sono:

--soft

-> Utile per specificare la modalità soft: il match eseguirà solo il controllo dell'esistenza dell'intestazione.

6.5 ipv6-ports patch

Questa patch sviluppata da Jan Rekorajski <baggins@pld.org.pl> aggiunge 4 nuovi match:

Stato attuale: incluso nel kernel

Questi nuovi match sono un porting delle versioni realizzate per IPv4, si veda la documentazione principale per i dettagli.

6.6 length patch

Questa patch realizzata da Imran Patel <ipatel@crosswinds.net> aggiunge un nuovo match che consente di effettuare una selezione di un pacchetto in base alla sua dimensione (questa patch è uno spudorato adattamento del match realizzato per IPv4 da James Morris <jmorris@intercode.com.au>).

Ad esempio, per scartare tutti i ping aventi una dimensione maggiore di 85 byte si utilizzi:

# ip6tables -A INPUT -p ipv6-icmp --icmpv6-type echo-request -m length --length 85:0xffff -j DROP

# ip6ptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       ipv6-icmp --  anywhere             anywhere           ipv6-icmp echo-request length 85:65535

Le opzioni disponibili per questo match sono le seguenti:

[!] --length length[:length]

-> Seleziona un pacchetto in base alla dimensione effettiva o all'intervallo di valori specificati (estremi inclusi).

I valori dell'intervallo non specificati sono sottointesi. Il valore minimo sottointeso è 0 mentre il valore massimo è 65535.

6.7 route6 patch

Questa patch realizzata da Andras Kis-Szabo <kisza@sch.bme.hu> aggiunge un nuovo match che consente di selezionare un pacchetto in base al contenuto della sua intestazione di routing.

Nome del match:

Stato attuale: base, a me funziona

Segue un esempio per scartare tutti i pacchetti con le seguenti caratteristiche: routing type 0, vicini all'ultimo hop (distante massimo 2 hop), routing path contenente ::1 e ::2 (ma non strettamente).

# ip6tables -A INPUT -m rt --rt-type 0 --rt-segsleft :2 --rt-0-addrs ::1,::2 --rt-0-not-strict -j DROP

# ip6tables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all      anywhere             anywhere           rt type:0 segslefts:0:2 0-addrs ::1,::2 0-not-strict

Le opzioni supportate dal match rt sono:

--rt-type [!] type

-> seleziona in base al tipo specificato

--rt-segsleft [!] num[:num]

-> seleziona in base al campo Segments Left (intervallo)

--rt-len [!] length

-> dimensione totale di questa intestazione

--rt-0-res

-> controlla il contenuto del campo reserved.

--rt-0-addrs ADDR[,ADDR...]

-> indirizzi type=0 (lista, max: 16)

--rt-0-not-strict

-> Lista indirizzi Type=0, lista non stretta.


Avanti Indietro Indice