This shows you the differences between two versions of the page.
rl:labs:12:contents:01 [2014/01/09 16:35] razvan.deaconescu [01. [15p] Necesitatea autentificării în rețeaua locală] |
rl:labs:12:contents:01 [2024/01/08 15:37] (current) vlad_iulius.nastase [01. [10p] Conectare la infrastructură] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 01. [15p] Necesitatea autentificării în rețeaua locală ==== | + | ==== 01. [10p] Conectare la infrastructură ==== |
- | Se poate întâmpla ca într-o rețea locală un utilizator să folosească adresa IP a altui utilizator pentru diverse beneficii. De exemplu, în situația în care are accesul la Internet-ul blocat, un utilizator schimbă adresa IP (eventual și adresa MAC) și folosește accesul la Internet cu privilegiile utilizatorului căruia i-a "furat" adresa IP. Soluția folosită de furnizorii de servicii Internet este autentificarea utilizatorilor, lucru realizat folosind PPPoE (//Point to Point Protocol over Ethernet//). | + | În cadrul laboratorului veți lucra în echipe. Fiecare echipa va administra propria rețea virtuală. La începutul laboratorului veți primi un număr de grupa și parolă de ssh pentru acces la rețeaua voastră. Pool-ul de adrese asociat rețelei va fi sub formă <număr grupa>.0.0.0/8. Fiecare echipă are acces la rețea printr-un container [[https://en.wikipedia.org/wiki/Bastion_host|bastion]]. Pentru a accesa acest container puteți folosi comanda: |
- | Ne propunem să punem la punct un astfel de scenariu în care o stație "fură" adresa IP a altei stații. Pentru aceasta, vom conecta stațiile ''host'', ''red'' și ''green'' în aceeași rețea de nivel 2. Vom crea un bridge în care vom adăuga toate stațiile și vom configura adrese IP din aceeași rețea. | + | <code Bash> |
+ | ssh -J your_user.here@fep.grid.pub.ro -p 2000+<număr grupă> root@10.9.2.74 | ||
+ | </code> | ||
- | Pentru început, creați pe stația ''host'' un switch virtual în Linux (bridge) denumit ''br0'' în care să adăugați interfețele ''veth-red'' și ''veth-green''. Urmăriți indicațiile din [[rl:labs:11:contents:01|laboratorul 11]] (partea de jos, unde se lucrează cu bridge-uri). | + | De exemplu, studentul John Smith din grupa 11 se va conecta folosind: |
- | <note important> | + | <code Bash> |
- | Trebuie să activați interfața ''br0'' -- interfața bridge-ului. Folosiți comanda ''ip link''. | + | ssh -J john.smith@fep.grid.pub.ro -p 2011 root@10.9.2.74 |
- | </note> | + | |
- | + | ||
- | <solution -hidden> | + | |
- | <code bash> | + | |
- | root@host:~# brctl addbr br0 | + | |
- | root@host:~# brctl addif br0 veth-red | + | |
- | root@host:~# brctl addif br0 veth-green | + | |
- | root@host:~# brctl show | + | |
- | bridge name bridge id STP enabled interfaces | + | |
- | br0 8000.4a8a889a72d6 no veth-red | + | |
- | veth-green | + | |
- | root@host:~# ip link set dev br0 up | + | |
</code> | </code> | ||
- | </solution> | ||
- | Configurați pe interfața ''br0'' (interfața de tip bridge) de pe stația ''host'' adresa IP ''192.168.0.1/24''. Pe stațiile ''red'' și ''green'' configurați adresa IP ''192.168.0.2/24'' pe interfața ''eth0'' a acestora. | + | O dată conectați vă veți afla pe container-ul bastion ("ssh"), de aici puteți apela scriptul ./goto.sh pentru a vă conecta la routere și host-uri. De exemplu, pentru a vă conecta la routerul BUCH veți apela: |
- | <note important> | + | <code Bash> |
- | Pe ambele stații (''red'' și ''green'') să fie aceeași adresă IP pe interfața ''eth0'': ''192.168.0.2/24''. | + | ./goto.sh BUCH router |
- | </note> | + | |
- | + | ||
- | <solution -hidden> | + | |
- | <code bash> | + | |
- | root@host:~# ip a a 192.168.0.1/24 dev br0 | + | |
- | root@host:~# ip a s br0 | + | |
- | 12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP | + | |
- | link/ether 22:02:4e:36:da:7f brd ff:ff:ff:ff:ff:ff | + | |
- | inet 192.168.0.1/24 scope global br0 | + | |
- | inet6 fe80::9090:7dff:fe58:a566/64 scope link | + | |
- | valid_lft forever preferred_lft forever | + | |
- | + | ||
- | root@red:~# ip a a 192.168.0.2/24 dev eth0 | + | |
- | root@red:~# ip l s dev eth0 up | + | |
- | root@red:~# ip a s dev eth0 | + | |
- | 22: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 | + | |
- | link/ether 00:16:3e:8e:84:21 brd ff:ff:ff:ff:ff:ff | + | |
- | inet 192.168.0.2/24 scope global eth0 | + | |
- | inet6 fe80::216:3eff:fe8e:8421/64 scope link | + | |
- | valid_lft forever preferred_lft forever | + | |
- | + | ||
- | root@green:~# ip a a 192.168.0.2/24 dev eth0 | + | |
- | root@green:~# ip l s dev eth0 up | + | |
- | root@green:~# ip a s dev eth0 | + | |
- | 25: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 | + | |
- | link/ether 00:16:3e:d1:b2:95 brd ff:ff:ff:ff:ff:ff | + | |
- | inet 192.168.0.2/24 scope global eth0 | + | |
- | inet6 fe80::216:3eff:fed1:b295/64 scope link | + | |
- | valid_lft forever preferred_lft forever | + | |
</code> | </code> | ||
- | </solution> | ||
- | Pe stația ''red'' aflăm adresa MAC a interfeței ''eth0'' și apoi trimitem pachete către stația ''host'' (adică spre adresa ''192.168.0.1/24'' aferentă interfeței ''br0'' a bridge-ului de pe ''host''):<code bash> | + | Această comandă vă va oferi acces la terminalul router-ului, cu o interfață similară cu cea CISCO IOS. |
- | root@red:~# ip link show dev eth0 | + | |
- | 22: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 | + | |
- | link/ether 00:16:3e:8e:84:21 brd ff:ff:ff:ff:ff:ff | + | |
- | root@red:~# ping 192.168.0.1 | + | |
- | PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. | + | |
- | 64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=0.379 ms | + | |
- | ^C | + | |
- | --- 192.168.0.1 ping statistics --- | + | |
- | 1 packets transmitted, 1 received, 0% packet loss, time 0ms | + | |
- | rtt min/avg/max/mdev = 0.379/0.379/0.379/0.000 ms | + | |
- | </code> | + | |
- | Urmărim pe stația ''host'' tabela ARP a interfeței ''br0'':<code bash> | + | **Reminder comenzi generice** |
- | root@host:~# ip neigh show dev br0 | + | * ''%%configure terminal%%'' - intră în modul de configurare; orice comandă dată în modul de configurare va fi aplicată asupra router-ului. |
- | 192.168.0.2 lladdr 00:16:3e:8e:84:21 REACHABLE | + | * ''%%ping <destination>%%'' - trimite pachete de tip ICMP către ''%%<destination>%%''. |
- | </code> | + | * ''%%traceroute <destination>%%'' - afișează calea pe care o ia un pachet pentru a ajunge la ''%%<destination>%%''. |
- | Observăm că intrarea aferentă adresei IP ''192.168.0.2'' conține adresa MAC a interfeței ''eth0'' a stației ''red''. | + | * ''%%exit%%'' - iese din modul curent de configurare. |
- | Acum, pe stația ''green'' aflăm adresa MAC a interfeței ''eth0'' și apoi trimitem pachete către stația ''host'':<code bash> | + | Pentru a accesa host-ul conectat la router-ul BUCH veți apela: |
- | root@green:~# ip link show dev eth0 | + | |
- | 25: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 | + | |
- | link/ether 00:16:3e:d1:b2:95 brd ff:ff:ff:ff:ff:ff | + | |
- | root@green:~# ping 192.168.0.1 | + | |
- | PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. | + | |
- | 64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=0.416 ms | + | |
- | ^C | + | |
- | --- 192.168.0.1 ping statistics --- | + | |
- | 1 packets transmitted, 1 received, 0% packet loss, time 0ms | + | |
- | rtt min/avg/max/mdev = 0.416/0.416/0.416/0.000 ms | + | |
- | </code> | + | |
- | Urmărim, din nou, pe stația ''host'' tabela ARP a interfeței ''br0'':<code bash> | + | <code Bash> |
- | root@host:~# ip neigh show dev br0 | + | ./goto.sh BUCH host |
- | 192.168.0.2 lladdr 00:16:3e:d1:b2:95 REACHABLE | + | |
</code> | </code> | ||
- | Observăm că intrarea aferentă adresei IP ''192.168.0.2'' conține acum adresa MAC a interfeței ''eth0'' a stației ''green''. | ||
- | Dacă executăm comanda<code bash> | ||
- | ping 192.168.0.1 | ||
- | </code> | ||
- | simultan de pe stațiile ''red'' și ''green'', observăm că doar o stație primește la un moment dat răspunsul: cea care are adresa MAC asociată la acel moment adresei IP ''192.168.0.2'' în tabela ARP a interfeței ''br0''. După cum am precizat la început, acest lucru este întâlnit frecvent în rețele de dimensiuni medii și mari unde utilizatorii își pun aceeași adresă IP cu a unui alt calculator din rețea în încercarea de a fura identitatea acestuia. | ||
- | Pentru a ne asigura că utilizatorii nu folosesc alte adrese IP, folosim autentificare la nivelul 2; adică să condiționăm conectarea la Internet de furnizarea unei adrese IP și a unei parole. Ținând cont de prevalența rețelelor bazate pe Ethernet, este indicat să folosim un protocol de autentificare peste Ethernet. Una dintre cele mai întâlnite soluții este PPPoE (//Point to Point Protocol over Ethernet//). | ||
- | <note> | ||
- | Autentificarea utilizatorului pentru a obține conectivitate la Internet este unul dintre motivele pentru care mulți furnizori de servicii Internet folosesc PPPoE pentru accesul la Internet (rețeaua din campusul Regie, rețeaua RDS etc.). | ||
- | </note> | ||
- | |||
- | În secțiunile următoare vom configura un server și clienți de PPPoE. | ||
- | |||
- | <note important> | ||
- | Înainte de a trece la configurarea serverului de PPPoE ștergeți adresele IP de pe interfețele ''eth0'' ale containerelor ''red'' și ''green''. Bridge-ul ''br0'' va fi în continuare activ cu adresa ''192.168.0.1/24'' și va avea conectate interfețele ''veth-red'' și ''veth-green''. | ||
- | <solution -hidden> | ||
- | <code bash> | ||
- | root@red:~# ip a f dev eth0 | ||
- | root@red:~# ip a s dev eth0 | ||
- | 22: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 | ||
- | link/ether 00:16:3e:8e:84:21 brd ff:ff:ff:ff:ff:ff | ||
- | |||
- | root@green:~# ip a f dev eth0 | ||
- | root@green:~# ip a s dev eth0 | ||
- | 25: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 | ||
- | link/ether 00:16:3e:d1:b2:95 brd ff:ff:ff:ff:ff:ff | ||
- | </code> | ||
- | </solution> | ||
- | </note> |