Archives de catégorie : IPv6

IPv6 – pare feu

Objectif : profiter de l’ipv6 en conservant un bon niveau de sécurité réseau et sans avoir à gérer les pare-feu de tous ses équipements.

Petite précision avant de commencer. Bien qu’ils allouent un préfixe IPv6 à leur clients, la plupart des certains* FAI ne permettent pas de le segmenter en sous réseaux, ils s’attendent à ce que toutes les machines du réseau soient directement connectés à leur Box, il va donc falloir ruser un peu.

*edit : la situation a changé depuis que j’ai écrit cet article, par exemple avec la Freebox Revolution, Free semble (je ne peux pas tester) offrir un /61 avec possibilité de configurer la délégation, vous trouverez un exemple ici : http://www.goudal.net/?p=6

La suite reste valable dans le cas d’une Freebox V5

Prérequis :

  • une machine sous linux disposant d’au moins 2 interfaces réseaux
  • un préfixe IPv6 (FDN, Free, Nerim, OVH, SFR, … le proposent à leur abonnées)

Il y a 2 principales façon de faire :

  • la première consiste à faire du « brouting ». En gros on transporte les paquets de niveau 2 au travers d’un bridge. Ça revient à brancher tous vos équipements sur un switch capable de faire du filtrage. C’est simple mais assez rigide et pas très propre.
  • la seconde que je vais utiliser ici consiste à faire du routage traditionnel agrémenté d’un proxy NDP.

Ici la machine linux est un Raspberry-Pi sous Debian Wheezy, qui ne dispose que d’une carte réseau. Cette carte sera donc divisée en plusieurs interfaces de VLAN. La connectivité IPv6 sera assurée par une Freebox (v5) configurée en switch (donc pas en routeur).

La passerelle Linux assurera plusieurs fonctions :

  1. routeur-nat pour l’IPv4 : comme le font les box
  2. pare-feu IPv4 : comme ne le font pas les box
  3. routeur IPv6 : comme ne le font pas les box
  4. pare-feu IPv6 : comme ne le font pas les box
  5. proxy NDP : pour leurrer les Box
  6. on pourra compléter l’installation par quelques services de confort (serveur DNS, serveur DHCP, serveur NTP, proxy web, …)

En pratique, notre passerelle va se comporter comme un routeur-firewall IPv4 + IPv6 classique, mais va en plus transporter les annonces NDP (et uniquement ces annonces) de part et d’autre de ses interfaces.

Notes, à remplacer par vos informations :

  • l’interface physique est eth0
  • l’interface connectée à Internet est nommée vlan6
  • l’interface connectée au réseau local est nommée vlan46
  • le préfixe IPv6 de la connexion est 2001:db8:1234:1234::/64
  • le sous réseau 2001:db8:1234:1234::/64 est coté local, avec pour passerelle 2001:db8:1234:1234:1::2
  • le sous réseau 2001:db8:1234:1234::/126 (qui empiète sur le précédent) est notre interco entre notre passerelle et la box qui a pour adresse 2001:db8:1234:1234::1
  • le serveur DNS annoncé est 2001:db8::1
  • l’adresse public IPv4 est 1.1.1.2 avec 1.1.1.1 comme passerelle IPv4 par défaut
  • le réseau local a pour adresses 192.168.0.0/24 en IPv4 et fec0:0:0:ffff::/64 en IPv6
  • la passerelle a pour adresses locale 192.168.0.1 en IPv4 et fec0:0:0:ffff::1 en IPv6

Cette dernière adresse est utile si vous avez des postes sous Windows car ces derniers ne gèrent pas les annonces RDNSS, à la place Microsoft a configuré par défaut 3 adresses de DNS dans sa pile IPv6 : FEC0:0:0: FFFF::1, FEC0:0:0: FFFF::2 et FEC0:0:0:FFFF::3

Cela signifie qu’un poste portant l’une de ses adresses peut devenir automatiquement serveur DNS pour tous les postes d’un réseau local composé de Windows, niveau sécurité on a vu mieux.

En passant, Windows ne gère pas non plus les informations de routage fournie par DHCP en IPv6. Il faut donc annoncer le routeur via NDP et les DNS via DHCP. On ne peut donc pas faire du stateless ni du statefull, il faut combiner les 2 pour avoir un truc qui marche.

Configuration de base

Avant toute chose, assurez vous d’avoir un accès physique à la passerelle et qu’elle est correctement sécurisée (pas de SSH ouvert à tout le monde avec un mot de passe bidon, …).

Installation des paquets

  • Radvd : service d’annonce IPv6
  • NDPpd : proxy pour les paquets NDP (non disponible dans les dépôts Rapsberry, mais il se compile simplement)
  • VLAN : prise en charge du 802.1q (non nécessaire si vous avez plusieurs interfaces physique)

Configuration des services

/etc/radvd.conf

C’est ce service qui va faire de votre machine Linux une passerelle IPv6. Il va annoncer les routes (en particulier la route par défaut) et les serveurs DNS aux machines du réseau local.

interface vlan46 {
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    AdvManagedFlag off;
    AdvOtherConfigFlag off;
    prefix 2001:db8:1234:1234::/64 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    };
    route 2001:db8:1234:1234::/64 {
    };
    RDNSS 2001:db8::1 {
    };
};

/etc/ndppd.conf

Il va transmettre les annonces NDP de part de d’autre de la passerelle. Notez le /126.

route-ttl 30000
proxy vlan46 {
    router yes
    timeout 500
    ttl 30000
    rule 2001:db8:1234:1234::/126 {
        auto
    }
}
proxy vlan6 {
    router no
    timeout 500
    ttl 30000
    rule 2001:db8:1234:1234::/64 {
        auto
    }
}

Configuration des interfaces

/etc/network/interfaces

Fichier de configuration traditionnel, j’y ai inclus le lancement des services et la configuration noyau nécessaire au routage et au proxy NDP.

auto lo eth0 vlan6 vlan46

iface lo inet loopback

iface eth0 inet manual
    pre-up /sbin/modprobe -q ipv6 ; /bin/true
    pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
    pre-up echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6
    pre-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
    pre-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
    pre-up echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
    pre-up echo 1 > /proc/sys/net/ipv6/conf/default/proxy_ndp
    pre-up echo 1 > /proc/sys/net/ipv6/conf/all/proxy_ndp
    up ifconfig eth0 promisc up
    post-up iptables-restore < /etc/iptables.up.rules
    post-up ip6tables-restore < /etc/ip6tables.up.rules
    
iface vlan6 inet manual
    vlan-raw-device eth0
    
iface vlan6 inet static
    vlan-raw-device eth0
    address 1.1.1.2
    netmask 255.255.255.0
    gateway 1.1.1.1
    
iface vlan6 inet6 static
    up ifconfig vlan6 promisc up
    vlan-raw-device eth0
    address 2001:db8:1234:1234::2
    netmask 126
    gateway 2001:db8:1234:1234::1
    
iface vlan46 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    broadcast 192.168.0.255
    network 192.168.0.0
    vlan-raw-device eth0
    
iface vlan46 inet6 static
    up ifconfig vlan46 promisc up
    post-up /usr/local/sbin/ndppd -d
    post-up service radvd start
    address 2001:db8:1234:1234:1::2
    netmask 64
    post-up ip a a fec0:0:0:ffff::1/64 dev vlan46

Filtrage

IPv4

Ici un jeu de règle basique permettant à la passerelle de remplacer la box pour l’accès internet en IPv4 (ce qu’on appelle à tord du NAT). Les règles sont minimalistes, il n’y a pas par exemple de protection contre le flood.

/etc/iptables.up.rules

# Generated by iptables-save
*nat
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
COMMIT
# Generated by iptables-save
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Generated by iptables-save
*filter
:localnet - [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
:FORWARD DROP [0:0]
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -j localnet
-A localnet -s 192.168.0.0/24 -j ACCEPT
-A localnet -s 127.0.0.0/8 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j localnet
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j localnet
COMMIT

IPv6

La même chose en IPv6, sans le « NAT » bien entendu, rien de compliqué.

# Generated by ip6tables-save
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
#INPUT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i vlan46 -j ACCEPT
-A INPUT -s fe80::/10 -j ACCEPT
-A INPUT -s ff00::/8 -j ACCEPT
-A INPUT -i vlan6 -s 2001:db8:1234:1234::/64 -j ACCEPT
#OUTPUT
-A OUTPUT -j ACCEPT
#FORWARD
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o vlan6 -j ACCEPT
-A FORWARD -s 2001:db8:1234:1234::/64 -j ACCEPT
#LOG
-A INPUT -j LOG --log-prefix "[IP6 INPUT] "
-A OUTPUT -j LOG --log-prefix "[IPv6 OUTPUT] "
-A FORWARD -j LOG --log-prefix "[IPv6 FORWARD] "
COMMIT

Il ne reste plus qu’à appliquer le tout, brancher et à vérifier que ça fonctionne.

Plusieurs sites permettent de vérifier si l’on utilise une connexion IPv4 ou IPv6, comme par exemple :

Sources :

IPv6 – Sécurité

Un petit article pour vous mettre en garde contre le danger de l’IPv6 tel qu’il est proposé par les FAI.

Mon objectif n’est pas de critiquer l’IPv6, ce protocole offre de grandes perspectives pour l’avenir, je souhaite simplement que son adoption ne se fasse pas au détriment de votre sécurité à cause du manque de communication de la part des FAI.

L’IPv6 c’est bien car :

En théorie :

  1. c’est pratique : tous nos équipements peuvent avoir une adresse publique sur Internet
  2. c’est sécurisé : l’IPsec est directement intégré dans la norme
  3. c’est plus simple : la configuration est automatique (pas de dhcp, …)

Passons à la vraie vie :

  1. c’est pratique : tous nos équipements peuvent être accédés depuis Internet
  2. c’est sécurisé : intégré à la norme ne veut pas dire obligatoire ni utilisable
  3. c’est plus simple : on passe d’adresses du type 192.168.123.18 à des adresses du type fc00:a1bc:d852:358f:85ac:d35f:cd18:e561

Sans compter les problèmes de configuration en entreprise (filtrage des RA, configuration DNS, routes statiques, …).

Mais ne vous arrêtez pas là, l’IPv6 c’est aussi l’avenir, ça serait dommage de s’en passer.

Avec un peu de bonne volonté (de la part des FAI et des équipementiers), l’IPv6 peut très bien être déployé massivement sans créer de nouveaux problèmes.

Nous pourrons ainsi profiter de nouveaux services, comme :

  • la diffusion multicast : plus besoin d’avoir une bande passante proportionnelle au nombre de visiteurs pour diffuser une vidéo,
  • le VPN natif : sans avoir à passer des heures de configuration,
  • de meilleures performances : le protocole dispose de nombreuses optimisations,

Le problème

Actuellement de ce que j’ai pu constater, il n’y a qu’un problème majeur avec l’IPv6, c’est la sécurité. Il touche essentiellement les particuliers ou les petites entreprises car ils n’ont que rarement les connaissances, le temps ou les moyens de s’occuper de la sécurité de leurs données. C’est une erreur, mais c’est un fait !

En version courte :

  • Les systèmes récents ont presque tous la couche IPv6 activée par défaut (y compris les tablettes et les smartphones)
  • Les trucBOX sont rarement pourvues d’un vrai pare feu, en général elles proposent au mieux de faire un peu de translation (pour que vous ayez accès à Internet) et de filtrage (contrôle parental).
  • En IPv4, votre réseau local est « protégé » (à prendre avec les guillemets) des attaques directes depuis Internet, non pas grâce à votre trucBOX, mais grâce aux normes qui imposent qu’une adresse de type privé (un 192.168.x.x par exemple) ne doit pas circuler sur Internet.
  • Comme les adresses IPv4 sont une denrée de plus en plus rare, votre FAI vous en distribue une seule (sauf exceptions), voir aucune (si si ça existe, y compris en France)
  • En IPv6, la norme dit la même chose qu’en IPv4, ce qui est privé doit rester privé, mais comme il n’y a pas de pénurie d’adresse, votre FAI vous octroie une plage d’adresse public (souvent un simple /64), vos machines sont donc directement exposées à Internet.
  • Les trucBOX deviennent alors de simples commutateurs (switch) qui relient vos machines à Internet.
  • Dès que vous connectez un équipement compatible IPv6 (ils le sont presque tous maintenant) à votre box, cet équipement devient directement accessible depuis Internet.

Concrètement ça veut dire que tous les équipements branchés à une, par exemple, Freebox révolution (qui a l’IPv6 activé par défaut) sont directement accessible depuis Internet.

Le second problème de sécurité nous vient tout droit de Microsoft. Par défaut Windows  tente de monter un tunnel Teredo entre votre machine et Microsoft (teredo.ipv6.microsoft.com) afin de vous faire profiter de l’IPv6 au travers d’une connexion IPv4, que l’IPV6 soit activé ou non sur votre poste (c’est une interface « cachée »).

En pratique, quand vous voyez une adresse qui commence par 2001:0000:, c’est probablement une adresse qui sort de chez Microsoft.

Si l’idée est louable, permettre à de nombreuse personnes de disposer d’une adresse IPv6, il faut tout de même se poser une question : est il normal qu’une partie de notre trafic Internet passe par des serveurs étrangers sans notre consentement ?

2 grands axes s’offrent à vous :

  • ne pas utiliser l’IPv6 – ça serait dommage, mais ça ne devrait pas poser de problèmes pour encore quelques années, vous pouvez alors :
    • désactiver l’IPv6 sur tous vos équipements : ce n’est pas toujours possible et cela reste risqué
    • désactiver l’IPv6 sur votre connexion : c’est la solution la plus simple si votre FAI le permet
    • mettre un équipement (typiquement un routeur wifi) qui bloque l’IPv6 entre votre box et votre réseau : c’est souvent déjà le cas pour d’autres raisons que de bloquer l’IPv6
  • utiliser l’IPv6 – vous pouvez alors :
    • ne rien faire et laisser n’importe qui accéder et utilisez directement vos équipements : je ne pense pas que beaucoup de personnes choisissent cette possibilité
    • installer un pare feu sur tous vos équipements : sur un ordinateur c’est assez simple à faire, sur votre imprimante, votre TV connecté, …, bon courage
    • investir (du temps et/ou de l’argent) dans un système vous permettant de profiter de l’IPv6 sans devoir intervenir sur tous vos équipements et sans les mettre en danger

Je recommande ce dernier choix à celles et ceux qui souhaite profiter pleinement des possibilités d’Internet. C’est aussi l’occasion d’apprendre (un article est disponible ici).

Quel que soit votre choix, passez le mot à vos proches : sans action de leur part, leurs équipements seront très vite la proie des pirates.