Archives de catégorie : Sécurité

Sauvegarde – via RSS

Un petit hack de 5min pour télécharger des sauvegardes via un agrégateur RSS.

Pour faire court, je cherchai un moyen simple, fiable et peu couteux en temps de rapatrier automatiquement les sauvegardes de ce site chez moi, sur mon NAS (un Synology).

Il existe plein de manière de le faire, mais je voulais un truc qui marche tout de suite sans installer quoi que ce soit d’un coté (serveur) ou de l’autre (NAS).

Ce NAS dispose d’un logiciel bien pratique pour télécharger automatiquement des podcasts via leurs flux RSS, j’ai donc décidé de m’en servir pour récupérer mes sauvegardes. Il faut juste lui donner l’adresse d’un XML et lui dire où copier les données.

Le script suivant permet de générer ce XML :

#!/bin/bash
#une petite rotation avant de créer le XML
/usr/sbin/logrotate -f  /etc/logrotate.d/backup
#emplacement des fichiers à récupérer
BASEDIR='/home/backups'
#adresse à utiliser pour les liens vers les fichiers
URL='http://mon.serveur.internet'
DATE=`date -R`
cd $BASEDIR
#une petite boucle qui va créer un XML pour chaque dossier
for DIR in `ls`;do
    Dtype=`stat --printf="%F" $DIR`
    if [ "$Dtype" == "directory" ]; then
        echo '<?xml version="1.0" ?>
            <rss version="2.0">
                <channel>
                    <title>Les fichiers du dossier '$DIR'</title>
                    <link>'$URL'/'$DIR'.xml</link>
                    <description>Backup '$DIR'</description>
                    <lastBuildDate>'$DATE'</lastBuildDate>'
        > $BASEDIR/$DIR.xml
        #une autre boucle qui va créer une entrée "item" pour chaque fichier
        cd $DIR
        for FILE in `find . -type f`; do
            Fname=`basename $FILE`
            Fsize=`stat --printf=%s $FILE`
            Fdate=`stat --printf=%Y $FILE`
            Fdate=`date -R -d @$Fdate`
            Fmime=`file --mime-type $FILE | awk '{print $2}'`
            echo '<item>
                <title>'$Fname'</title>
                <guid isPermaLink="false">'$URL'/'$DIR'/'$Fname'</guid>
                <pubDate>'$Fdate'</pubDate>
                <enclosure url="'$URL'/'$DIR'/'$Fname'" length="'$Fsize'" type="'$Fmime'"></enclosure>
            </item>'
            >> $BASEDIR/$DIR.xml
        done
        echo '</channel>
        </rss>' >> $BASEDIR/$DIR.xml
        cd $BASEDIR
    fi
done

Il ne reste plus qu’à planifier l’exécution de ce script sur le serveur afin qu’il actualise les XML et à donner leurs adresses au NAS qui se charge du reste (il va régulièrement vérifier si le flux RSS a été mis à jour et le cas échéant télécharge les nouvelles sauvegardes).

Je n’ai pas testé avec d’autres logiciels de podcast (je n’utilise que celui de Synology), mais ça devrait marcher avec la plupart d’entre eux.

Veillez bien à ce que ces XML et surtout les fichiers qui y sont référencés (vos sauvegardes) ne soient pas accessibles à tout le monde !!!!

Freeradius – ActiveDirectory

Cet article montre les étapes nécessaires à l’utilisation de Freeradius sur une Debian Wheezy pour authentifier les utilisateurs sur un serveur ActiveDirectory (Windows Server 2012).

Les requêtes EAP seront encapsulées en TTLS ou en PEAP, l’authentification sera effectuée via un challenge EAP MSCHAP v2.

La partie proxy sera aussi configurée pour permettre l’authentification via d’autres serveurs radius disposant de leurs propres bases d’utilisateurs.

Informations générales

  • domaine DNS : test.example.org
  • domaine NetBios : TEST
  • nom du serveur AD : ad.test.example.org
  • adresse du DNS de l’AD : 10.0.0.1

Une parfaite résolution DNS est essentielle à tout système, en particulier quand il y a un annuaire ActiveDirectory. On modifie donc les paramètres DNS de la Debian pour utiliser le DNS de l’AD.

#/etc/hosts
127.0.0.1       radius.test.example.org localhost radius
#/etc/resolv.conf
domain test.example.org
search test.example.org
nameserver 10.0.0.1

De même une synchronisation horaire précise est essentielle. On modifie donc la configuration NTP pour utiliser le serveur AD comme source de temps. Ici j’utilise openntp :

#/etc/openntpd/ntpd.conf
servers test.example.org

J’utilise le nom du domaine de l’AD pour profiter du RR DNS.
On redémarre le serveur pour bien prendre en compte les modifications.

Intégration du serveur dans l’ActiveDirectory

Installation des paquets

aptitude install samba winbind samba-common-bin krb5-user

Kerberos

L’utilisation de Kerberos n’est pas indispensable pour joindre une machine à l’AD, mais elle est recommandée.

Configuration

La casse est importante dans le protocole Kerberos, par convention on utilise le nom DNS en majuscule pour les royaumes.

#/etc/krb5.conf
[libdefaults]
default_realm = TEST.EXAMPLE.ORG
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
    host = {
        rcmd = host
        ftp = ftp
    }
    plain = {
        something = something-else
    }
}
fcc-mit-ticketflags = true

[realms]
TEST.EXAMPLE.ORG = {
    kdc = ad.test.example.org:88
    admin_server = ad.test.example.org
    default_domain = test.example.org
}

[domain_realm]
.test.example.org = TEST.EXAMPLE.ORG
test.example.org = TEST.EXAMPLE.ORG
[login]
krb4_convert = true
krb4_get_tickets = false

Récupération d’un ticket Kerberos

kinit administrator@TEST.EXAMPLE.ORG

Vérification du ticket

klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.EXAMPLE.ORG
[...]

Samba

Configuration

#/etc/samba/smb.conf
[global]
workgroup = TEST
server string = %h server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = ads
realm = TEST.EXAMPLE.ORG
password server = ad.test.example.org
winbind use default domain = yes
domain master = no
local master = no
preferred master = no
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = no
encrypt passwords = true

Redémarrage de Samba

service samba restart

Intégration dans l’AD

net ads join -U administrator

Si le ticket Kerberos est valide, vous devriez obtenir le message suivant :

Using short domain name -- TEST
Joined 'RADIUS' to realm 'test.example.org'

Dans le cas contraire, ou en l’absence de Kerberos, vous obtiendrez ceci :

Using short domain name -- TEST
Joined 'RADAD' to realm 'test.example.org'
DNS Update for radius.test.example.org failed: ERROR_DNS_GSS_ERROR
DNS update failed!

Les 2 dernières lignes indiquent que l’ajout du serveur dans le DNS de l’AD a échoué, cela n’a rien d’anormal si vous n’utilisez pas Kerberos ou si vos DNS n’acceptent pas la création dynamique d’objets, il vous suffit d’aller créer manuellement une entrée pour votre serveur Linux dans le DNS de l’AD.
Si vous obtenez autre chose, c’est probablement qu’il y a un problème de résolution de nom ou de configuration.

Redémarrage de WinBind

service winbind restart

Tests de la liaison avec l’annuaire

Test de la connexion RCP :

wbinfo -t
checking the trust secret for domain TEST via RPC calls succeeded

Lister les utilisateurs de l’annuaire (attention si vous avez un grand nombre de comptes) :

wbinfo -u
TESTadministrator
TESTguest
TESTkrbtgt
[...]

Test d’authentification :

wbinfo -a testuser%passtest
plaintext password authentication failed
Could not authenticate user testuser%passtest with plaintext password
challenge/response password authentication succeeded

Les 2 premières lignes indiquent que l’authentification en clair a échoué, ce qui est normal, c’est la dernière ligne qui est importante, elle indique que l’authentification par Challenge/Response est valide.

Freeradius

Installation des paquets

aptitude install freeradius freeradius-utils

Autorisation pour le ntlm

L’authentification sur l’annuaire est effectuée en NTLM, il faut donc que le service radius ait le droit d’utiliser winbind.

addgroup freerad winbindd_priv

Configuration de Freeradius

La configuration de Freeradius est très complexe car très complète. Elle couvre par défaut une très grande variété de cas d’utilisation. Il est donc recommandé de ne pas la modifier, mais juste de l’adapter.
Dans le cas présent, j’ai choisi de ne pas respecter cette recommandation pour éviter de poster plus de 5000 lignes de configuration, c’est environ le nombre de lignes des différents fichiers de configuration.

Il n’y a normalement que 4 fichiers à modifier :

  • /etc/freeradius/eap.conf : il contient la configuration des méthodes EAP
  • /etc/freeradius/modules/mschap : c’est ce module qui fera l’authentification sur l’AD
  • /etc/freeradius/proxy.conf : sert à relayer les requêtes sur d’autres serveurs radius
  • /etc/freeradius/clients.conf : c’est ici que sont déclarés les NAS autorisés à utiliser le radius

Configuration de l’EAP

#/etc/freeradius/eap.conf
eap {
    default_eap_type = ttls
    timer_expire     = 60
    ignore_unknown_eap_types = no
    cisco_accounting_username_bug = no
    max_sessions = 4096
    tls {
        certdir = ${confdir}/certs
        cadir = ${confdir}/certs
        private_key_password = whatever
        private_key_file = ${certdir}/server.key
        certificate_file = ${certdir}/server.pem
        CA_file = ${cadir}/ca.pem
        dh_file = ${certdir}/dh
        random_file = /dev/urandom
        CA_path = ${cadir}
        cipher_list = "DEFAULT"
        make_cert_command = "${certdir}/bootstrap"
        ecdh_curve = "prime256v1"
        cache {
            enable = no
            lifetime = 24 # hours
            max_entries = 255
        }
    }
    ttls {
        default_eap_type = mschapv2
        copy_request_to_tunnel = yes
        use_tunneled_reply = yes
        virtual_server = "inner-tunnel"
    }
    peap {
        default_eap_type = mschapv2
        copy_request_to_tunnel = yes
        use_tunneled_reply = yes
        virtual_server = "inner-tunnel"
    }
    mschapv2 {
    }
}

Configuration du MS-CHAP v2

#/etc/freeradius/modules/mschap
mschap {
    use_mppe=yes
    require_encryption = yes
    require_strong = yes
    with_ntdomain_hack = yes
    ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"
}

Dans certaines configuration, il faudra ajouter votre nom de domaine à la commande ntlm_auth avec la directive suivante : –domain=TEST

Configuration du proxy radius

#/etc/freeradius/proxy.conf
proxy server {
    default_fallback = no
}
realm NULL {
}
realm LOCAL {
}
realm example.org {
    authhost = LOCAL
    accthost = LOCAL
}
realm test.example.org {
    authhost = LOCAL
    accthost = LOCAL
}
realm DEFAULT {
    type = radius
    authhost = 1.1.1.1
    accthost = 1.1.1.1
    secret = proxysharedsecret
    nostrip
}

Les requêtes des utilisateurs précisant un domaine d’authentification qui n’est pas le notre seront transmises à un autre serveur radius (1.1.1.1 dans l’exemple).

Déclaration des NAS

On déclare ici les NAS qui pourront interroger notre serveur radius

#/etc/freeradius/clients.conf
client 10.1.1.1/32 {
    secret          = secretnas1
    shortname       = nas1
}
client localhost {
    ipaddr = 127.0.0.1
    secret          = testing123
    require_message_authenticator = no
    nastype     = other
}

Redémarrage du service

service freeradius restart

Test local

radtest -t mschap testuser passtest 127.0.0.1 0 testing123
Sending Access-Request of id 83 to 127.0.0.1 port 1812
User-Name = "testuser"
NAS-IP-Address = 127.0.1.1
NAS-Port = 0
Message-Authenticator = 0x00000000000000000000000000000000
MS-CHAP-Challenge = 0xe44df59956405035
MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000e7cb832715175c312efcb8a07922a1a23c82c715773e9216
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=83, length=84
MS-CHAP-MPPE-Keys = 0x0000000000000000490de11896511cd8de93afd472151ddd0000000000000000
MS-MPPE-Encryption-Policy = 0x00000002
MS-MPPE-Encryption-Types = 0x00000004

Conclusion

Je n’ai pas couvert le détail de la configuration, il s’agit encore une fois d’une prise de notes mise en forme.

Il faudrait compléter cette installation avec le paramétrage des journaux, l’accounting et la sécurisation de la configuration avant d’envisager une mise en production. Peut être dans un prochain article.

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.