Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:12 [2020/01/06 00:46]
octavian.grigorescu [Laborator 12. Securitatea Rețelelor Locale]
rl:labs:12 [2024/01/15 07:11] (current)
vlad_iulius.nastase [Topologie]
Line 1: Line 1:
 ~~NOTOC~~ ~~NOTOC~~
  
-====== Laborator 12. Securitatea Rețelelor Locale ​======+====== Laborator 12. Protocolul BGP ======
  
-  * [[ https://acs.curs.pub.ro/2019/course/​view.php?​id=222 | Feedback CA]] +  * [[ https://​curs.upb.ro/2023/mod/feedbackadm/​view.php?​id=9386 | Feedback CA]] 
-  * [[ https://acs.curs.pub.ro/2019/course/​view.php?​id=223 | Feedback CB]] +  * [[ https://​curs.upb.ro/2023/mod/feedbackadm/​view.php?​id=9388 | Feedback CB]] 
-  * [[ https://acs.curs.pub.ro/2019/course/​view.php?​id=224 | Feedback CC]] +  * [[ https://​curs.upb.ro/2023/mod/​feedbackadm/​view.php?​id=9390 | Feedback CC]] 
-  +  ​* ​[[ https://curs.upb.ro/2023/mod/feedbackadm/view.php?id=9392 Feedback CD]]
-<​hidden>​ +
-Enunțul laboratorului se poate găsi și [[ https://docs.google.com/document/d/154aKwkeu_W_KSoXn7rTiLbHSdt6UJtdN9A3kEv-cVhs/edit?usp=sharing ​aici]] +
-</​hidden>​+
  
-Arhiva laboratorlui se găsește [[ https://​drive.google.com/​file/​d/​1guW9Kx3S8PATZ_ljmPmadP16rq7pWd42/​view?​usp=sharing | aici]] 
  
 ===== Cunoștințe și abilități ce vor fi dobândite ===== ===== Cunoștințe și abilități ce vor fi dobândite =====
  
-  * Descoperirea de informații despre o anumită rețea, entitate +  * Configurare eBGP. 
-  * Folosirea utilitarelor în linia de comandă în Linux (whois, nmap, wireshark) +  * Configurare iBGP. 
-  * Descoperirea vulnerabilităților +  * Factori economici în rutarea dintre AS-uri. 
-  * Înțelegerea tipului de atac MiTM (Man in the Middlefolosind ARP spoofing și DNS spoofing+  * Internet eXchange Points ​(IXP).
  
 ===== Pregătire infrastructură de laborator ===== ===== Pregătire infrastructură de laborator =====
-   Laboratorul ​va fi rezolvat direct pe calculatoarele din laboratorul de RLNu aveți nevoie de Openstack sau de mașina virtuală din cadrul ​laboratorului+ 
-   ​Pentru a pregăti configurația de laborator, pe calculatorul din laborator (stația ''​mjolnir''​) folosiți comenzile următoare din contul utilizatorului ''​root''​ (puteți da copy/​paste ​la comenzi în terminal):<​code ​bash+  ​În cadrului laboratorului se va lucra cu suita [[https://​frrouting.org/​|FRRouting]] în cadrul ​unei infrastructuri virtualizate folosind [[https://​www.docker.com/​|Docker]] și [[https://​www.openvswitch.org/​|Open vSwitch]]
-root@mjolnir:~# # descărcați arhiva din browser: https://​drive.google.com/​file/​d/​1guW9Kx3S8PATZ_ljmPmadP16rq7pWd42/​view?​usp=sharing +  Veți lucra în echipe ​de 2-3 studenți, conform indicațiilor asistentului. 
-root@mjolnir:​~#​ unzip Laborator12sec_rl.zip +  * Pentru conectarea ​la infrastructură se va folosi comanda de mai jos. 
-root@mjolnir:​~#​ apt-get update +<​code ​Bash
-root@mjolnir:~# apt-get install wireshark python3-pip tcpdump apache2 dsniff+ssh -J your_user.here@fep.grid.pub.ro -p 2000+X ​root@10.9.2.74
 </​code>​ </​code>​
  
 +===== Introducere =====
 +
 +Internetul din ziua de azi este compus din peste 45,000 de rețele diferite numite Autonomous Systems (AS). Un AS este reprezentat de un set de rețele ce aparțin aceleiași organizații sau țări. Exemple mari de AS-uri sunt Google, Facebook, Sprint. Chiar și RoEduNet este un AS. [[https://​bgpview.io/​reports/​countries#​countries-heatmap|Aici]] găsiți o hartă interactivă cu AS-urile prezente în momentul de față in internet, iar [[https://​ipinfo.io/​AS2614|aici]] găsiți detalii despre AS2614 (AARNIEC / RoEduNet).
 +
 +AS-urile pot fi împărțite în două clase mari, AS-uri de tranzit și stub. Un AS stub primește/​trimite pachete în care sursa sau destinația sunt IP-uri din acest domeniu (e.g. RDS va primi/​trimite pachete în care sursa sau destinația în header-ul IP este un IP pe care RDS îl deține). În schimb, un AS de tranzit este un AS care oferă servicii de rutare altor domenii. Mai exact, într-un AS de tranzit sunt pachete a căror sursă și destinație nu aparțin neapărat AS-ului. Astăzi, peste 85% dintre AS-uri sunt de tip stub. În imaginea de mai jos 22, 87264, 57 și 4561 sunt stub, iar restul sunt tranzit. Mai mult de atât, AS-urile 57 și 87264 sunt multihomed.
 +
 +{{ :​rl:​labs:​12:​as_stub_transit.png?​direct&​400 |}}
 +
 +=== Internet eXchange Points (IXP) ===
 +
 +O soluție folosită astăzi pentru a permite unui număr mare de AS-uri să se interconecteze este crearea de Internet eXchange Points (IXP). În general, un IXP reprezintă o grupare de routere, aparținând unor AS-uri diferite, colocate și interconectate într-o locație neutră, precum un datacenter. Practic, pentru fiecare AS care vrea să participe la interconectare,​ va exista un router în acest datacenter care e legat la AS-ul din care acesta face parte și la un switch din datacenter (vor fi în același LAN și vor putea trimite informații între ele). La acesta sunt legate și alte routere din domenii care vor să se interconecteze.
 +
 +{{ :​rl:​labs:​12:​IXP.png?​direct&​400 |}}
 +
 +=== Factorul economic ===
 +
 +În primele zile ale internetului,​ domenilor schimbau între ele toate rutele știute. Totuși, internetul din ziua de azi are la baza factorul economic. Între AS-uri există mai multe tipuri de relații economice:
 +
 +  * customer - provider
 +  * shared-cost peering
 +
 +{{ :​rl:​labs:​12:​money.png?​direct&​400 |}}
 +
 +În imaginea de mai sus, AS7 plătește AS4 pentru a îl folosi ca un AS de tranzit. Legăturile cu $ sunt de tip customer -> provider. În schimb legăturile mov sunt de tip shared-cost peering. De exemplu, AS3 și AS4 ambele plătesc AS1 pentru a îl folosi ca AS de tranzit. Astfel, entitățile care dețin AS3 și AS4 pot alege să facă peering între ele și să plătească doar un link cu AS1.
 +
 +=== Protocolul BGP ===
 +În ziua de astăzi este folosit un singur protocol pentru rutare între AS-uri, Border Gateway Protocol (BGP). BGP rulează peste TCP și este un protocol de tip path vector (vectorul distanțelor,​ similar cu RIP). Fiecare AS este reprezentat de un ID (integer) unic. În cazul anunțurilor de rute, BGP anunță un prefix, cât și drumul până la acesta. Acest drum reprezintă o listă de AS-uri. Astfel este evitată [[https://​en.wikipedia.org/​wiki/​Distance-vector_routing_protocol#​Count_to_infinity_problem|problema numărării la infinit]].
 +
 +În mod istoric, BGP este un protocol care se baza pe încredere. Acest lucru a făcut posibile incidente precum:
 +  * Un ISP din Pakistan care a anunțat, în 2008, rute pentru Youtube în internet, tăind accesul la acesta. [[https://​www.wired.com/​2008/​02/​pakistans-accid/​]]
 +  * Un ISP din Rusia a rutat traficul serviciilor bancare (Visa, Mastercard) prin Rusia. [[https://​arstechnica.com/​information-technology/​2017/​04/​russian-controlled-telecom-hijacks-financial-services-internet-traffic/​]]
 +  * [[https://​en.wikipedia.org/​wiki/​AS_7007_incident|AS7007 incident]]
 +În prezent, se încearcă adoptarea [[https://​blog.cloudflare.com/​rpki|RPKI]] pentru validarea folosind certificate a update-urilor BGP.
 +
 +== Tipuri de mesaje ==
 +
 +  * OPEN: mesajul de OPEN este trimis imediat ce conexiunea TCP dintre două routere este realizată. Acest mesaj inițializează sesiunea BGP și facilitează negocierea mai multor opțiuni pentru protocol.
 +  * NOTIFICATION:​ mesajul NOTIFICATION este folosit pentru a închide sesiuni BGP. În general, acest mesaj este trimis atunci când apar erori.
 +  * UPDATE: mesajul este folosit pentru a anunța noi rute sau modificări la rutele existente. Spre deosebire de alți algoritmi de tip vector distance, BGP trimite doar update-uri cu schimbări, nu întreaga tabelă de rutare la fiecare update.
 +  * KEEPALIVE: mesajul este trimis regulat și este folosit pentru a confirma că routerul peer este conectat. În cazul în care pentru o perioadă de 90 de secunde nu primim un mesaj de tip KEEPALIVE de la un peer, înseamnă că sesiunea este down și trebuie să anunțăm retragerea tuturor rutelor prin acest peer.
 +
 +Găsiți un exemplu de captură de mesaje BGP în următoarea [[https://​www.cloudshark.org/​captures/​89f1795591f6|captură de pe Cloudshark]].
 +
 +
 +== Extensii BGP ==
 +În implementarea protocolului,​ pentru a fi mai ușor de configurat, avem două mari extensii:
 +  * External Border Gateway Protocol (eBGP) - Extensie a protocolului BGP folosit pentru comunicarea în exteriorul unui AS. 
 +  * Interior Border Gateway Protocol (iBGP) - Extensie a protocolului BGP folosit pentru comunicarea în interiorul unui AS. Practic, rutele care sunt aflate folosind EBGP vor fi sumarizate în AS folosind iBGP.
 +
 +===== Topologie =====
 +
 +În topologia laboratorului curent, fiecare grupă va administra un AS cu un spațiu de adrese de forma ''​X.0.0.0/​8'',​ unde ''​X''​ este numărul grupei.
 +Acest spațiu de adrese este împărțit conform topologiei de mai jos, astfel:
 +  * Legătura cu IXP-ul va avea un IP din rețeaua ''​180.22.0.0/​24'',​ de forma ''​180.22.0.X'',​ unde ''​X''​ este numărul grupei / AS-ului. Spre exemplu, AS 13 va avea pe interfața către IXP IP-ul ''​180.22.0.13''​. IXP-ul va avea IP-ul ''​180.22.0.22''​.
 +  * Subrețeaua dintre ''​LOND''​ și ''​PARI''​ va folosi spațiul ''​X.0.1.0/​24''​
 +      * ''​X.0.1.1''​ pentru ''​LOND''​
 +      * ''​X.0.1.2''​ pentru ''​PARI''​
 +  * Subrețeaua dintre ''​LOND''​ și ''​BERL''​ va folosi spațiul ''​X.0.2.0/​24''​
 +      * ''​X.0.2.2''​ pentru ''​LOND''​
 +      * ''​X.0.2.1''​ pentru ''​PARI''​
 +  * Subrețeaua dintre ''​PARI''​ și ''​BUCH''​ va folosi spațiul ''​X.0.3.0/​24''​
 +      * ''​X.0.3.1''​ pentru ''​PARI''​
 +      * ''​X.0.3.2''​ pentru ''​BUCH''​
 +  * Subrețeaua dintre ''​BERL''​ și ''​BUCH''​ va folosi spațiul ''​X.0.4.0/​24''​
 +      * ''​X.0.4.2''​ pentru ''​BERL''​
 +      * ''​X.0.4.1''​ pentru ''​BUCH''​
 +  * Subrețeaua dintre ''​BUCH''​ și ''​host''​ va folosi spațiul de adrese ''​X.104.0.0/​24''​
 +
 +Mai mult, fiecare router va avea configurate următoarele adrese de loopback:
 +  * ''​X.151.0.1''​ pentru ''​LOND''​
 +  * ''​X.152.0.1''​ pentru ''​PARI''​
 +  * ''​X.153.0.1''​ pentru ''​BERL''​
 +  * ''​X.154.0.1''​ pentru ''​BUCH''​
 + 
 +
 +{{ :​rl:​labs:​12:​bgp_routers2.png?​direct |}}
 ===== Navigare ===== ===== Navigare =====
  
Line 35: Line 107:
  
 ===== Exerciții ===== ===== Exerciții =====
- 
-În cadrul exercițiilor din laboratoarele de Linux vom folosi [[:​rl:​labs:​12#​topologie|topologia de mai sus]]. 
  
 {{namespace>:​rl:​labs:​12:​contents&​nofooter&​noeditbutton}} {{namespace>:​rl:​labs:​12:​contents&​nofooter&​noeditbutton}}
  
rl/labs/12.1578264380.txt.gz · Last modified: 2020/01/06 00:46 by octavian.grigorescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0