Laboratorijska vežba – Modul 16 – Slojevita odbrana: Port Security, DHCP Snooping, DAI, ACL i SSH/AAA
Cilj vežbe
Konfigurisati višeslojnu odbranu mreže: port security i DHCP snooping/DAI na svič-u radi zaštite od rogue DHCP servera i ARP spoofing-a, proširenu ACL na ruteru radi segmentacije pristupa serveru po principu najmanjih privilegija, i SSH sa lokalnom AAA autentifikacijom umesto Telnet-a.
Potrebno predznanje
- Kompletna teorija ovog modula (Teme 1–16).
- Port security (Modul 8), DHCP server (Modul 13), SSH i lozinke (Modul 7), rutiranje (Modul 11).
Potrebni programi
- Cisco Packet Tracer.
Potrebni uređaji (u simulaciji)
| Uređaj | Tačan model u Packet Traceru | Uloga |
|---|---|---|
| R1 | Cisco 4321 (ili 1941) | Gateway, legitimni DHCP server, ACL, SSH/AAA |
| SW1 | Cisco Catalyst 2960 | Port security, DHCP snooping, DAI |
| PC1 | Generic PC-PT | Legitimni klijent, DHCP |
| PC2 | Generic PC-PT | Klijent kome se namerno ograničava pristup serveru (ACL demonstracija) |
| Rogue-Server | Server-PT | Simulira neovlašćeni (rogue) DHCP server na untrusted portu |
| Server1 | Server-PT | Interni server sa ograničenim pristupom (cilj ACL-a) |
Topologija
graph LR
PC1["PC1 (DHCP)"] --- SW1[SW1]
PC2["PC2"] --- SW1
Rogue["Rogue-Server<br/>(untrusted, lažni DHCP)"] --- SW1
SW1 ---|"trust (DHCP snooping + DAI)"| R1["R1<br/>Gi0/0: 192.168.1.1 (LAN)<br/>Gi0/1: 192.168.2.1 (Server)"]
R1 --- Server1["Server1<br/>192.168.2.10"]
Napomena o topologiji: Rogue-Server predstavlja neovlašćen (ili slučajno pogrešno konfigurisan) uređaj koji pokušava da deli lažne DHCP konfiguracije — koristi se isključivo radi demonstracije odbrane (DHCP snooping), ne kao uputstvo za napad. Port ka R1 (Gi0/1 na SW1) je jedini trust port.
Plan adresiranja
| Uređaj | Interfejs | IP adresa | Maska | Napomena |
|---|---|---|---|---|
| PC1, PC2 | NIC | DHCP | — | Iz legitimnog pool-a na R1 |
| Rogue-Server | NIC | 192.168.1.250 (statička) | 255.255.255.0 | Sopstveni, lažni DHCP servis uključen |
| Server1 | NIC | 192.168.2.10 | 255.255.255.0 | Gateway 192.168.2.1 |
| R1 | GigabitEthernet0/0 | 192.168.1.1 | 255.255.255.0 | LAN, legitiman DHCP server |
| R1 | GigabitEthernet0/1 | 192.168.2.1 | 255.255.255.0 | Server mreža |
Tabela portova
| Uređaj | Port | Povezan sa |
|---|---|---|
| R1 | Gi0/0 | SW1 (uplink, trust) |
| R1 | Gi0/1 | Server1 |
| SW1 | Gi0/1 | R1 Gi0/0 |
| SW1 | Fa0/1 | PC1 |
| SW1 | Fa0/2 | PC2 |
| SW1 | Fa0/3 | Rogue-Server |
Koraci vežbe
Korak 1 – Postavljanje topologije
Postavite R1, SW1, PC1, PC2, Rogue-Server i Server1. Povežite ih prema tabeli portova.
Korak 2 – Osnovna konfiguracija R1
Router>enable
Router#configure terminal
Router(config)#hostname R1
R1(config)#interface gigabitEthernet 0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface gigabitEthernet 0/1
R1(config-if)#ip address 192.168.2.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
Korak 3 – Legitiman DHCP server na R1
R1(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.9
R1(config)#ip dhcp pool LAN1
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
R1(dhcp-config)#default-router 192.168.1.1
R1(dhcp-config)#dns-server 8.8.8.8
R1(dhcp-config)#exit
Korak 4 – Konfiguracija Rogue-Server i Server1
Na Rogue-Server, unesite statičku adresu 192.168.1.250/24 i uključite DHCP servis sa pogrešnim pool-om (npr. gateway 192.168.1.254, koji ne postoji) — ovo simulira slučajno pogrešno konfigurisan ili zlonameran uređaj.
Na Server1, unesite statičku adresu 192.168.2.10/24, gateway 192.168.2.1.
Korak 5 – Konfiguracija PC1 i PC2
Na oba PC-a, izaberite „DHCP" u IP Configuration.
Korak 6 – Provera problema (PRE zaštite)
Fast-forward vreme u Packet Traceru (ili ručno obnovite DHCP na PC-u) nekoliko puta i proverite ipconfig na PC1/PC2 — bez ikakve zaštite, PC1 ili PC2 mogu povremeno dobiti pogrešnu konfiguraciju od Rogue-Server-a umesto od R1, zavisno od toga koji server prvi odgovori.
Objašnjenje: Ovo je upravo problem koji DHCP snooping rešava (Tema 6) — bez njega, svič nema način da razlikuje legitiman od neovlašćenog DHCP servera.
Korak 7 – Konfiguracija DHCP Snooping-a
SW1(config)#ip dhcp snooping
SW1(config)#ip dhcp snooping vlan 1
SW1(config)#interface gigabitEthernet 0/1
SW1(config-if)#ip dhcp snooping trust
SW1(config-if)#exit
Korak 8 – Konfiguracija DAI
SW1(config)#ip arp inspection vlan 1
SW1(config)#interface gigabitEthernet 0/1
SW1(config-if)#ip arp inspection trust
SW1(config-if)#exit
Korak 9 – Konfiguracija Port Security na pristupnim portovima
SW1(config)#interface range fastEthernet 0/1 - 3
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport port-security
SW1(config-if-range)#switchport port-security maximum 1
SW1(config-if-range)#switchport port-security mac-address sticky
SW1(config-if-range)#switchport port-security violation shutdown
SW1(config-if-range)#exit
Korak 10 – Provera zaštite (POSLE)
Ponovo obnovite DHCP na PC1/PC2 (release/renew ili fast-forward):
R1#show ip dhcp binding
Potvrdite da PC1 i PC2 dosledno dobijaju adrese isključivo od R1 (gateway 192.168.1.1), nikad od Rogue-Server-a.
Proverite statistiku DHCP snooping-a:
SW1#show ip dhcp snooping
SW1#show ip dhcp snooping binding
Objašnjenje: Fa0/3 (port ka Rogue-Server-u) je untrusted po podrazumevanom ponašanju — svič odbacuje DHCPOFFER/DHCPACK poruke koje dolaze sa tog porta, pa PC1/PC2 nikada ne primaju odgovor od Rogue-Server-a, bez obzira na to koji server prvi pokuša da odgovori.
Korak 11 – Proširena ACL: PC1 sme, PC2 ne sme pristupiti Server1
R1(config)#access-list 110 permit ip host <adresa-PC1> host 192.168.2.10
R1(config)#access-list 110 deny ip host <adresa-PC2> host 192.168.2.10
R1(config)#access-list 110 permit ip any any
R1(config)#interface gigabitEthernet 0/1
R1(config-if)#ip access-group 110 out
(zamenite <adresa-PC1>/<adresa-PC2> stvarnim adresama dodeljenim putem DHCP-a, proverenim u Koraku 10)
Objašnjenje: ACL je postavljena na izlazni interfejs ka Server1 (Gi0/1), primenjujući princip najmanjih privilegija (Tema 2) — PC1 ima legitimnu poslovnu potrebu da pristupi Server1, PC2 nema, pa mu je pristup eksplicitno uskraćen dok ostatak mreže i dalje funkcioniše normalno (implicitni permit ip any any na kraju čuva opštu povezanost za sve ostalo).
Korak 12 – Provera ACL-a
PC1> ping 192.168.2.10
Uspešno.
PC2> ping 192.168.2.10
Neuspešno (Destination host unreachable / Request timed out).
Korak 13 – SSH i lokalna AAA na R1
R1(config)#hostname R1
R1(config)#ip domain-name firma.rs
R1(config)#username admin secret Mn0goSl0zenaLoz1nka!
R1(config)#crypto key generate rsa
(unesite 2048 kada IOS zatraži veličinu ključa)
R1(config)#aaa new-model
R1(config)#aaa authentication login default local
R1(config)#line vty 0 4
R1(config-line)#transport input ssh
R1(config-line)#login local
R1(config-line)#exit
Korak 14 – Provera SSH pristupa
Sa PC1 (ili PC2), koristeći Desktop → Terminal ili odgovarajući SSH klijent u Packet Traceru:
ssh -l admin 192.168.1.1
Unesite lozinku i potvrdite uspešnu prijavu.
Korak 15 – Dijagnostička vežba: zaboravljen trust na uplink portu
- Na SW1, namerno uklonite trust oznaku sa uplink porta:
SW1(config-if)#no ip dhcp snooping trustna Gi0/1 (interfejs ka R1). - Obnovite DHCP na PC1 (release/renew).
- Proverite
R1#show ip dhcp binding— PC1 više ne dobija (ili sporadično ne dobija) adresu od R1. - Objasnite svojim rečima, na osnovu Teme 6, zašto uklanjanje
trustoznake sa legitimnog uplink porta narušava DHCP funkcionalnost za sve korisnike, ne samo za rogue server. - Vratite
ip dhcp snooping trustna Gi0/1 da nastavite vežbu.
Korak 16 – Čuvanje konfiguracije
R1#copy running-config startup-config
SW1#copy running-config startup-config
Komande za proveru
show ip dhcp binding
show ip dhcp snooping
show ip dhcp snooping binding
show ip arp inspection
show port-security interface <port>
show access-lists
show running-config | section line vty
Najčešće greške
| Greška | Uzrok | Rešenje |
|---|---|---|
| PC1/PC2 povremeno dobijaju adresu od Rogue-Server-a | DHCP snooping nije uključen (globalno i po VLAN-u), ili Fa0/3 pogrešno označen kao trust | Proveriti Korak 7 |
| Legitiman DHCP prestaje da radi nakon uključivanja DHCP snooping-a | Uplink port (Gi0/1 na SW1) nije označen trust | Proveriti Korak 7, komanda ip dhcp snooping trust na uplinku |
| ACL blokira i PC1, ne samo PC2 | Adresa PC1 u ACL-u ne odgovara stvarno dodeljenoj DHCP adresi | Proveriti show ip dhcp binding i ažurirati ACL |
| SSH konekcija odbijena | RSA ključ nije generisan, ili ip domain-name/hostname nedostaju kao preduslov | Proveriti Korak 13, tačan redosled komandi |
Postupak rešavanja problema (troubleshooting)
show ip dhcp binding— proveriti da klijenti dobijaju adrese isključivo od legitimnog servera.show ip dhcp snoopingishow ip dhcp snooping binding— proveriti status snooping-a i binding tabelu.show port-security interface <port>— proveriti status port security-ja po portu.show access-lists— proveriti brojače pogodaka (matches) ACL pravila.show running-config | section line vty— proveriti da je SSH ispravno konfigurisan i Telnet isključivo isključen.
Završna provera
Vežba je uspešno završena kada:
- PC1 i PC2 dosledno dobijaju IP adresu isključivo od R1, nikad od Rogue-Server-a.
- PC1 uspešno pristupa Server1, PC2 ne uspeva (ACL demonstracija).
- SSH pristup ka R1 radi sa lokalnim AAA nalogom, Telnet je isključen.
- Objašnjen je uzrok narušene DHCP funkcionalnosti nakon uklanjanja
trustoznake (Korak 15).
Dodatni izazov
Dodajte TACACS+ ili RADIUS server (Server-PT sa AAA servisom, ako je dostupan u vašoj verziji Packet Tracer-a) i izmenite AAA konfiguraciju na R1 da prvo pokuša autentifikaciju preko tog eksternog servera, sa lokalnim nalogom kao rezervnom (fallback) opcijom ako server nije dostupan: aaa authentication login default group tacacs+ local. Objasnite zašto je bitno zadržati local kao rezervnu opciju, a ne osloniti se isključivo na eksterni server.
Rešenje
Kompletno rešenje ove vežbe nalazi se u /resenja/modul-16/04-laboratorijska-vezba-resenje.md.
📖 Prikaži rešenje
Rešenje laboratorijske vežbe – Modul 16
Kompletna konfiguracija – R1
Router>enable
Router#configure terminal
Router(config)#hostname R1
R1(config)#interface gigabitEthernet 0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface gigabitEthernet 0/1
R1(config-if)#ip address 192.168.2.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.9
R1(config)#ip dhcp pool LAN1
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
R1(dhcp-config)#default-router 192.168.1.1
R1(dhcp-config)#dns-server 8.8.8.8
R1(dhcp-config)#exit
R1(config)#access-list 110 permit ip host 192.168.1.10 host 192.168.2.10
R1(config)#access-list 110 deny ip host 192.168.1.11 host 192.168.2.10
R1(config)#access-list 110 permit ip any any
R1(config)#interface gigabitEthernet 0/1
R1(config-if)#ip access-group 110 out
R1(config-if)#exit
R1(config)#hostname R1
R1(config)#ip domain-name firma.rs
R1(config)#username admin secret Mn0goSl0zenaLoz1nka!
R1(config)#crypto key generate rsa
(unesite 2048 kada IOS zatraži veličinu ključa)
R1(config)#aaa new-model
R1(config)#aaa authentication login default local
R1(config)#line vty 0 4
R1(config-line)#transport input ssh
R1(config-line)#login local
R1(config-line)#exit
R1(config)#end
R1#copy running-config startup-config
(Napomena: adrese 192.168.1.10/192.168.1.11 u ACL-u pretpostavljaju da su to prve dve DHCP dodeljene adrese PC1/PC2, potvrđene komandom show ip dhcp binding pre pisanja ACL-a — u praksi ih treba proveriti, ne pretpostaviti.)
Kompletna konfiguracija – SW1
Switch>enable
Switch#configure terminal
Switch(config)#hostname SW1
SW1(config)#ip dhcp snooping
SW1(config)#ip dhcp snooping vlan 1
SW1(config)#ip arp inspection vlan 1
SW1(config)#interface gigabitEthernet 0/1
SW1(config-if)#ip dhcp snooping trust
SW1(config-if)#ip arp inspection trust
SW1(config-if)#exit
SW1(config)#interface range fastEthernet 0/1 - 3
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport port-security
SW1(config-if-range)#switchport port-security maximum 1
SW1(config-if-range)#switchport port-security mac-address sticky
SW1(config-if-range)#switchport port-security violation shutdown
SW1(config-if-range)#exit
SW1(config)#end
SW1#copy running-config startup-config
Konfiguracija Rogue-Server, Server1, PC1, PC2
| Uređaj | IP adresa | Maska | Napomena |
|---|---|---|---|
| Rogue-Server | 192.168.1.250 | 255.255.255.0 | DHCP servis uključen, pogrešan gateway 192.168.1.254 |
| Server1 | 192.168.2.10 | 255.255.255.0 | Gateway 192.168.2.1 |
| PC1, PC2 | DHCP | — | Dobijaju adrese od R1 |
Korak 6 – Provera problema (PRE zaštite)
Bez DHCP snooping-a, ipconfig na PC1 ili PC2 povremeno prikazuje gateway 192.168.1.254 (od Rogue-Server-a) umesto ispravnog 192.168.1.1 — potvrđujući da bilo koji DHCP server na mreži trenutno može da „pobedi" legitimni.
Korak 10 – Provera zaštite (POSLE)
R1#show ip dhcp binding
IP address Client-ID/Hardware address Lease expiration Type
192.168.1.10 0100.5079.6668.01 1 day Automatic
192.168.1.11 0100.5079.6668.02 1 day Automatic
SW1#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
0100.5079.6668.01 192.168.1.10 86400 dhcp-snooping 1 FastEthernet0/1
0100.5079.6668.02 192.168.1.11 86400 dhcp-snooping 1 FastEthernet0/2
Nakon više ponovljenih release/renew ciklusa, PC1 i PC2 nikada ne dobijaju konfiguraciju od Rogue-Server-a — svi pokušaji sa Fa0/3 (untrusted) su odbačeni.
Korak 12 – Provera ACL-a
PC1> ping 192.168.2.10
Reply from 192.168.2.10: bytes=32 time<1ms TTL=126
PC2> ping 192.168.2.10
Request timed out.
Korak 14 – Provera SSH pristupa
PC1> ssh -l admin 192.168.1.1
Password:
R1>
Uspešna prijava potvrđuje da SSH sa lokalnom AAA autentifikacijom radi ispravno.
Korak 15 – Dijagnostička vežba
Nakon SW1(config-if)#no ip dhcp snooping trust na Gi0/1:
R1#show ip dhcp binding
PC1, nakon release/renew, više ne dobija (ili sporadično ne dobija) adresu — čak i legitimni DHCPOFFER/DHCPACK od R1 sada dolazi preko porta koji SW1 tretira kao untrusted, pa ga svič odbacuje po istom pravilu koje je ranije blokiralo Rogue-Server.
Objašnjenje: DHCP snooping ne razlikuje „dobar" od „loš" server po sadržaju poruke — razlikuje ih isključivo po tome da li poruka dolazi sa trust ili untrusted porta. Uklanjanje trust oznake sa legitimnog uplink porta čini da svič tretira čak i ispravan DHCP saobraćaj sa R1 kao neovlašćen i odbacuje ga, potpuno prekidajući DHCP funkcionalnost za sve korisnike na tom VLAN-u — ne samo za rogue server.
Nakon vraćanja ip dhcp snooping trust na Gi0/1, DHCP ponovo radi normalno.
Rešenje dodatnog izazova
R1(config)#aaa authentication login default group tacacs+ local
Objašnjenje: Zadržavanje local kao rezervne (fallback) opcije je ključno jer, ako eksterni TACACS+ server postane nedostupan (kvar, gubitak mrežne veze, planirano održavanje), administrator i dalje može da se prijavi koristeći lokalni nalog — bez ove rezerve, nedostupnost eksternog AAA servera bi potpuno zaključala sve administratore van uređaja, uključujući u trenutku kada je pristup najpotrebniji (npr. tokom dijagnostike upravo tog problema).