summaryrefslogtreecommitdiff
path: root/BCP_38_ne_pas_laisser_des_adresses_IP_usurpes_sortir_de_son_rseau.txt
blob: 26e4e82c4df14396d6a365ec5b51bc2b2d8636de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Titre: BCP 38, ne pas laisser des adresses IP usurpées sortir de son réseau
Auteur: 
Date: Wed 07 Dec 2016 01:00:00 +0100
Lien: https://www.bortzmeyer.org/bcp38.html

Qu'est-ce que ça peut bien être, « BCP 38 » ? Ce terme désigne un ensemble de 
documents de bonnes pratiques pour les acteurs de l'Internet, plus spécialement
les opérateurs réseaux : il ne faut pas laisser sortir de son réseau des 
paquets ayant une adresse source usurpée. Le respect de ce principe permettrait
de lutter contre certaines attaques par déni de service sur l'Internet. Ce 
principe est formalisé dans deux RFC, les RFC 2827 et RFC 3704.

« BCP » veut dire « Best Current Practice ». Le but de cet étiquetage est de 
pointer vers le ou les RFC qui décrivent la pratique en question. En effet, un 
RFC, une fois publié, n'est jamais modifié, alors que le monde, lui, change. 
C'est ainsi que le RFC 7525, parlant de TLS est décrit par l'étiquette BCP 195[1]
 : les bonnes pratiques, en matière de cryptographie, changent vite. Une 
étiquette BCP peut pointer plusieurs RFC. Un bon exemple est le BCP 47[2], sur 
les étiquettes de langue, qui pointe vers les RFC 5646 et RFC 4647.

C'est également le cas de BCP 38[3], qui désigne le RFC 2827, avec les 
additions du RFC 3704.

Le problème que vise à résoudre ce BCP est celui de l'usurpation d'adresse IP[4]
par un attaquant qui voudrait faire du déni de service sans révéler son 
adresse, ou bien en faisant une attaque par réflexion[5]. Par défaut, dans 
l'Internet, il est trivial d'émettre des datagrammes avec une adresse source 
mensongère. BCP 38 dit que les opérateurs réseaux devraient interdire cette 
pratique, en configurant leurs routeurs à cette fin. Par exemple, si un FAI a 
deux préfixes IP, 192.0.2.0/24 et 2001:db8::/32, il n'y a aucune raison valable
de laisser sortir du réseau du FAI des paquets ayant comme adresse IP source, 
mettons, 203.0.113.65.

Notons qu'un déploiement systématique de BCP 38 résoudrait un certain nombre de
problèmes de sécurité sur l'Internet, mais pas tous. Ainsi, si l'attaquant 
dispose d'un botnet, et fait une attaque directe (pas par réflexion), il n'a 
pas vraiment besoin de mentir sur ses adresses IP source, ce ne sont pas les 
siennes, de toute façon (usurper l'adresse source aurait quand même quelques 
avantages, ça dépend des cas).

Aujourd'hui, le déploiement de BCP 38 dans l'Internet n'est pas inexistant mais
il est très inégal. Par exemple, la situation est bien meilleure en Europe 
qu'en Asie. Un attaquant qui veut faire de l'usurpation d'adresses IP a donc 
encore pas mal de réseaux à sa disposition.

Pourquoi est-ce que tout le monde n'a pas déployé BCP 38, malgré le très large 
consensus qui existe parmi les professionnels ? La principale raison est 
économique. Un opérateur qui déploie BCP 38 (tous les routeurs permettent de le
faire, soit en n'autorisant que ses propres préfixes, soit par des astuces 
comme RPF) aide les autres. Imaginez l'ingénieur allant voir le directeur 
financier et lui disant « on va dépenser de l'argent, et le ROI ira entièrement
à nos concurrents »... Comme en écologie, c'est donc un cas typique où le 
sacro-saint marché ne peut pas aboutir à une bonne solution.

Notez que tester si un FAI donné met en œuvre ou pas BCP 38 est un peu plus 
compliqué que cela peut sembler au premier abord. Je connais par exemple une 
box très utilisée en France qui bloque les paquets IPv4 ayant une adresse IP 
source usurpée (par effet de bord du NAT) mais qui ne le fait que pour des 
flots existants ou pour des paquets de début d'un flot. Si on envoie un paquet 
TCP sans bit SYN, il passe malgré son adresse usurpée...

Quelques lectures pour approfondir : 

  * Un site d'informations[6] rassemblant des informations diverses sur cette 
    bonne pratique de filtrage,
  * Le projet Spoofer[7] de mesure du déploiement de BCP 38. Voyez par exemple 
    les dernières mesures en France[8].


Liens:
[1]: https://www.rfc-editor.org/info/bcp195 (lien)
[2]: https://www.rfc-editor.org/info/bcp47 (lien)
[3]: https://www.rfc-editor.org/info/bcp38 (lien)
[4]: http://www.bortzmeyer.org/usurpation-adresse-ip.html (lien)
[5]: http://www.bortzmeyer.org/attaques-reflexio.html (lien)
[6]: http://www.bcp38.info/ (lien)
[7]: https://www.caida.org/projects/spoofer/ (lien)
[8]: https://spoofer.caida.org/recent_tests.php?country_include=fra&no_block=1 (lien)