Labb 28: DHCP Snooping Labb 30: STP mitigering
DHCP (Dynamic Host Configuration Protocol) används för att automatiskt tilldela IP-adresser och annan nätverksinformation, såsom subnetmask, default gateway och DNS-servrar, till klienter i ett nätverk.
Ett vanligt säkerhetshot mot DHCP är en rogue DHCP-server, det vill säga en obehörig DHCP-server som ansluts till nätverket och försöker dela ut felaktiga IP-konfigurationer. Klienter som accepterar dessa konfigurationer kan få fel gateway, fel DNS-server eller en ogiltig IP-adress, vilket kan leda till att nätverksresurser blir otillgängliga eller att trafiken omdirigeras via angriparens system.
För att skydda nätverket mot sådana attacker används DHCP Snooping och Dynamic ARP Inspection (DAI).
DHCP Snooping övervakar och filtrerar DHCP-trafik på switchen. Endast DHCP-svar från betrodda (trusted) portar tillåts, medan DHCP-meddelanden från obehöriga DHCP-servrar blockeras. Funktionen bygger dessutom upp en DHCP-bindningsdatabas som innehåller information om vilka IP-adresser som har tilldelats till vilka klienter.
Dynamic ARP Inspection (DAI) använder DHCP Snooping-databasen för att verifiera ARP-meddelanden. Genom att jämföra ARP-informationen med de registrerade DHCP-bindningarna kan switchen identifiera och blockera falska ARP-meddelanden. Detta skyddar nätverket mot ARP poisoning (ARP-spoofing), där en angripare försöker utge sig för att vara en annan enhet på nätverket.
I denna laboration kommer du först att skapa ett sårbart nätverk och demonstrera hur en rogue DHCP-server kan påverka klienter. Därefter implementeras VLAN-segmentering, DHCP Snooping och Dynamic ARP Inspection för att stegvis öka nätverkets säkerhet och förhindra dessa attacker.
Topologi

Genomförande
Del 1: Skapa ett sårbart nätverk
I den första delen används inga VLAN. Alla enheter tillhör samma broadcast-domän.
Eftersom DHCP Snooping inte är aktiverat kan switchen inte skilja mellan legitima och obehöriga DHCP-servrar. Både den legitima DHCP-servern och den rogue DHCP-servern kan därför svara på DHCP-klienternas förfrågningar.
Konfigurera DHCP-servrar och klienter
- Konfigurera den legitima DHCP-servern.
- Konfigurera den rogue DHCP-servern.
- Konfigurera DHCP-klienterna.
Demonstrera attacken
När en klient skickar ett DHCP Discover-meddelande kan både den legitima DHCP-servern och den rogue DHCP-servern svara med DHCP Offer.
Klienten accepterar normalt det första erbjudandet som kommer fram. Resultatet blir att vissa klienter får korrekt IP-konfiguration från den legitima DHCP-servern medan andra får felaktig IP-konfiguration från den rogue DHCP-servern.
Den rogue DHCP-servern kan påverka samtliga klienter eftersom hela nätverket består av en enda broadcast-domän.
Del 2: Segmentera nätverket med VLAN
- Skapa VLAN 100 (SecureVLAN), VLAN 200 (ManagementVLAN), VLAN 99 (NativeVLAN) och VLAN 999 (BlackholeVLAN).
- Tilldela klientportar till respektive VLAN och konfigurera trunkförbindelser mellan switcharna.
Analysera effekten
- Efter VLAN-segmenteringen begränsas DHCP-broadcasts till respektive VLAN.
- Om den rogue DHCP-servern fortfarande är ansluten till en port i VLAN 1 kommer dess DHCP Offer endast att nå klienter i VLAN 1.
- Klienter i VLAN 100 och VLAN 200 påverkas inte eftersom DHCP-broadcasts inte passerar VLAN-gränser.
- Resultatet blir att den rogue DHCP-serverns påverkan begränsas kraftigt av VLAN-segmenteringen.
Del 3: Rogue switch och trunkattack
Anslut en rogue switch till S1 Fa0/1. Konfigurera länken så att en trunkförbindelse etableras mellan den legitima switchen och den rogue switchen.
Demonstrera attacken
När trunkförbindelsen är etablerad kan VLAN-trafik från flera VLAN transporteras till den rogue switchen. Om angriparen placerar DHCP-servrar i VLAN 100 och VLAN 200 på den rogue switchen kan dessa svara på DHCP-förfrågningar från klienter i respektive VLAN.
Den tidigare VLAN-isoleringen kringgås eftersom den rogue switchen nu har åtkomst till flera VLAN via trunklänken. Resultatet blir att den rogue infrastrukturen återigen kan påverka klienter i flera VLAN trots att nätverket är segmenterat.
Del 4: Implementering av DHCP Snooping
- Aktivera DHCP Snooping på de VLAN som ska skyddas.
- Markera endast portar mot legitima DHCP-servrar som trusted.
Låt klientportar och trunkar mot obehöriga enheter vara untrusted.
Verifiera skyddet
Verifiera att DHCP Offer och DHCP ACK från rogue DHCP-servrar blockeras av switchen.
Del 5: Implementering av Dynamic ARP Inspection
- Aktivera Dynamic ARP Inspection på de VLAN som ska skyddas.
- Markera nödvändiga uplinks och legitima nätverksenheter som trusted.
Verifiera skyddet
Verifiera att obehöriga ARP-svar blockeras och att ARP poisoning-attacker inte längre fungerar.
Konfigurationer
- Skapa VLAN
- S2(config)# vlan 99
- S2(config-vlan)# name NativeVLAN
- S2(config-vlan)# vlan 100
- S2(config-vlan)# name SecureVLAN
- S2(config-vlan)# vlan 200
- S2(config-vlan)# name ManagementVLAN
- S2(config-vlan)# vlan 999
- S2(config-vlan)# name BlackholeVLAN
- S2(config-vlan)# exit
- S2(config)#
- Tilldela portar till VLAN 100
- S2(config)# interface range fa0/1-4
- S2(config-if-range)# switchport mode access
- S2(config-if-range)# switchport access vlan 100
- S2(config-if-range)# no shutdown
- S2(config-if-range)# exit
- Tilldela portar till VLAN 200
- S2(config)# interface range fa0/6-7
- S2(config-if-range)# switchport mode access
- S2(config-if-range)# switchport access vlan 200
- S2(config-if-range)# no shutdown
- S2(config-if-range)# exit
- Tilldela portar till VLAN 999
- S2(config)# interface range fa0/8-24,g0/1-2
- S2(config-if-range)# switchport mode access
- S2(config-if-range)# switchport access vlan 999
- S2(config-if-range)# shutdown
- S2(config-if-range)# exit
- Konfigurera Trunk
- S2(config)# interface fa0/5
- S2(config-if)# switchport mode trunk
- S2(config-if)# switchport trunk native vlan 99
- S2(config-if)# switchport trunk allowed vlan 99,100,200,999
- S2(config-if)# no shutdown
- S2(config-if)# exit
- S2(config)#end
- S2# write memory
- Skapa VLAN
- S1(config)# vlan 99
- S1(config-vlan)# name NativeVLAN
- S1(config-vlan)# vlan 100
- S1(config-vlan)# name SecureVLAN
- S1(config-vlan)# vlan 200
- S1(config-vlan)# name ManagementVLAN
- S1(config-vlan)# vlan 999
- S1(config-vlan)# name BlackholeVLAN
- S1(config-vlan)# exit
- S1(config)#
- Rogue server i VLAN 1
- S1(config)# interface fa0/1
- S1(config-if-range)# switchport mode access
- S1(config-if-range)# switchport access vlan 1
- S1(config-if-range)# no shutdown
- S1(config-if-range)# exit
- S1(config)#
- Tilldela portar till VLAN 999
- S1(config)# interface range fa0/2-3,fa0/6-24,g0/1-2
- S1(config-if-range)# switchport mode access
- S1(config-if-range)# switchport access vlan 999
- S1(config-if-range)# shutdown
- S1(config-if-range)# exit
- S1(config)#
- Konfigurera trunk mot S2
- S1(config)# interface fa0/5
- S1(config-if-range)# switchport mode trunk
- S1(config-if-range)# switchport trunk native vlan 99
- S1(config-if-range)# switchport trunk allowed vlan 99,100,200
- S1(config-if-range)# exit
- S1(config)#
- Konfigurera trunk mot R1
- S1(config)# interface fa0/4
- S1(config-if)# switchport mode trunk
- S1(config-if)# switchport trunk native vlan 99
- S1(config-if)# switchport trunk allowed vlan 99,100,200
- S1(config-if)# no shutdown
- S1(config-if)# exit
- S1(config)# end
- S1# write memory
R1 DHCP server konfigurering
- R1(config)# interface g0/0
- R1(config-if)# no shutdown
- R1(config-if)# exit
- R1(config)# interface g0/0.99
- R1(config-if)# encapsulation dot1q 99 native
- R1(config-if)# ip address 192.168.99.1 255.255.255.0
- R1(config-if)# exit
- R1(config)# interface g0/0.100
- R1(config-if)# encapsulation dot1q 100
- R1(config-if)# ip address 192.168.100.1 255.255.255.0
- R1(config-if)# exit
- R1(config)# interface g0/0.200
- R1(config-if)# encapsulation dot1q 200
- R1(config-if)# ip address 192.168.200.1 255.255.255.0
- R1(config-if)# exit
- R1(config)# ip dhcp excluded-address 192.168.100.1 192.168.100.100
- R1(config)# ip dhcp excluded-address 192.168.200.1 192.168.200.100
- R1(config)# ip dhcp pool VLAN100
- R1(dhcp-config)# network 192.168.100.0 255.255.255.0
- R1(dhcp-config)# default-router 192.168.100.1
- R1(dhcp-config)# dns-server 8.8.8.8
- R1(dhcp-config)# domain-name diginto.se
- R1(dhcp-config)# exit
- R1(config)# ip dhcp pool VLAN200
- R1(dhcp-config)# network 192.168.200.0 255.255.255.0
- R1(dhcp-config)# default-router 192.168.200.1
- R1(dhcp-config)# dns-server 8.8.8.8
- R1(dhcp-config)# domain-name diginto.se
- R1(dhcp-config)# end
- R1# copy running-config startup-config
DHCP klient konfigurationer
Vissa klienter får korrekta IP-konfigurationer från den legitima DHCP-servern, medan andra klienter får felaktiga IP-konfigurationer från den falska (rogue) DHCP-servern.

- S3(config)# vlan 99
- S3(config-vlan)# name NativeVLAN
- S3(config-vlan)# vlan 100
- S3(config-vlan)# name SecureVLAN
- S3(config-vlan)#vlan 200
- S3(config-vlan)# name ManagementVLAN
- S3(config-vlan)# exit
- S3(config)# interface fa0/1
- S3(config-if)# description Trunk to S1
- S3(config-if)# switchport mode trunk
- S3(config-if)# switchport trunk native vlan 99
- S3(config-if)# switchport trunk allowed vlan 1,99,100,200
- S3(config-if)# no shutdown
- S3(config-if)# exit
- S3(config)#
Om rogue DHCP-servern ska attackera VLAN 100
- S3(config)# interface fa0/2
- S3(config-if)# description Rogue DHCP Server VLAN100
- S3(config-if)# switchport mode access
- S3(config-if)# switchport access vlan 100
- S3(config-if)# no shutdown
- S3(config-if)# exit
Om rogue DHCP-servern ska attackera VLAN 200
- S3(config)# interface fa0/3
- S3(config-if)# description Rogue DHCP Server VLAN200
- S3(config-if)# switchport mode access
- S3(config-if)# switchport access vlan 200
- S3(config-if)# no shutdown
- S3(config-if)# exit
- S3(config)#
Rogue DHCP server IP-adressering
- IPv4 Address: 192.168.10.10
- Subnet Mask: 255.255.255.0
- Default Gateway: 192.168.10.1
- NDS Server: 192.168.10.10
Rogue Pool konfiguration:

Tillämpa strukturerad vlan och dhcp snooping
S2 konfigurering
- Tilldela VLAN 100 till Fa0/1-4
- S2(config)# interface range Fa0/1 - 4
- S2(config-if-range)# switchport mode access
- S2(config-if-range)# switchport access vlan 100
- S2(config-if-range)# exit
- Tilldela VLAN 200 till Fa0/6-7
- S2(config)# interface range Fa0/6 - 7
- S2(config-if-range)# switchport mode access
- S2(config-if-range)# switchport access vlan 200
- S2(config-if-range)# exit
- Aktivera DHCP Snooping
- S2(config)# ip dhcp snooping #gäller hela switchen
- S2(config)# ip dhcp snooping vlan 100 # gäller enbart vlan 100
- S2(config)# ip dhcp snooping vlan 200 # gäller enbart vlan 200
- Konfigurera trunk-länk på Fa0/5
- S2(config)# interface Fa0/5
- S2(config-if)# switchport mode trunk
- S2(config-if)# switchport trunk allowed vlan 99,100,200
- S2(config-if)# switchport trunk native vlan 99
- S2(config-if)# ip dhcp snooping trust
- S2(config-if)# exit
- S2(config)#
S1 konfigurering
- Tilldela VLAN 200 till Fa0/2-3
- S1(config)# interface range Fa0/2 - 3
- S1(config-if-range)# switchport mode access
- S1(config-if-range)# switchport access vlan 200
- S1(config-if-range)# exit
- S1(config)#
- Aktivera DHCP Snooping
- S1(config)# ip dhcp snooping
- S1(config)# ip dhcp snooping vlan 200
- S1(config)# exit
- Konfigurera trunk-länk på Fa0/5
- S1(config)# interface Fa0/5
- S1(config-if)# switchport mode trunk
- S1(config-if)#switchport trunk allowed vlan 99,100,200
- S1(config-if)#switchport trunk native vlan 99
- S1(config-if)#ip dhcp snooping trust
- S1(config-if)#exit
- S1(config)#
- Markera Fa0/4 som betrodd port för DHCP Snooping
- S1(config)# interface fa0/4
- S1(config-if)# ip dhcp snooping trust
- S1(config-if)# exit
- S1(config)#
Sammanfattning
Även om den rogue DHCP-servern för närvarande finns på Fa0/1, bör denna port flyttas till VLAN 999 och stängas ner. Genom att göra detta neutraliseras den falska DHCP-servern och kan inte längre påverka nätverket.
Alla andra oanvända portar har redan flyttats till VLAN 999 och stängts ner, vilket ytterligare säkrar nätverket genom att förhindra obehörig åtkomst.
Aktivera ARP Inspection på VLAN
- S1(config)# ip arp inspection vlan 100
- S1(config)# ip arp inspection vlan 200
- S1(config)# ip arp inspection validate src-mac dst-mac ip
- S2(config)# ip arp inspection vlan 100
- S2(config)# ip arp inspection vlan 200
- S2(config)# ip arp inspection validate src-mac dst-mac ip
I denna konfiguration aktiveras ARP Inspection på VLAN 100 och VLAN 200. Funktionen "ip arp inspection validate src-mac dst-mac ip" lägger till en extra säkerhetskontroll genom att jämföra source- och destinations adresserna (MAC och IP) i varje ARP-meddelande för att säkerställa att de är korrekta. Detta minskar risken för att förfalskade ARP-paket ska få tillträde till nätverket.
Vad som händer:
- När ARP Inspection är aktiverat på VLAN 100 och VLAN 200 kommer alla ARP-meddelanden att kontrolleras.
- Om ARP-meddelandet stämmer med uppgifterna i DHCP-bindnings databasen tillåts det. Annars blockeras det.
Markera betrodda portar för ARP Inspection
- Trunk-länk till S2
- S1(config)# interface Fa0/5
- S1(config-if)# ip arp inspection trust
- S1(config-if)# exit
- S1(config)#
- Trunk-länk till S1
- S2(config)# interface Fa0/5
- S2(config-if)# ip arp inspection trust
- S2(config-if)# exit
- S2(config)#
För att ARP Inspection ska fungera smidigt på trunk-länkar mellan switcharna måste dessa portar markeras som "trusted". Betrodda portar är undantagna från ARP Inspection, eftersom dessa anses säkra och pålitliga för att vidarebefordra ARP-meddelanden utan att behöva granskas.
- På switch S1 markeras trunk-porten (Fa0/5) till S2 som "trusted". Detta innebär att ARP Inspection inte tillämpas på denna port, och ARP-meddelanden på denna trunk-länk skickas utan att blockeras.
- På switch S2 markeras trunk-porten (Fa0/5) till S1 som "trusted", vilket innebär samma sak här – ARP-meddelanden på denna trunk-länk skickas utan ARP Inspection-kontroll.
Sammanfattning:
Med ARP Inspection aktiverat på VLAN 100 och VLAN 200 granskas och verifieras alla ARP-meddelanden i dessa VLAN mot DHCP-bindningsdatabasen, medan trunk-länkarna mellan S1 och S2 är undantagna och markerade som betrodda för att undvika onödiga blockeringar.
Hur ARP Inspection fungerar:
-
Validerar ARP-meddelanden:
- ARP Inspection kontrollerar om ARP-meddelanden som skickas i nätverket är äkta. Den jämför informationen i ARP-paketen (MAC- och IP-adresser) med DHCP-bindnings databasen. Paket som matchar tillåts, medan felaktiga paket blockeras.
-
Skyddar mot ARP-förgiftning:
- Huvudsyftet med ARP Inspection är att förhindra ARP poisoning attacker, även kallade "man-in-the-middle-attacker". Sådana attacker sker när en angripare skickar förfalskade ARP-meddelanden för att avlyssna eller manipulera nätverkstrafiken.
-
Stoppar endast skadlig ARP-trafik:
- ARP Inspection påverkar bara skadliga eller felaktiga ARP-meddelanden. Vanlig nätverkstrafik, som IP- eller TCP-baserad kommunikation, störs inte.
-
Betrodda och icke-betrodda portar:
- Betrodda portar (trusted): På trunk-länkar och portar som ansluter till legitima servrar inspekteras inte ARP-trafik, och all kommunikation flödar fritt.
- Icke-betrodda portar (untrusted): Klientportar inspekteras noggrant för att säkerställa att inga falska ARP-meddelanden sprids i nätverket.