3.  Utilisation

3.1.  Vérifier le support

Chargez le module, s'il est compilé

# modprobe ip6_tables 

   

Vérifiez si le noyau courant prend en charge iptables

# [ ! -f /proc/net/ip6_tables_names ] && echo "Current kernel doesn't support
¬ 'ip6tables' firewalling (IPv6)!" 

   

3.2.  Apprendre à utiliser ip6tables

3.2.1.  Lister toutes les entrées netfilter IPv6

  • de façon abrégée

# ip6tables -L 

    
  • de façon détaillée

# ip6tables -n -v --line-numbers -L 

    

3.2.2.  Lister un filtre spécifique

# ip6tables -n -v --line-numbers -L INPUT 

    

3.2.3.  Insérer une règle de journal au filtre entrant, avec des options

# ip6tables --table filter --append INPUT  -j LOG --log-prefix "INPUT:"
¬ --log-level 7 

    

3.2.4.  Insérer une règle de destruction (drop rule) au filtre entrant

# ip6tables --table filter --append INPUT  -j DROP 

    

3.2.5.  Détruire une règle par son numéro

# ip6tables --table filter --delete INPUT 1 

    

3.2.6.  Autoriser ICMPv6

Avec les plus anciens noyaux (noyau non patché 2.4.5 et iptables-1.2.2), aucun type ne peut être spécifié

  • Accepter le trafic ICMPv6 entrant dans les tunnels

# ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT 

    
  • Autoriser le trafic ICMPv6 sortant des tunnels

# ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT 

    

Les nouveaux noyaux permettent de spécifier les types ICMPv6:

# ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT

    

3.2.7.  La limitation du débit

Il peut arriver (l'auteur l'a déjà vu) qu'un engorgement ICMPv6 se produise, c'est pourquoi vous devriez utiliser la limitation de débit, puisqu'elle est disponible, et ce, au moins pour le jeu de règles ICMPv6. De plus, des règles de journalisation devraient aussi être mises en place pour garder trace d'attaques DoS, grâce à syslog et au stockage des fichiers de log. Un exemple de limitation du débit ICMPv6 ressemble à ceci:

# ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request
¬ -j ACCEPT --match limit --limit 30/minute

    

3.2.8.  Permettre le trafic entrant SSH

Ici l'exemple montré est un jeu de règles permettant les connexions entrantes SSH par une adresse IPv6 donnée

  • Autoriser le trafic entrant SSH provenant de 3ffe:ffff:100::1/128

# ip6tables -A INPUT -i sit+ -p tcp -s 3ffe:ffff:100::1/128 --sport 512:65535
¬ --dport 22 -j ACCEPT 

    
  • Autoriser les paquets réponse (pour le moment, la traque du trafic IPv6 n'est pas au coeur de l'implémentation de netfilter)

# ip6tables -A OUTPUT -o sit+ -p tcp -d 3ffe:ffff:100::1/128 --dport 512:65535
¬ --sport 22 ! --syn j ACCEPT 

    

3.2.9.  Rendre disponible le trafic tunnelé IPv6-in-IPv4

Pour accepter les paquets tunnelés IPv6-in-IPv4, vous devez insérer des règles dans votre installation de pare-feu IPv4 relatives à de tels paquets, pour exemple

  • Accepter le trafic entrant IPv6-in-IPv4 sur l'interface ppp0

# iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT 

    
  • Permettre au trafic IPv6-in-IPv4 de sortir par l'interface ppp0

# iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT 

    

Si vous avez seulement un tunnel statique, vous pouvez aussi spécifier l'adresse IPv4, comme ici

  • Accepter le trafic entrant IPv6-in-IPv4 sur l'interface ppp0 et provenant de l'extrémité du tunnel 1.2.3.4

# iptables -A INPUT -i ppp0 -p ipv6 -s 1.2.3.4 -j ACCEPT 

    
  • Autoriser le trafic sortant IPv6-in-IPv4 vers l'interface ppp0 pour l'extrémité du tunnel 1.2.3.4

# iptables -A OUTPUT -o ppp0 -p ipv6 -d 1.2.3.4 -j ACCEPT 

    

3.2.10.  Protection contre les requêtes de connexion entrante TCP

TRÈS RECOMMANDÉ! Pour des questions de sécurité, vous devriez vraiment insérer une règle qui bloque les requêtes de connexion TCP entrante. Ajouter l'option "-i", si d'autres noms d'interface sont utilisés!

  • Bloquer les requêtes de connexion entrante TCP vers cet hôte

# ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP 

    
  • Bloquer les requêtes de connexion entrante TCP allant vers les hôtes placés derrière ce routeur

# ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP 

    

Peut-être ces règles doivent-elles être placées sous d'autres, mais ça, c'est votre travail. La meilleure façon de faire est de créer un script et d'exécuter les règles d'une manière spécifique.

3.2.11.  Protection contre les requêtes de connexion entrante UDP

TRÈS RECOMMANDÉ AUSSI! Comme il a été dit dans la section concernant la mise en place d'un pare-feu, il est possible de contrôler les ports des sessions sortantes UDP/TCP. Si tous vos systèmes IPv6 locaux utilisent les ports locaux, par exemple de 32768 à 60999, vous êtes aussi capables de filtrer les connexions UDP (jusqu'à ce que la traque des connexions fonctionnent) comme suit:

  • Bloquer les paquets entrants UDP qui ne peuvent être des réponses de requêtes sortantes de cet hôte

# ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP 

    
  • Bloquer les paquets entrants UDP qui ne peuvent être des réponses de requêtes d'hôtes placés derrière ce routeur, et transitant à travers lui

# ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP 

    

3.3.  Un exemple plus conséquent

Les lignes qui suivent montrent en exemple une installation plus sophistiquée. Bonne création de jeux de règles netfilter6...

# ip6tables -n -v -L 
Chain INPUT (policy DROP 0 packets, 0 bytes) 
 pkts bytes target     prot opt in     out     source               destination
    0     0 extIN      all      sit+   *       ::/0                 ::/0 
    4   384 intIN      all      eth0   *       ::/0                 ::/0 
    0     0 ACCEPT     all      *      *       ::1/128              ::1/128 
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `INPUT-default:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain FORWARD (policy DROP 0 packets, 0 bytes) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 int2ext    all      eth0   sit+    ::/0                 ::/0 
    0     0 ext2int    all      sit+   eth0    ::/0                 ::/0 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `FORWARD-default:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain OUTPUT (policy DROP 0 packets, 0 bytes) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 extOUT     all      *      sit+    ::/0                 ::/0 
    4   384 intOUT     all      *      eth0    ::/0                 ::/0 
    0     0 ACCEPT     all      *      *       ::1/128              ::1/128 
    0     0 ACCEPT     all      *      lo      ::/0                 ::/0 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `OUTPUT-default:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain ext2int (1 references) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0 
    0     0 ACCEPT     tcp      *      *       ::/0                 ::/0       
¬        tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `ext2int-default:' 
    0     0 DROP       tcp      *      *       ::/0                 ::/0 
    0     0 DROP       udp      *      *       ::/0                 ::/0 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain extIN (1 references) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 ACCEPT     tcp      *      *       3ffe:400:100::1/128  ::/0       
¬        tcp spts:512:65535 dpt:22 
    0     0 ACCEPT     tcp      *      *       3ffe:400:100::2/128  ::/0       
¬        tcp spts:512:65535 dpt:22 
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0 
    0     0 ACCEPT     tcp      *      *       ::/0                 ::/0       
¬        tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 
    0     0 ACCEPT     udp      *      *       ::/0                 ::/0       
¬        udp spts:1:65535 dpts:1024:65535 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `extIN-default:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain extOUT (1 references) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 ACCEPT     tcp      *      *       ::/0                
¬ 3ffe:ffff:100::1/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 
    0     0 ACCEPT     tcp      *      *       ::/0                
¬ 3ffe:ffff:100::2/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0 
    0     0 ACCEPT     tcp      *      *       ::/0                 ::/0       
¬        tcp spts:1024:65535 dpts:1:65535 
    0     0 ACCEPT     udp      *      *       ::/0                 ::/0       
¬        udp spts:1024:65535 dpts:1:65535 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `extOUT-default:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain int2ext (1 references) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0 
    0     0 ACCEPT     tcp      *      *       ::/0                 ::/0       
¬        tcp spts:1024:65535 dpts:1:65535 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `int2ext:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `int2ext-default:' 
    0     0 DROP       tcp      *      *       ::/0                 ::/0 
    0     0 DROP       udp      *      *       ::/0                 ::/0 
    0     0 DROP       all      *      *       ::/0                 ::/0 
 
Chain intIN (1 references) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 ACCEPT     all      *      *       ::/0                
¬ fe80::/ffc0:: 
    4   384 ACCEPT     all      *      *       ::/0                 ff02::/16 
 
Chain intOUT (1 references) 
 pkts bytes target     prot opt in     out     source               destination
¬ 
    0     0 ACCEPT     all      *      *       ::/0                
¬ fe80::/ffc0:: 
    4   384 ACCEPT     all      *      *       ::/0                 ff02::/16 
    0     0 LOG        all      *      *       ::/0                 ::/0       
¬        LOG flags 0 level 7 prefix `intOUT-default:' 
    0     0 DROP       all      *      *       ::/0                 ::/0 

   

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:36