Date de publication du RFC : Mars 2004
Auteur(s) du RFC : F. Baker (Cisco), P. Savola (CSC/FUNET)
Première rédaction de cet article le 24 mars 2006
L'usurpation d'adresse IP est une des plaies de l'Internet et est à la base de nombreuses attaques. Ce RFC décrit les mécanismes de filtrage qui peuvent limiter les risques d'usurpation, dans le cas particulier de réseaux ayant plusieurs connexions à Internet (multihoming).
Avant notre RFC, le RFC 2827 s'était déjà attaqué au problème et proposait de systématiser le filtrage des adresses IP source par les FAI et les opérateurs réseau.
Le RFC 2827 notait que le filtrage simple (interdire les paquets dont l'adresse IP source n'est pas attribuée à ce réseau par le FAI) ne marchait pas en présence d'un réseau ayant plusieurs connexions à Internet (multihomed). Dans de tels réseaux, il est parfaitement possible qu'un paquet ayant une adresse IP source du fournisseur d'accès A veuille sortir par le réseau du fournisseur d'accès B. Et il ne devrait pas être filtré dans ce cas.
Notre RFC (également connu sous son numéro de bonne pratique, BCP84) s'attaque donc au cas de ces réseaux. Il propose cinq méthodes :
Notre RFC décrit ensuite en détail les forces et les faiblesses de chacune de ces cinq solutions, les cas où elles s'appliquent le mieux et le meilleur endroit du réseau où les appliquer.
Si le routeur est une machine Linux, le Strict RPF (celui qui ne convient pas en cas de routage asymétrique) peut se mettre en œuvre ainsi :
echo 1 > /proc/sys/net/ipv4/conf/rp_filter
(Sur une vieille
Debian, c'est la variable
spoofprotect
dans
/etc/network/options
qui indique aux scripts de
démarrage d'effectuer la commande ci-dessus. Sur une Debian récente, ce fichier a disparu et on édite désormais /etc/sysctl.conf
pour changer la variable net.ipv4.conf.default.rp_filter
.) (Une bonne description
plus complète de configuration d'une machine Linux
multihomée est http://wiki.wlug.org.nz/SourceBasedRouting
.)
Sur une machine FreeBSD, c'est avec
ipfw qu'on peut faire ce Strict
RPF avec l'option verrevpath
(et le Loose RPF ignoring default route avec l'option versrcreach
) :
ipfw add 100 pass log all from any to any via ${extif} verrevpath
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)