因為經常看到網上有看到求助ARP病毒防範辦法,其實ARP欺騙原理簡單,利用的是ARP協定的一個“缺陷”,免費ARP來達到欺騙主機上面的網關的ARP表項。
其實免費ARP當時設計出來是為了2個作用的:
1,IP位址沖突檢測
2,ARP條目自動更新,更新網關。
ARP欺騙就是利用這裡面的第二條,攻擊的主機發送一個ARP更新,條目的ip位址是網關,但是M <script language="javascript" src="/CMS/JS/newsad.js"></script> AC位址一項,卻不是網關,當其他主機接受到,會根據ARP協定的規則,越新的越可靠的原則,達到欺騙的目的。
雖然ARP不是tcp/ip協定簇中的一員,但是鑒于以太網的大行其道,是以放棄動态ARP協定,使用手動方式的來來做ARP映射,好像不大現實(個别情況除外)。
一、深入ARP協定特征
我在這裡介紹Cisco網絡環境下解決這個問題的思路:
其實這裡面使用到了2個技術:DHCP snooping和ARP inspection
1、DHCP snooping
DHCP Snooping技術是DHCP安全特性,通過建立和維護DHCP Snooping綁定表過濾不可信任的DHCP資訊,這些資訊是指來自不信任區域的DHCP資訊。DHCP Snooping綁定表包含不信任區域的使用者MAC位址、IP位址、租用期、VLAN-ID 接口等資訊。
當交換機開啟了DHCP-Snooping後,會對DHCP封包進行偵聽,并可以從接收到的DHCP Request或DHCP Ack封包中提取并記錄IP位址和MAC位址資訊。另外,DHCP-Snooping允許将某個實體端口設定為信任端口或不信任端口。信任端口可以正常接收并轉發DHCP Offer封包,而不信任端口會将接收到的DHCP Offer封包丢棄。這樣,可以完成交換機對假冒DHCP Server的屏蔽作用,確定用戶端從合法的DHCP Server擷取IP位址。
作用:
1.DHCP-snooping的主要作用就是隔絕非法的DHCP server,通過配置非信任端口。
2.建立和維護一張DHCP-snooping的綁定表,這張表一是通過DHCP ack包中的ip和MAC位址生成的,二是可以手工指定。這張表是後續DAI(dynamic ARP inspect)和IP Source Guard 基礎。這兩種類似的技術,是通過這張表來判定ip或者MAC位址是否合法,來限制使用者連接配接到網絡的。
配置:
switch(config)#ip DHCP snooping
switch(config)#ip DHCP snooping vlan 10
switch(config-if)#ip DHCP snooping limit rate 10
/*DHCP包的轉發速率,超過就接口就shutdown,預設不限制
switch(config-if)#ip DHCP snooping trust
/*這樣這個端口就變成了信任端口,信任端口可以正常接收并轉發DHCP Offer封包,不記錄ip和MAC位址的綁定,預設是非信任端口
switch#ip DHCP snooping binding 0009.3452.3ea4 vlan 7 192.168.10.5 interface gi1/0/10
/*這樣可以靜态ip和MAC一個綁定
switch(config)#ip DHCP snooping database tftp:// 10.1.1.1/DHCP_table
/*因為掉電後,這張綁定表就消失了,是以要選擇一個儲存的地方,ftp,tftp,flash皆可。本例中的DHCP_table是檔案名,而不是檔案夾,同時檔案名要手工建立一個
2. ARP inspection
1.介紹
DAI是以DHCP-snooping的綁定表為基礎來檢查MAC位址和ip位址的合法性。
2.配置
switch(config)#ip DHCP snooping vlan 7
switch(config)#ip DHCP snooping information option
/*預設
switch(config)#ip DHCP snooping
switch(config)#ip ARP inspection vlan 7
/* 定義對哪些 VLAN 進行 ARP 封包檢測
switch(config)#ip ARP inspection validate src-MAC dst-MAC ip
/*對源,目MAC和ip位址進行檢查
switch(config-if)#ip DHCP snooping limit rate 10
switch(config-if)#ip ARP inspection limit rate 15
/* 定義接口每秒 ARP 封包數量
switch(config-if)#ip ARP inspection trust
/*信任的接口不檢查ARP封包,預設是檢測
二.注意點:交換機會錯認受DoS攻擊
對于前面DHCP-snooping的綁定表中關于端口部分,是不做檢測的;同時對于已存在于綁定表中的MAC和ip對于關系的主機,不管是DHCP獲得,還是靜态指定,隻要符合這個表就可以了。如果表中沒有就阻塞相應流量。
在開始應用Dynamic ARP Inspection時,交換機會記錄大量的資料包,當端口通過的資料包過多時,交換機會認為遭受DoS攻擊,進而将端口自動errdisable,造成通信中斷。為了解決這個問題,我們需要加入指令errdisable recovery cause ARP-inspection
在Cisco網絡環境下,boot request在經過了啟用DHCP SNOOPING特性的裝置上時,會在DHCP資料包中插入option 82的選項(具體見RFC3046)
這個時候,boot request中資料包中的gateway ip address:為全0,是以一旦DHCP relay 裝置檢測到這樣的資料包,就會丢棄。
如果DHCP伺服器使用了中繼服務,那需要在網關交換機上鍵入如下指令:
方法一:
inter vlan7
ip DHCP relay information trusted
方法二:
switch(config)# ip DHCP relay information trust-all
三.總結:防止非法的ARP請求
雖然DHCP snooping是用來防止非法的DHCP server接入的,但是它一個重要作用是一旦用戶端獲得一個合法的DHCP offer。啟用DHCP snooping裝置會在相應的接口下面記錄所獲得IP位址和用戶端的MAC位址。這個是後面另外一個技術ARP inspection檢測的一個依據。ARP inspection是用來檢測ARP請求的,防止非法的ARP請求。
認為是否合法的标準的是前面DHCP snooping時建立的那張表。因為那種表是DHCP server正常回應時建立起來的,裡面包括是正确的ARP資訊。如果這個時候有ARP攻擊資訊,利用ARP inspection技術就可以攔截到這個非法的ARP資料包。
其實利用這個方法,還可以防止使用者任意修改IP位址,造成位址沖突的問題。