Po ostatnim wpisie jak bronic się przed atakiem arpspoof, pomyślałem że w sumie to powinienem też pokazać jak bronić się przed atakami arpspoof w sieci, tam gdzie są do dyspozycji zarządzalne przełączniki. Do wykorzystania mam stary przełącznik HP ProCurve 2626 ale jest on w pełni zarządzalny i po odpowiedniej konfiguracji spokojnie ochroni mnie przed atakiem arpspoof.
Poniższa konfiguracja jest naprawdę prosta a dodatkowo będzie działać na wyższych modelach przełączników HP np. HP ProCurve 2600, 3500, 5400.
Mechanizmy
Na przełączniku skorzystam z dwóch mechanizmów dhcp-snooping i arp-protect.
DHCP snooping – jest to mechanizm który ma za zadanie śledzić fizyczna lokalizacje hosta, upewniać się że host używa adresu przypisanego tylko do niego i że host korzysta tylko z upoważnionego serwera DHCP.
Arp protect – jest to funkcja która sprawdza autentyczność pakietów ARP przed ich dalszym przekazaniem. Arp protect nie działa bez DHCP snooping.
Konfiguracja
Stan jest taki że posiadam zarządzalny przełącznik do którego wpinam na porcie 1 komputer ofiarę z adresem 192.168.0.11, na porcie 3 komputer atakujący z adresem 192.168.0.13 i na porcie 5 link do głównego przełącznika który jest bramą w sieci z adresem ip 192.168.0.254. Za nim jest DHCP, serwery itd. Przełącznik ma skonfigurowany tylko domyślny VLAN 1.
Cała konfiguracja to włączenie mechanizmów, wskazanie vlanu na którym maja mechanizmy działać i wskazanie zaufanego portu. Zazwyczaj będzie to trunk lub tagowany port lub tagowany trunk. Natomiast arp-protect validate src-mac dest-mac sprawdza czy wszelkie żądania lub odpowiedzi ARP ze źródłem MAC w nagłówku Ethernet odpowiada adresowi nadawcy MAC w treści pakietu.
conf
dhcp-snooping
dhcp-snooping vlan 1
dhcp-snooping trust 5
arp-protect
arp-protect trust 5
arp-protect vlan 1
arp-protect validate src-mac dest-mac
Całość konfiguracji będzie wyglądała jak poniżej. Jest to domyślna konfiguracja plus powyższa.
hostname "sw" snmp-server community "public" Unrestricted vlan 1 name "DEFAULT_VLAN" untagged 1-26 ip address dhcp-bootp exit dhcp-snooping dhcp-snooping vlan 1 interface 5 dhcp-snooping trust exit arp-protect arp-protect validate src-mac dest-mac arp-protect trust 5 arp-protect vlan 1 password manager
Diagnostyka
Zabezpieczenia są włączone, sprawdzę jak wyglądają różne statystyki i przydatne informacje przed atakiem.
Wyświetlam statystyki arp-protect
sh arp-protect statistics
ARP Protection Counters for VLAN 1 ARPs forwarded : 1 Bad Sender/Target IP : 0 Bad bindings : 0 Source/Sender MAC mismatches : 0 Malformed pkts : 0 Dest/Target MAC mismatches : 0
Sprawdzam czy arp-protect jest włączony i jakie porty zostały oznaczone jako zaufane.
sh arp-protect
ARP Protection Information ARP Protection Enabled : Yes Protected Vlans : 1 Validate : Port Trust ---- ----- 1 No 2 No 3 No 4 No 5 Yes 6 No 7 No 8 No 9 No 10 No 11 No 12 No 13 No 14 No 15 No 16 No 17 No 18 No 19 No 20 No 21 No 22 No 23 No 24 No 25 No 26 No
Sprawdzam jakie mac adresy pojawiły się na przełączniku
sh mac
Status and Counters - Port Address Table MAC Address Located on Port ------------- --------------- 001e0b-000005 5 001e4f-000001 1 5c260a-000003 3
sh arp
IP ARP table IP Address MAC Address Type Port --------------- ----------------- ------- ---- 192.168.0.254 b499ba-000005 dynamic 5
Sprawdzam czy już zostały przypisane adresy IP do Mac adresów.
sh dhcp-snooping bindings
MacAddress IP VLAN Interface Time Left ------------- --------------- ---- --------- --------- 001e4f-000001 192.168.0.11 1 1 28587 5c260a-000003 192.168.0.13 1 3 28308
Sprawdzam statystyki dhcp-snopping
sh dhcp-snooping stats
Packet type Action Reason Count ----------- ------- ---------------------------- --------- server forward from trusted port 3 client forward to trusted port 13 server drop received on untrusted port 0 server drop unauthorized server 0 client drop destination on untrusted port 0 client drop untrusted option 82 field 0 client drop bad DHCP release request 0 client drop failed verify MAC check 0
Po próbie ataku
Aby przetestować ten scenariusz uruchomiłem takie same skrypty jak w poprzednim wpisie Jak bronić się przed atakiem arpspoof?
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward gateway=192.168.0.254 target=192.168.0.11 xterm -e arpspoof -t $gateway $target & xterm -e arpspoof -t $target $gateway & xterm -e urlsnarf & xterm driftnet &
Sprawdzam statystyki arp-protect już po przypuszczalnym ataku, widać pojawiły się złe powiązania
sh arp-protect statistics
ARP Protection Counters for VLAN 1 ARPs forwarded : 22 Bad Sender/Target IP : 0 Bad bindings : 36 Source/Sender MAC mismatches : 0 Malformed pkts : 0 Dest/Target MAC mismatches : 0
Wyświetlam logi w których widać że zostały zablokowane pakiety które wychodziły z portu trzeciego (atakujący) które miały na celu okłamać ofiarę i bramę.
sh run
I 07/05/13 05:50:37 arp-protect: Deny ARP Reply 5c260a-000003,192.168.0.11 port 3, vlan 9 I 07/05/13 05:50:37 arp-protect: Deny ARP Reply 5c260a-000003,192.168.0.254 port 3, vlan 9
Oczywiście atakujący nie zdołał podsłuchać niczego ze stacji ofiary i sieć zostaje bezpieczna pod kątem tego ataku.
Logowanie
Warto do konfiguracji przełącznika dodać wpis dzięki któremu zaloguje on na zdalny syslog powyższe zdarzenia.
logging 192.168.0.200
Nie masz serwera syslog? zobacz jak opisałem konfiguracje we wpisie Jak skonfigurować serwer syslog?