Firewall-ul de la marginea rețelei, oricât de bine configurat, nu vede absolut nimic din ce se întâmplă între două calculatoare din aceeași încăpere. Traficul lor nu îl traversează niciodată. Cursul acesta se ocupă exact de acest spațiu orb: atacurile care funcționează în interiorul rețelei locale, aproape toate exploatând mecanisme pe care le-am construit noi înșine, în cursurile 3 și 4, și care fac exact ce au fost proiectate să facă. Nu vom repara protocoalele - nu se poate. Vom adăuga în jurul lor verificările care le lipsesc.
1Din cursurile de comutare5 min
- Un switch învață adresele MAC din câmpul sursă al cadrelor primite.
- Tabela CAM are dimensiune finită; ce nu se găsește în ea se inundă pe toate porturile.
- ARP asociază o adresă IP cu o adresă MAC, întrebând prin broadcast.
- VLAN-ul nativ circulă neetichetat pe un trunk.
- STP alege ca rădăcină switch-ul cu cel mai mic Bridge ID.
- DHCP funcționează prin broadcast; clientul acceptă prima ofertă sosită.
Fiecare dintre aceste șase propoziții este, astăzi, punctul de plecare al unui atac. Nu pentru că ar fi implementate greșit, ci pentru că sunt implementate exact așa cum au fost gândite - într-o epocă în care rețeaua locală era, implicit, un spațiu de încredere.
Rezultate ale învățării
- Să clasificați un atac după scop și să spuneți ce mecanism exploatează
- Să explicați mecanica atacurilor CAM overflow, ARP poisoning și VLAN hopping
- Să descrieți cum poate un singur cablu opri o rețea întreagă prin STP
- Să configurați port security, DHCP snooping și Dynamic ARP Inspection
- Să închideți VLAN hopping-ul prin trei setări
- Să explicați ce face și, mai ales, ce nu face un salt
- Să aplicați o listă completă de securizare pe un switch de acces
2Trei familii de atacuri8 min
Un firewall stă între două rețele și vede doar traficul care îl traversează.
Dacă stația A și stația B sunt în același VLAN, pe același switch, traficul dintre ele nu ajunge niciodată la un ruter, deci nici la firewall. Switch-ul îl comută direct, la nivelul 2.
Toate atacurile din acest curs se poartă sub nivelul la care privește un firewall clasic. Apărarea trebuie să fie tot acolo - pe switch.
| Familie | Scop | Exemple în LAN |
|---|---|---|
| Recunoaștere | aflarea a ce există și ce rulează | ping sweep, port scan, sniffing, interogări DNS |
| Blocare (DoS) | indisponibilizarea unui serviciu | SYN flood, smurf, CAM overflow, atac STP |
| Acces | obținerea de drepturi nemeritate | ARP poisoning, VLAN hopping, spargere de parole, inginerie socială |
ARP nu autentifică nimic - prin proiect. Switch-ul crede orice MAC sursă - prin proiect. STP acceptă orice BPDU - prin proiect. DHCP-ul acceptă prima ofertă - prin proiect.
Toate au fost gândite într-o epocă în care a fi conectat fizic la rețea însemna a fi de încredere. Contramăsurile nu repară protocoalele; adaugă în jurul lor verificările care lipsesc.
Firewall-ul este recepția. Măsurile din acest curs sunt încuietorile de pe ușile interioare - și motivul pentru care se numesc, împreună, securitate în adâncime.
3Recunoașterea9 min
Înaintea oricărui atac serios vine culegerea de informații: ce adrese IP sunt active, ce servicii rulează pe ele, în ce versiune, ce sisteme de operare și în cine au încredere utilizatorii rețelei.
Aceleași unelte sunt folosite zilnic și de administratori - diferența este autorizarea, nu instrumentul.
| Utilitar | Ce face | Exemplu |
|---|---|---|
nmap | descoperă stații active, porturi deschise, servicii, versiuni, sistem de operare | nmap -sV 192.168.1.0/24 |
tcpdump | captură de trafic din linia de comandă, cu filtre | tcpdump -i eth0 -c 10 dst port 80 |
Wireshark | captură și analiză grafică; cere interfața în mod promiscuu | format libpcap, comun cu tcpdump |
whois | informații administrative despre un domeniu | whois example.com |
host, dig | interogări DNS: servere de nume, de mail | host -t MX example.com |
Scanarea sau interceptarea traficului altcuiva - chiar și în aceeași rețea, chiar și „doar ca să văd dacă merge" - este ilegală și se pedepsește. Scopul acestui curs este să înțelegeți ce vede un atacator ca să puteți construi apărarea, nu să exersați pe sisteme străine.
Priviți a treia comandă. Două adrese IP diferite cu aceeași adresă MAC este anomalia care trădează un atac de tip man-in-the-middle - și este verificarea cea mai ieftină pe care o puteți face pe o stație suspectă.
Ce poate face un firewall împotriva recunoașterii: să blocheze răspunsul la ICMP echo, să închidă porturile vulnerabile, să interzică inițierea conexiunilor din exterior, să limiteze rata cererilor. Ce nu poate face: să oprească un atacator aflat deja în rețeaua locală. De aici, restul cursului.
4Atacuri de blocare a serviciului9 min
Smurf attack
TCP SYN flood
L-am întâlnit în cursul 8: atacatorul trimite mii de segmente SYN cu adrese sursă falsificate, iar serverul alocă câte o intrare în coada de conexiuni pe jumătate deschise pentru fiecare. Când coada se umple, conexiunile legitime sunt refuzate.
Apărări: SYN cookies, care permit serverului să nu aloce nimic până la confirmare; limitarea numărului de conexiuni half-open per sursă; și, ca întotdeauna, monitorizarea traficului în condiții normale - o anomalie se observă doar dacă știți cum arată normalul.
5CAM overflow10 min
Acesta este atacul care exploatează direct mecanismul din cursul 3. Memoria unui switch este finită - tipic între 8 000 și 32 000 de intrări - deci tabela CAM se poate umple. Iar când se umple, switch-ul nu mai poate învăța adrese noi și inundează toate cadrele necunoscute pe toate porturile. Cu alte cuvinte: redevine un hub.
Reluați simulatorul de tabelă CAM din cursul 3 și urmăriți ce se întâmplă la fiecare cadru: switch-ul învață doar din adresa sursă și inundă orice destinație necunoscută. Atacul nu face decât să împingă aceste două reguli la limită.
SW(config)# interface fastEthernet 0/5 SW(config-if)# switchport mode access SW(config-if)# switchport port-security SW(config-if)# switchport port-security maximum 2 SW(config-if)# switchport port-security mac-address sticky SW(config-if)# switchport port-security violation restrict SW(config-if)# switchport port-security aging time 60 SW# show port-security interface fastEthernet 0/5 SW# show mac address-table count
| Acțiune la violare | Ce face | Când o folosiți |
|---|---|---|
protect | aruncă tăcut cadrele în exces | rar - nu aflați niciodată că s-a întâmplat ceva |
restrict | aruncă, incrementează un contor, trimite SNMP și syslog | implicit recomandat |
shutdown | închide portul (err-disable) | zone sensibile; cere intervenție manuală sau errdisable recovery |
sticky
Adresele învățate dinamic sunt scrise automat în configurația activă, ca și cum le-ați fi introdus manual.
Avantajul: nu trebuie să cunoașteți dinainte adresa fiecărui calculator.Atenție însă: dacă nu salvați configurația, ele se pierd la repornire - iar dacă le salvați, portul rămâne legat de acel calculator anume, ceea ce devine o problemă la prima înlocuire de echipament.
6Man-in-the-middle prin ARP poisoning11 min
ARP, așa cum l-am studiat în cursul 5, are o proprietate care astăzi pare de neconceput: nu autentifică nimic. Mai mult, majoritatea implementărilor acceptă un răspuns ARP chiar dacă nu au trimis nicio cerere - mecanism numit gratuitous ARP, util pentru anunțarea unei schimbări de adresă, dar exploatabil.
! 1. switch-ul invata ce adresa IP a primit fiecare port, prin DHCP SW(config)# ip dhcp snooping SW(config)# ip dhcp snooping vlan 10,20 SW(config)# interface gigabitEthernet 0/1 SW(config-if)# ip dhcp snooping trust ! 2. pe baza acestei evidente, se verifica fiecare mesaj ARP SW(config)# ip arp inspection vlan 10,20 SW(config)# interface gigabitEthernet 0/1 SW(config-if)# ip arp inspection trust ! 3. pentru statiile cu adresa statica, evidenta se scrie manual SW(config)# arp access-list SERVERE SW(config-arp-nacl)# permit ip host 192.168.1.50 mac host 000c.2911.2233 SW(config)# ip arp inspection filter SERVERE vlan 10 SW# show ip dhcp snooping binding SW# show ip arp inspection statistics
Porturile netrusted nu au voie să trimită mesaje de server (Offer, Ack), deci atacul nici nu pornește. Aceeași comandă, două atacuri închise.
7VLAN hopping11 min
Am construit VLAN-uri tocmai ca să izolăm departamente. Există două tehnici prin care izolarea poate fi ocolită - ambele exploatând comportamente implicite ale switch-urilor.
Switch spoofing
Multe switch-uri Cisco au implicit activat DTP (Dynamic Trunking Protocol), care negociază automat dacă un port devine acces sau trunk. Un atacator poate să se prezinte drept switch și să negocieze un trunk. Odată obținut, poate trimite și primi cadre etichetate 802.1Q pentru orice VLAN.
SW(config)# interface range fastEthernet 0/1 - 22 SW(config-if-range)# switchport mode access SW(config-if-range)# switchport nonegotiate SW(config-if-range)# switchport access vlan 10 ! porturile nefolosite: inchise si mutate intr-un VLAN mort SW(config)# interface range fastEthernet 0/23 - 24 SW(config-if-range)# switchport access vlan 999 SW(config-if-range)# shutdown
Double tagging
Tehnica exploatează VLAN-ul nativ, despre care știm din cursul 4 că circulă neetichetat pe trunk. Nu necesită niciun protocol special pe atacator - doar posibilitatea de a construi un cadru cu două etichete.
2. Porturile de acces să fie explicit
switchport mode access cu
switchport nonegotiate.3. Pe trunk-uri, lista de VLAN-uri permise să fie declarată explicit (
switchport trunk allowed vlan 10,20,30), nu lăsată implicit la „toate".8Atacuri împotriva STP10 min
STP nu folosește nicio formă de autentificare: orice dispozitiv care trimite BPDU-uri participă la alegerea rădăcinii. Un atacator conectat oriunde în rețea poate anunța BPDU-uri cu un Bridge ID foarte mic și deveni root bridge - moment în care o parte însemnată a traficului începe să treacă prin el.
Coborâți prioritatea unui switch la 0 în simulatorul de mai sus și priviți cum se reorganizează întreaga topologie în jurul lui. Exact asta face atacatorul - doar că switch-ul cu prioritate 0 este laptopul lui, aflat sub birou.
- Atacatorul se conectează la rețeaua de switch-uri, cu un singur cablu.
- Anunță BPDU-uri cu prioritatea 0, deci cu cel mai mic BID posibil.
- STP reconverge; el devine rădăcină, iar rolurile porturilor se recalculează în jurul lui.
- Traficul dintre segmente trece acum prin mașina lui, unde poate fi capturat.
Varianta de blocare a serviciului este și mai simplă: atacatorul își schimbă continuu BID-ul, forțând recalculări permanente. Porturile nu ajung niciodată în starea forwarding, iar rețeaua este, practic, oprită - cu un singur cablu și niciun exploit.
! porturile spre statii: trec direct in forwarding... SW(config)# interface range fastEthernet 0/1 - 22 SW(config-if-range)# spanning-tree portfast ! ...si se inchid daca de acolo apare un BPDU SW(config-if-range)# spanning-tree bpduguard enable ! radacina se stabileste explicit, pe switch-ul din centrul retelei SW_CORE(config)# spanning-tree vlan 1-100 root primary ! porturile spre switch-uri care nu au voie sa devina radacina SW(config)# interface gigabitEthernet 0/2 SW(config-if)# spanning-tree guard root ! reactivarea automata a porturilor inchise, dupa 5 minute SW(config)# errdisable recovery cause bpduguard SW(config)# errdisable recovery interval 300
| Mecanism | Ce face | Unde se pune |
|---|---|---|
| PortFast | sare peste listening și learning pe porturile de acces | porturi spre stații; niciodată spre switch-uri |
| BPDU Guard | închide portul dacă primește un BPDU | împreună cu PortFast, întotdeauna |
| Root Guard | împiedică un port să devină port rădăcină | pe porturile spre switch-uri care nu au voie să fie rădăcină |
| BPDU Filter | oprește complet trimiterea și primirea de BPDU-uri | rar; de folosit cu prudență, poate crea bucle |
Cele două se pun întotdeauna împreună. Regula mnemotehnică: PortFast promite că nu e niciun switch acolo; BPDU Guard verifică promisiunea.
9Parole, hash-uri și salt9 min
| Metodă | Cum funcționează | Contramăsură |
|---|---|---|
| Sniffing | parolele trimise în clar (Telnet, FTP, HTTP) se citesc direct din trafic | SSH, HTTPS - orice cu criptare |
| Brute force | se încearcă toate combinațiile posibile | parole lungi; limitarea încercărilor |
| Atac de dicționar | se încearcă cuvinte uzuale și variații simple ale lor | parole care nu sunt cuvinte |
| Rainbow tables | lanțuri de hash-uri precalculate, care schimbă spațiu pe timp | salt |
Un hash este o funcție într-un singur sens: din parolă se calculează instantaneu, dar din rezultat nu se poate reveni la parolă.
Serverul stochează doar hash-ul. La autentificare, calculează hash-ul parolei introduse și compară. Dacă baza de date este furată, atacatorul nu are parolele - are doar hash-urile.
Problema: dacă doi utilizatori au aceeași parolă, au și același hash. Iar un atacator poate precalcula hash-urile celor mai frecvente câteva milioane de parole și le poate căuta direct. Aici intră în scenă rainbow tables.
O rainbow table nu stochează toate hash-urile posibile - ar fi imposibil - ci punctele de pornire ale unor lanțuri de hash-uri, din care valorile intermediare se recalculează la nevoie. Este un compromis clasic memorie–timp, iar tabele publice de mii de gigaocteți sunt disponibile pe Internet.
Salt-ul
Un salt este un segment aleator, generat pentru fiecare utilizator și concatenat la parolă înainte de hashing. Este stocat alături de hash, în clar - nu este secret și nici nu trebuie să fie.
trudy:$6$/tKy92iM$/.cIxbEX49qHpZt74D5L0W1vXO2fJuXjyXJnsT0.M... # ^ ^ ^ # | | hash-ul propriu-zis # | salt-ul, generat aleator # algoritmul: 6 = SHA-512
Ce face: obligă atacatorul să construiască o tabelă nouă pentru fiecare utilizator în parte - ceea ce transformă un atac de câteva minute asupra întregii baze de date într-un efort separat per cont. Și face ca doi utilizatori cu aceeași parolă să aibă hash-uri diferite.
Este o măsură de scalare, nu de imposibilitate: o parolă slabă rămâne slabă și cu salt. Pentru rezistență reală se folosesc funcții deliberat lente - bcrypt, scrypt, Argon2 - care fac fiecare încercare costisitoare.
10Factorul uman și codul ostil7 min
Ingineria socială
Cea mai eficientă cale de acces nu este tehnică. Atacatorul convinge o persoană că este de încredere - un coleg de la IT, un furnizor, un superior grăbit - și obține direct informația. Ținta nu are, de regulă, profil tehnic, vrea să ajute și nu conștientizează valoarea a ceea ce deține.
Ingineria socială ocolește orice mecanism tehnic, oricât de bine configurat. Nu există port security pentru un telefon. Singura apărare reală este instruirea periodică a angajaților non-tehnici și existența unor proceduri clare pentru cererile neobișnuite - de exemplu, regula că o parolă nu se comunică niciodată telefonic, indiferent cine sună.
Phishing-ul este varianta industrializată a aceleiași idei: în loc de un apel, un milion de mesaje.
Cod executabil ostil
| Tip | Cum se propagă | Ce îl caracterizează |
|---|---|---|
| Virus | atașat unui program; are nevoie ca utilizatorul să îl ruleze | efect direct, adesea vizibil |
| Troian | ascuns într-o aplicație aparent utilă | efect subtil - de regulă deschide o portiță de acces; greu de detectat |
| Vierme | exploatează vulnerabilități; nu are nevoie de utilizator | răspândire foarte rapidă; adesea construiește botnet-uri |
| Ransomware | oricare din căile de mai sus | criptează datele și cere răscumpărare; se propagă lateral în LAN |
VLAN-urile, ACL-urile între ele și măsurile din acest curs nu împiedică infecția inițială - dar limitează dramatic cât de departe ajunge. Este diferența dintre un incident și un dezastru.
11Lista scurtă de securizare a unui switch8 min
Tot ce s-a discutat mai sus se rezumă la câteva configurații care se aplică oricărui switch de acces, în orice rețea de organizație.
| Măsură | Împotriva cui |
|---|---|
port-security cu maximum și sticky | CAM overflow, dispozitive neautorizate |
ip dhcp snooping | servere DHCP false |
ip arp inspection | ARP poisoning, man-in-the-middle |
switchport mode access + nonegotiate | switch spoofing |
| VLAN nativ nefolosit, VLAN-uri permise explicit | double tagging |
portfast + bpduguard | atacuri STP |
porturile nefolosite: shutdown, în VLAN mort | conectări neautorizate |
| SSH în loc de Telnet, cu ACL pe liniile VTY | interceptarea parolelor de administrare |
SW(config)# hostname SW1 SW(config)# ip domain-name retele.local SW(config)# crypto key generate rsa modulus 2048 SW(config)# ip ssh version 2 SW(config)# username admin privilege 15 secret ParolaPuternica SW(config)# service password-encryption SW(config)# access-list 20 permit 10.0.100.0 0.0.0.255 SW(config)# line vty 0 15 SW(config-line)# transport input ssh SW(config-line)# login local SW(config-line)# access-class 20 in SW(config-line)# exec-timeout 5 0
12Erori frecvente4 min
- „Am pus portfast pe toate porturile, inclusiv spre switch-uri" Se poate forma o buclă înainte ca STP să reacționeze - și o buclă de nivel 2 oprește rețeaua în câteva secunde. PortFast doar spre stații, întotdeauna cu BPDU Guard alături.
- „Am activat DAI, dar serverele cu adrese statice nu mai comunică"
DAI se bazează pe evidența construită de DHCP snooping. O stație care nu a folosit DHCP nu apare
acolo.
Adăugați intrări manuale cu
arp access-listpentru serverele cu adresă fixă. - „Am pus port-security maximum 1 peste tot" Un telefon IP cu PC în spate are două adrese; o mașină virtuală în bridge adaugă altele. Alegeți maximul după ce chiar se conectează acolo. 2 sau 3 e mai realist.
- „Am lăsat VLAN 1 ca VLAN nativ" Este valoarea implicită și, adesea, chiar VLAN-ul în care se află stațiile - precondiția exactă a atacului double tagging. VLAN nativ dedicat, gol, diferit de 1 și de orice VLAN de utilizatori.
- „Am configurat totul, dar nu am salvat"
Adresele sticky și întreaga configurație dispar la prima repornire.
copy running-config startup-config. Aceeași lecție ca în cursul 6. - „Port security cu violation shutdown, și acum jumătate din porturi sunt închise"
Un utilizator care își schimbă laptopul închide portul, iar reactivarea cere intervenție
manuală.
restrictpentru zonele obișnuite;errdisable recoveryacolo unde folosițishutdown. - „Avem firewall, deci rețeaua internă e sigură" Firewall-ul nu vede traficul dintre două stații din același VLAN. Securitate în adâncime: segmentare, măsuri pe switch, criptare între capete.
13Rezumat și glosar5 min
- Firewall-ul de margine nu vede traficul din interiorul unui VLAN.
- Aproape toate atacurile din LAN exploatează protocoale care funcționează corect.
- CAM overflow falsifică adrese MAC sursă → se închide cu
port-security. - ARP poisoning exploatează lipsa autentificării în ARP → se închide cu DHCP snooping + DAI.
- Switch spoofing exploatează DTP →
nonegotiate. - Double tagging exploatează VLAN-ul nativ → VLAN nativ nefolosit.
- Atacul STP exploatează lipsa autentificării BPDU → PortFast + BPDU Guard.
- Salt-ul nu întărește parola: obligă atacatorul la o tabelă per cont.
- Ingineria socială ocolește orice măsură tehnică. Se apără cu proceduri și instruire.
- Securitatea este în adâncime: nicio măsură singură nu ajunge.
14Întrebări de verificare7 min
15Încheiere2 min
Cu acest curs se închide parcursul. Am pornit, în cursul 1, de la un semnal electric pe un fir și de la întrebarea cum se transformă un bit într-o tensiune. Am ajuns la o rețea locală segmentată în VLAN-uri, rutată dinamic, filtrată cu liste de acces, translatată la ieșire, extinsă fără fir și apărată împotriva atacurilor din interiorul ei.
Ce merită să rămână, dincolo de comenzi: aproape fiecare mecanism pe care l-am studiat a fost inventat ca soluție la o problemă concretă, iar aproape fiecare a devenit, ulterior, problema altcuiva. Switch-ul a rezolvat coliziunile și a creat CAM overflow. VLAN-ul a rezolvat difuzarea și a creat VLAN hopping. NAT-ul a salvat IPv4 și a rupt peer-to-peer. Nu există decizie de proiectare fără cost - există doar decizii luate în cunoștință de cauză și decizii luate din obișnuință.
Laboratorul 7 execută, controlat, trei dintre atacurile de aici și apoi le închide, pe rând, ușile.
- Cisco - Catalyst Switch Security Configuration Guide: port security, DHCP snooping, DAI
- RFC 2827 / BCP 38 - filtrarea la intrarea în rețea împotriva falsificării adreselor
- RFC 3704 - filtrarea la intrare pentru rețele cu legături multiple
- OWASP - resurse despre parole, hashing și autentificare
- Documentația
nmapșiWireshark- pentru uz strict autorizat