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

Switch HP arpprotect arpspoof

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?