Projet

Général

Profil

BGP

Liens

Nous utilisons BIRD sous Linux comme routeur BGP

http://bird.network.cz/

simulation de l'internet
https://www.nsec.io/
https://github.com/nsec/the-internet

https://www.franceix.net/fr/technical/blackholing/
BLACKHOLE Community https://tools.ietf.org/html/rfc7999

blog bgp http://www.renesys.com/blog/
flowspec http://www.slideshare.net/sfouant/an-introduction-to-bgp-flow-spec
DFZ = Default Free Zone archive http://archive.routeviews.org/
http://www.ripe.net/data-tools/stats/ris/routing-information-service
https://stat.ripe.net/widget/announced-prefixes
http://pch.net/resources/data/routing-tables/archive/
http://pch.net/resources/data/routing-tables/mrt-bgp-updates/
http://www.nanog.org/meetings/archive/
http://tools.ietf.org/html/draft-lapukhov-bgp-routing-large-dc-02

http://inside.godaddy.com/inside-story-happened-godaddy-com-sept-10-2012/

liste des communautés des opérateurs http://onesc.net/communities/ via http://www.bortzmeyer.org/7153.html

http://tools.ietf.org/html/rfc4271#section-9.1 BGP route decision process

http://www.ipbcop.org/
IP Best Current Operational Practices Documented best practices for Engineers by Engineers

BGP best practices ANSSI
https://www.sstic.org/media/SSTIC2012/SSTIC-actes/influence_des_bonnes_pratiques_sur_les_incidents_b/SSTIC2012-Article-influence_des_bonnes_pratiques_sur_les_incidents_bgp-contat_valadon_nataf_2.pdf
http://www.ssi.gouv.fr/fr/bonnes-pratiques/recommandations-et-guides/securite-des-reseaux/le-guide-des-bonnes-pratiques-de-configuration-de-bgp.html
http://tools.ietf.org/html/draft-ietf-opsec-bgp-security-01
http://www.ssi.gouv.fr/uploads/2014/10/rapport_observatoire_2015.pdf

https://www.ams-ix.net/technical/specifications-descriptions/ams-ix-route-servers

these LAAS BGP http://www.laas.fr/1-31360-Detail-Soutenance-de-these.php?id=600
http://www.laas.fr/1-31706-Publications.php?author=7738
http://www.net.t-labs.tu-berlin.de/papers/OMUPMO-OOSICP-11.pdf
http://hal.archives-ouvertes.fr/docs/00/60/53/83/PDF/dVirt-virtual_platform.pdf
http://hal.archives-ouvertes.fr/docs/00/48/70/74/PDF/Poster_SIGCOMM2010_philippe.pdf

Le monde sur BGP http://reseaux.blog.lemonde.fr/2012/11/04/routage-enjeu-cyberstrategie/

coupure free wanadoo http://www.journaldunet.com/solutions/0301/030122_freeft.shtml

tsunami Japon 2011 et BGP : http://archive.psg.com/111206.conext-quake.pdf

Session is up on telnet:route-views.routeviews.org username rviews

BGP book http://www.bortzmeyer.org/files/bgp.html

Cyclops is able to detect several forms of route hijack attacks http://cyclops.cs.ucla.edu/
BGPmon monitors the routing of your prefixes and alerts you in case of an 'interesting' path chang http://www.bgpmon.net/

http://jointtransit.nl/prices.html

http://blog.cloudflare.com/the-ddos-that-knocked-spamhaus-offline-and-ho

  • Look for TRACEROUTE by SRCGUARDIAN in the Play Store. It needs network access only... Doesn't do TCP but does ICMP and UDP traceroutes and displays ASN as well ...
  • https://github.com/pavel-odintsov/fastnetmon
    • FastNetMon - A high performance DoS/DDoS load analyzer built on top of multiple packet capture engines (NetFlow, IPFIX, sFLOW, SnabbSwitch, netmap, PF_RING, PCAP).
    • What can we do? We can detect hosts in our networks sending or receiving large volumes of packets/bytes/flows per second. We can call an external script to notify you, switch off a server, or blackhole the client.

Baker-s Dozen

Bird

Link local IPv6 static route

    protocol direct {
      interface "eth0";
    }

    protocol static {
      route 2001:db8::/32 via fe80::1%eth0;
    }

Gitoyen BIRD config

https://code.ffdn.org/gitoyen/bird-config/

Et autres outils dont le blackholing automatique : https://code.ffdn.org/org/gitoyen

Misc BIRD Links

mrtdump

mrtdump est un format standard pour représenter et stocker des données BGP (table de routage, messages BGP) : https://tools.ietf.org/html/rfc6396

Dump mrtdump avec Bird

Dump de tous les messages BGP échangés avec les pairs

mrtdump "/tmp/mrtdump-messages";
mrtdump protocols {messages};

Cf. doc bird : http://bird.network.cz/?get_doc&f=bird-3.html#ss3.2

Pour "rotate" le fichier de dump, changer le nom du fichier dans la configuration bird et faire `birdc configure`.

Dump de la table de routage BGP

Ce n'est pas encore possible mais en développement dans Bird, cf. branche mrtdump upstream.

Doc : https://gitlab.labs.nic.cz/labs/bird/commit/11fabd2d6b8bc3d6ca86acd3b62fe4deeb4b91b7

Sources de données mrtdump publiques

Exploitation des données mrtdump

bgpstream est plutôt fait pour récupérer automatiquement les données de RIS et Routeviews (d'ailleurs parfois ça ne marche pas super bien...). C'est aussi possible de lire des fichiers mrtdump locaux, par exemple avec les bindings python :

from _pybgpstream import BGPStream, BGPRecord, BGPElem
record = BGPRecord()
stream = BGPStream()
stream.set_data_interface("singlefile")
stream.set_data_interface_option("singlefile", "rib-file", myfilename)
# Add additional filters here
stream.start()
# etc (cf. tutorial bgpstream)

TouIX et GIX

http://touix.net
http://wikilulu.net/doku.php?id=articles:gix-howto

Evolutions de la conf BGP

TODO:
  • mise en place d'un gestionaire de version style git au moins pour documentation
  • Comment gerer les password MD5 du fichier de conf (les garder secrets tout en publiant le reste)
  • Atelier ?
    • Laurent GUERBY
    • Solarus
    • Ajouter son nom...

Alternative a MP BGP
http://tools.ietf.org/html/draft-ietf-idr-bgp-multisession-06

Add Path
http://tools.ietf.org/html/draft-ietf-idr-add-paths-07
support in bird ? http://marc.info/?l=bird-users&m=134409996129466&w=2

Liens

Configuration Toulouse

router id 91.224.148.2;
define myas = 197422;

protocol device {
    scan time 10;
        primary "eth0" 91.224.148.3;
}

protocol static static_bgp {
    import all;
    route 91.224.148.0/23 reject;
}

protocol kernel{
    import all;
    export all;
}

function avoid_martians()
prefix set martians;
{
  martians = [ 169.254.0.0/16+, 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+, 224.0.0.0/4+, 240.0.0.0/4+ ];

  # Avoid 0.0.0.0/X
  if net.ip = 0.0.0.0 then return false;

  # Avoid too short and too long prefixes
  if (net.len < 8) || (net.len > 24) then return false;

  # Avoid RFC1918 networks
  if net ~ martians then return false;
  return true;
}

filter bgp_OUT {
    if (net ~ [91.224.148.0/23]) then accept;
    else reject;
}

protocol bgp TOUIX {
        local as myas;
        neighbor 91.213.236.1 as 47184;
        preference 200;
        import where avoid_martians();
        export filter bgp_OUT;
}

protocol bgp JAGUAR {
     local as myas;
     neighbor 31.172.233.1 as 30781;
     preference 50;
         import where avoid_martians();
         export filter bgp_OUT;
}

protocol bgp TETANEUTRAL {
    local as myas;
    neighbor 91.224.148.2 as myas;
    preference 100;
    import where avoid_martians();
    export all;
}

IRR

Blackholing

DECIX

http://de-cix.net/products-services/de-cix-frankfurt/blackholing/

Attaques

URPF

blacklister une/plusieures sources est relativement complexe à mettre en place sur une petite infrastructure car nécessite la mise en place de l'URPF (Unicast Reverse Path Forwarding).

http://www.cisco.com/web/about/security/intelligence/ipv6_rtbh.html

RFC3882

RFC1997

BIRD

Absolight

  • communauté 29608:65001 sur /24..32 IPv4 et /41..128 IPv6 => blackhole
  • test 20120703 IPv4 et IPv6, ça marche et convergence très rapide

GIXE

  • communauté 31576:666 sur /32 => blackhole
  • test 20120703 => marche pas encore, signalé et dev a faire coté GIXE pour autoriser les /32

Jaguar

Gitoyen

France-IX

Equinix-IX

TouIX

  • demande acces switch et route server 20120702
  • TODO

Hurricane Electric

Sfinx

Cogent

Docs

France / Benelux:
+33 1 49 03 1818 (Hotline)
+33 1 49 03 1803 (fax)
(maintenance and repair)
(maintenance and repair))
(billing, customer care)
All Customers in Europe can also contact the European Cogent Customer Support team
using the generic email address for Europe:

Livré comme demandé sur rocade optique Fullsave :
Livré sur TLS01.CB.KD-05/A.To02.03&04 (tiroir optique N°2, fibre 03&04).
Cogent physical port te0/0/2/3-rcr11.tls01

Order ID/Service ID: 1-166108500
Service Type: EU_L3_ON_10GE_BURST
Commitment: 1000.0 MBps
Service Address: 125 bis ch du Sang de Serp
livraison dans baie Fullsave / salle LAP Te0/0/2/3 rcr01.tls01 -- > TLS01.CB.KD-05/A.To02.03&04
Toulouse, FR France 31000
Your service acceptance date is 27-May-2014 and your billing start date is 27-May-2014

Order ID/Service ID: 1-166108524
Service Type: EU_L3_ON_IPV6DSTACK_FLAT
Commitment: 0.0 MBps
Service Address: 125 bis ch du Sang de Serp
IPv6s fort port order 1-166108500
Toulouse, FR France 31000
Your service acceptance date is 27-May-2014 and your billing start date is 27-May-2014

Order ID/Service ID: 1-166108512
Service Type: EU_L0_ON_XCFIBER_FLAT
Commitment: 0.0 MBps
Service Address: 125 bis ch du Sang de Serp
Te0/0/2/3 rcr01.tls01 -- > TLS01.CB.KD-05/A.To02.03&04 port order 1-166108500
Toulouse, FR France 31000
Your service acceptance date is 27-May-2014 and your billing start date is 27-May-2014

Config initiale BGP Cogent

root@h7:~# cat /etc/bird/bird.conf
router id 149.11.58.74;

define myas = 197422;

timeformat base     iso long;
timeformat log      iso long;
timeformat protocol iso long;
timeformat route    iso long;

log "/var/log/bird/bird-20140527.log" all;

debug commands 2;

debug protocols { states, events };

protocol device {
        scan time 10;
}

protocol kernel {
        import all;
        export all;
        learn;
}

filter bgp_OUT {
        if (net ~ [91.224.148.0/23, 80.67.182.0/24, 89.234.156.0/23]) then {
          accept;
        }
        reject;
}

filter bgp_IN_PEERING {
       accept;
}

protocol bgp COGENT_TLS00 {
        local as myas;
        neighbor 149.11.58.73 as 174;
        import filter bgp_IN_PEERING;
        export filter bgp_OUT;
}
root@h7:~# cat /etc/bird/bird6.conf
router id 149.11.58.74;

define myas = 197422;

timeformat base     iso long;
timeformat log      iso long;
timeformat protocol iso long;
timeformat route    iso long;

log "/var/log/bird/bird6-20140527.log" all;

debug commands 2;

debug protocols { states, events };

listen bgp v6only;

protocol device {
        scan time 10;
}

protocol kernel {
        import all;
        export all;
        learn;
}

filter bgp_OUT_6 {
        if (net ~ [2a01:6600:8000::/40]) then {
          accept;
        }
        reject;
}

filter bgp_IN_PEERING_6 {
       accept;
}

protocol bgp COGENT_TLS00_6 {
        local as myas;
        neighbor 2001:978:2:68::8:1 as 174;
        import filter bgp_IN_PEERING_6;
        export filter bgp_OUT_6;
}