一、IP位址盜用
IP位址的盜用方法多種多樣,其常用方法主要有以下幾種:
1、靜态修改IP位址
對于任何一個TCP/IP實作來說,IP位址都是其使用者配置的必選項。如果使用者在配置TCP/IP或修改TCP/IP配置時,使用的不是授 權配置設定的IP位址,就形成了IP位址盜用。由于IP位址是一個邏輯位址,是以無法限制使用者對于其主機IP位址的靜态修改。
2、成對修改IP-MAC位址
對于靜态修改IP位址的問題,現在很多機關都采用IP與MAC綁定技術加以解決。針對綁定技術,IP盜用技術又有了新的發展,即成對修改 IP-MAC位址。現在的一些相容網卡,其MAC位址可以使用網卡配置程式進行修改。如果将一台計算機的 IP位址和MAC位址都改為另外一台合法主機的IP位址和MAC位址,其同樣可以接入網絡。
另外,對于那些MAC位址不能直接修改的網卡來說,使用者還可以采用軟體的辦法來修改MAC位址,即通過修改底層網絡軟體達到欺騙上層網絡軟體的目的。
3、動态修改IP位址
某些攻擊程式在網絡上收發資料包,可以繞過上層網絡軟體,動态修改自己的 IP位址(或IP-MAC位址對),以達到IP欺騙。
二、IP Source Guard技術介紹
IP源防護(IP Source Guard,簡稱IPSG)是一種基于IP/MAC的端口流量過濾技術,它可以防止區域網路内的IP位址欺騙攻擊。IPSG能夠確定第2層網絡中終端裝置的 IP位址不會被劫持,而且還能確定非授權裝置不能通過自己指定IP位址的方式來通路網絡或攻擊網絡導緻網絡崩潰及癱瘓。
交換機内部有一個IP源綁定表(IP Source Binding Table)作為每個端口接受到的資料包的檢測标準,隻有在兩種情況下,交換機會轉發資料:
所接收到的IP包滿足IP源綁定表中Port/IP/MAC的對應關系
所接收到的是DHCP資料包
其餘資料包将被交換機做丢棄處理。
IP源綁定表可以由使用者在交換機上靜态添加,或者由交換機從DHCP監聽綁定表(DHCP Snooping Binding Table)自動學習獲得。 靜态配置是一種簡單而固定的方式,但靈活性很差,是以Cisco建議使用者最好結合DHCP Snooping技術使用IP Source Guard,由DHCP監聽綁定表生成IP源綁定表。
以DHCP Snooping技術為前提講一下IP Source Guard技術的原理。 在這種環境下,連接配接在交換機上的所有PC都配置為動态擷取IP位址,PC作為DHCP用戶端通過廣播發送DHCP請求,DHCP伺服器将含有IP位址資訊 的DHCP回複通過單點傳播的方式發送給DHCP用戶端,交換機從DHCP封包中提取關鍵資訊(包括IP位址,MAC位址,vlan号,端口号,租期等),并 把這些資訊儲存到 DHCP 監聽綁定表中。(以上這個過程是由DHCP Snooping完成的)
接下來的由IP Source Guard完成。交換機根據DHCP監聽綁定表的内容自動生成IP源綁定表,然後IOS根據IP源綁定表裡面的内容自動在接口加載基于端口的VLAN ACL(PVACL),由該ACL(可以稱之為源IP位址過濾器)來過濾所有IP流量。用戶端發送的IP資料包中,隻有其源IP位址滿足源IP綁定表才會 被發送,對于具有源IP綁定表之外的其他源IP位址的流量,都将被過濾。
PC沒有發送DHCP請求時,其連接配接的交換機端口預設拒絕除了DHCP請求之外的所有資料包,是以PC使用靜态IP是無法連接配接網絡的(除非已經存在綁定好的源IP綁定條目,如靜态源IP綁定條目或者是之前已經生成的動态IP綁定條目還沒過期,而且PC還必須插在正确的端口并設定正确的靜态IP位址)。
IP源防護隻支援第2層端口,其中包括接入(access)端口和幹道(trunk)接口。IP源防護的信任端口/非信任端口也就是DHCP監聽的信任端口/非信任端口。對于非信任端口存在以下兩種級别的IP流量安全過濾:
源IP位址過濾: 根據源IP位址對IP流量進行過濾,隻有當源IP位址與IP源綁定條目比對,IP流量才允許通過。當端口建立、 修改、 删除新的IP源綁定條目的時候,IP源位址過濾器将發生變化。為了能夠反映IP源綁定的變更,端口PACL将被重新修改并重新應用到端口上。 預設情況下,如果端口在沒有存在IP源綁定條目的情況下啟用了IP源防護功能,預設的PACL将拒絕端口的所有流量(實際上是除 DHCP封包以外的所有IP流量)。
源IP和源MAC位址過濾:根據源IP位址和源MAC位址對IP 流量進行過濾,隻有當源IP位址和源MAC位址都與IP源綁定條目比對,IP流量才允許通過。當以IP和MAC位址作為過濾的時候,為了確定DHCP協定 能夠正常的工作,還必須啟用DHCP監聽選項82。 對于沒有選項82的資料,交換機不能确定用于轉發DHCP伺服器響應的用戶端主機端口。相反地,DHCP伺服器響應将被丢棄,客戶機也不能獲得IP位址。
注:交換機使用端口安全(Port Security)來過濾源MAC位址。
當交換機隻使用“IP源位址過濾”時,IP源防護功能與端口安全功能是互相獨立的關系。 端口安全是否開啟對于IP源防護功能來說不是必須的。 如果同時開啟,則兩者也隻是一種寬松的合作關系,IP源防護防止IP位址欺騙,端口安全防止MAC位址欺騙。而當交換機使用“源IP和源MAC位址過濾” 時,IP源防護功能與端口安全功能是就變成了一種“內建”關系,更确切的說是端口安全功能被內建到 IP源防護功能裡,作為IP源防護的一個必須的組成部分。
在這種模式下,端口安全的違規處理(violation)功能将被關閉。對于非法的二層封包,都将隻是被簡單的丢棄,而不會再執行端口安全的違規處理了。 IP源防護功能不能防止用戶端PC的ARP攻擊。ARP攻擊問題必須由DAI功能來解決。如果要支援IP源防護功能,必須是35系列及以上的交換機。 2960目前不支援該功能。
三、IP Source Guard的配置(IPSG配置前必須先配置ip dhcp snooping)
Switch(config-if)# ip verify source Switch(config-if)#ip verify source vlan dhcp-snooping //接口級指令;在該接口下開啟IP源防護功能 |
說明:
I、這兩條語句的作用是一樣的,不同的是:
ip verify source是35系列交換機的指令
ip verify source vlan dhcp-snooping是45/65系列交換機以及76系列路由器的指令
II、這兩條指令後還有個參數port-security,即指令:
Switch (config-if)#ip verify source port-security Switch (config-if)#ip verify source vlan dhcp-snooping port-security |
不加port-security參數,表示IP源防護功能隻執行“源IP位址過濾”模式
加上port-security參數以後,就表示IP源防護功能執行“源IP和源MAC位址過濾”模式
另外,在執行這兩條指令之前需要先執行switchport port-security指令。
III、當執行“源IP和源MAC位址過濾”模式時,還可以通過以下指令限制非法MAC包的速度
Switch (config-if)#switchport port-security limit rate invalid-source-mac 50 //接口級指令;限制非法二層封包的速度為每秒50個;可以用參數none表示不限制 //隻在“源IP和源MAC位址過濾”模式下有效,并且隻有45系列及以上才支援該指令; |
IV、 另外,在發生IP位址欺騙時,35/45系列交換機不會提供任何報錯資訊,隻是丢棄資料封包;而65系列交換機會發出IP位址違背的報錯資訊。
添加一條靜态IP源綁定條目:
Switch (config)#ip source binding 000f.1fc5.1008 vlan 10 192.168.10.131 interface fa0/2 //全局指令;對應關系為:vlan10 - 000f.1f05.1008 - 192.168.10.131 - fa0/2 |
四、顯示IP Source Guard的狀态
Switch#show ip source binding //顯示目前的IP源綁定表 Switch#show ip verify source //顯示目前的IP源位址過濾器的實際工作狀态 |
五、IP Source Guard執行個體
1、單交換機環境(所有主機位于同一個VLAN)
環境:
DHCP伺服器和PC用戶端都位于vlan 10
DHCP伺服器的MAC為000B.DB47.36EF,需要靜态配置設定IP位址192.168.10.2,接在fa0/1
特殊應用伺服器MAC為0016.D49F.4866,需要靜态配置設定IP位址192.168.10.3,接在fa0/2
用戶端PC的MAC為000F.1FC5.1008,通過DHCP動态獲得位址,接在fa0/3
交換機為3560,Vlan 10的網關為192.168.10.1
目前相關配置如下:
ip dhcp snooping vlan 10 ip dhcp snooping ! interface FastEthernet0/1 description : Connect to Win2003 DHCP Server switchport access vlan 10 switchport mode access spanning-tree portfast ip verify source ip dhcp snooping trust interface FastEthernet0/2 ip dhcp snooping limit rate 15 interface FastEthernet0/3 interface Vlan10 ip address 192.168.10.1 255.255.255.0 |
測試步驟:
1、初始狀态:交換機目前已經配置好DHCP Snooping和端口的IP Source Guard(具體配置如上所示),但還沒有添加DHCP伺服器和特殊應用伺服器的靜态源IP綁定條目;并且DHCP伺服器,特殊應用伺服器和用戶端PC都 還沒有連接配接到交換機,即交換機端口處于down狀态
顯示工作狀态:
|
由于目前這三個端口都是down的,是以IP源位址過濾器顯示工作狀态為非激活
注意目前“Filter-type”列裡的“ip”說明目前是“源IP位址過濾”模式;
如果顯示的是“ip-mac”則說明是“源IP和源MAC位址過濾”模式。
2、将DHCP伺服器接上交換機的fa0/1口;特殊應用伺服器接在fa0/2上;确定端口這兩端口為up狀态
|
兩台伺服器接上以後,在IP源位址過濾器裡結果卻是不一樣的
fa0/1還是為非激活狀态,是由于該端口是DHCP監聽的信任端口
fa0/2為激活狀态,但卻是拒絕所有IP流量(雖然這麼顯示,不過DHCP請求是可以通過的)
說明IP源綁定對于DHCP監聽的信任端口和非信任端口的處理方式是不一樣的。
此時在交換機上ping DHCP伺服器的IP位址:
|
再ping特殊應用伺服器的IP位址:
|
3、添加這兩台伺服器的靜态IP源綁定條目
|
可以看到手工添加的兩條靜态條目已經存在了,其租約為infinite,類型為靜态;另外,很明顯該條目不是從DHCP監聽綁定表中學習到的。
Switch#show ip verify source Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- ---------- Fa0/1 ip inactive-trust-port Fa0/2 ip active 192.168.10.3 10 Fa0/3 ip inactive-no-snooping-vlan |
此時 IP 源位址過濾器裡的 fa0/1 沒有任何變化,而 fa0/2 由于在 IP 源綁定表裡有了該條目,現已允許192.168.10.3這個位址通過了
再次ping特殊應用伺服器的IP位址
|
小結,以上結果說明:
IP源防護隻針對非信任端口起作用,對信任端口不起作用。是以不需要為接在信任端口上的主機添加靜态IP源綁定,其依然可以正常通信
IP源綁定能阻止非信任端口上的用戶端以靜态指定IP位址的方式接入網絡。 這些用戶端将無法通信,除非為其手工添加靜态IP源綁定條目。
4、将PC用戶端設定為動态獲得IP位址,接在fa0/3,确定端口處于up狀态
MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 00:0F:1F:C5:10:08 192.168.10.4 691867 dhcp-snooping 10 FastEthernet0/3 Total number of bindings: 1 |
用戶端PC通過DHCP方式獲得了一個位址192.168.10.4;DHCP監聽表裡産生了該用戶端的監聽條目
MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 00:0B:DB:47:36:EF 192.168.10.2 infinite static 10 FastEthernet0/1 00:16:D4:9F:48:66 192.168.10.3 infinite static 10 FastEthernet0/2 00:0F:1F:C5:10:08 192.168.10.4 691550 dhcp-snooping 10 FastEthernet0/3 //此時IP源綁定表根據DHCP監聽綁定表裡的條目自動生成了相應的條目 Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- ---------- Fa0/2 ip active 192.168.10.3 10 Fa0/3 ip active 192.168.10.4 10 |
IP源位址過濾器根據IP源綁定表裡的條目允許192.168.10.4這個IP位址的流量從fa0/3通過
如果PC用戶端此時更換了交換機端口,由于用戶端會再次發起DHCP請求,這将會引起交換機更新DHCP監聽條目。DHCP監聽條目的更新會導緻IP源綁定條目的更新,是以IP源位址過濾器也将随着更新,以适應PC用戶端的實際情況。
如果PC用戶端不更換端口,但要改成靜态IP位址,它隻能改成與動态獲得的IP位址一樣的IP位址,這一舉動是可行的。但用戶端不再會發出DHCP請求來更新租約,是以随着DHCP監聽條目逾時後,還是會被阻止通信。
用戶端不更換端口,但更改為與動态獲得的IP位址不一樣的靜态IP位址,或者更改為同樣的靜态IP但接在了不一樣的端口上,都将會立即被阻止通信。
最終配置:
! ip source binding 0016.d49f.4866 vlan 10 192.168.10.3 interface fa0/2 |
2、單交換機環境(所有主機位于同一個VLAN)
PC1和PC2都位于vlan10;沒有DHCP伺服器
PC1的MAC為000F.1FC5.1008,配置靜态IP位址192.168.10.1,接在fa0/1
PC2的MAC為0016.D49F.4866,配置靜态IP位址192.168.10.2,接在fa0/2
interface FastEthernet0/1 description : Connect to PC1 description : Connect to PC2 ip source binding 000f.1fc5.1008 vlan 10 192.168.10.1 interface fa0/1 ip source binding 0016.d49f.4866 vlan 10 192.168.10.2 interface fa0/2 |
說明:本例是一個純粹的靜态環境,通過手工添加IP源綁定條目實作PC1和PC2互通。可以看出靜态IP源綁定不需要交換機同時啟用DHCP Snooping功能
3、單交換機環境(所有主機位于同一VLAN)
Cisco IOS DHCP伺服器(2821路由器,IOS版本為12.4)和PC用戶端都位于vlan 10
路由器接在交換機的fa0/1
用戶端接在fa0/2
3560交換機相關配置:
description : Connect to IOS DHCP Server C2821_Gi0/0 description : Connect to PC switchport port-security ip verify source port-security |
2821路由器相關配置:
ip dhcp excluded-address 192.168.10.1 192.168.10.2 ip dhcp pool test network 192.168.10.0 255.255.255.0 default-router 192.168.10.1 lease 8 interface GigabitEthernet0/0 description : Connect to C3560_Fa0/1 ip dhcp relay information trusted ip address 192.168.10.2 255.255.255.0 |
說明:本例中采用“源IP和源MAC位址過濾”模式,采用該模式需要注意以下三點:
(1)交換機必須對用戶端的DHCP請求插入選項82資訊,即必須配置ip dhcp snooping information option指令(預設即為開啟)。對于沒有插入選項82的DHCP請求,交換機不能确定用于轉發DHCP伺服器響應的用戶端主機端口。相反地,DHCP 伺服器響應将被丢棄,客戶機也不能獲得IP位址。
實驗過程:通過在3560上配置no ip dhcp snooping information option指令,不再對用戶端的DHCP請求插入選項82。 通過在用戶端(Windows XP)上執行ipconfig /release和ipconfig /renew重新發起DHCP請求過程。結果是用戶端無法獲得IP位址。參考交換機上的DHCP Snooping的debug過程可以得到如下資訊:
00:20:02: DHCP_SNOOPING: received new DHCP packet from input interface (FastEthernet0/1) 00:20:02: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Fa0/1, MAC da: ffff.ffff.ffff, MAC sa: 0009.b7da.f108, IP da: 255.255.255.255, IP sa: 192.168.10.2, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.10.3, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.1fc5.1008 00:20:02: DHCP_SNOOPING_SW: client address lookup failed to locate client interface, retry lookup using packet mac DA: ffff.ffff.ffff 00:20:02: DHCP_SNOOPING_SW: lookup packet destination port failed to get mat entry for mac: 000f.1fc5.1008 00:20:02: DHCP_SNOOPING: can't find output interface for dhcp reply. the message is dropped. |
由以上調試資訊可以看出從路由器過來的DHCP回複包因為找不到目标端口而被交換機丢棄了。
(2)所使用的DHCP伺服器必須支援利用DHCP選項82配置設定IP位址的功能,否則用戶端将無法獲得IP位址(debug資訊類似第(1)項所述)。像 Win2003,Cisco IOS 12.2等作為DHCP伺服器時都不支援利用DHCP選項82來配置設定IP位址。本例中如果采用12.2版本的IOS,将出現用戶端無法獲得IP位址的情 況。
Cisco IOS從版本12.3(4)T 開始支援利用選項82配置設定IP位址。 最簡單的方法,看IOS是否支援指令ip dhcp use class。
可以嘗試在交換機上開啟 DHCP Snooping 的 debug 過程,檢視收到的 DHCP Offer 消息中有沒有DHCP選項82資訊的調試資料。如:
00:10:41: DHCP_SNOOPING: received new DHCP packet from input interface (FastEthernet0/1) 00:10:41: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Fa0/1, MAC da: 000f.1fc5.1008, MAC sa: 0019.e765.d3b0, IP da: 192.168.10.3, IP sa: 192.168.10.2, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.10.3, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 000f.1fc5.1008 00:10:41: DHCP_SNOOPING: binary dump of option 82, length: 20 data:0x52 0x12 0x1 0x6 0x0 0x4 0x0 0xA 0x0 0x2 0x2 0x8 0x0 0x6 0x0 0x12 0xDA 0x88 0x88 0x0 00:10:41: DHCP_SNOOPING: binary dump of extracted circuit id, length: 8 data:0x1 0x6 0x0 0x4 0x0 0xA 0x0 0x2 00:10:41: DHCP_SNOOPING: binary dump of extracted remote id, length: 10 data:0x2 0x8 0x0 0x6 0x0 0x12 0xDA 0x88 0x88 0x0 00:10:41: DHCP_SNOOPING_SW: opt82 data indicates local packet 00:10:41: DHCP_SNOOPING: remove relay information option. 00:10:41: DHCP_SNOOPING: direct forward dhcp reply to output port: FastEthernet0/2. |
(3)必須在端口下同時配置switchport port-security指令。 若沒有該指令,本模式的最終效果與“源IP位址過濾”模式将相同。
實驗過程:本例最初配置完成後,顯示IP源位址過濾器的狀态可以得到:
Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- --------- Fa0/2 ip-mac active 192.168.10.3 00:0F:1F:C5:10:08 10 |
然後去掉3560的fa0/2的switchport port-security指令以後,通過釋放IP位址并重新發起DHCP請求獲得IP位址以後,再次顯示IP源位址過濾器的狀态可以得到:
Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- --------- Fa0/2 ip-mac active 192.168.10.3 permit-all 10 |
此時的過濾表将允許任意MAC位址的資料包通過,隻要其IP位址為192.168.10.3
4、多交換機環境(所有主機位于同一個VLAN)
3560本身作為DHCP伺服器
用戶端PC1和PC2都位于vlan 10
裝置3560和2960通過Gi0/1互聯
PC1的MAC為0009.B7DA.F108,接在2960的fa0/1
PC2的MAC為000F.1FC5.1008,接在2960的fa0/2
3560的相關配置如下:
ip dhcp excluded-address 192.168.10.1 default-router 192.168.10.1 ip dhcp snooping vlan 10 ip dhcp snooping information option allow-untrusted interface GigabitEthernet0/1 description : Connect to C2960_Gi0/1 switchport trunk encapsulation dot1q switchport mode trunk ip dhcp snooping limit rate 360 |
2960的相關配置如下:
interface range FastEthernet0/1 interface range FastEthernet0/2 description : Connect to C3560_Gi0/1 |
顯示狀态:
C3550#show ip dhcp snooping binding MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 00:0F:1F:C5:10:08 192.168.10.4 689699 dhcp-snooping 10 GigabitEthernet0/1 00:09:B7:DA:F1:08 192.168.10.3 688445 dhcp-snooping 10 GigabitEthernet0/1 C3550#show ip source binding 00:0F:1F:C5:10:08 192.168.10.4 689660 dhcp-snooping 10 GigabitEthernet0/1 00:09:B7:DA:F1:08 192.168.10.3 688407 dhcp-snooping 10 GigabitEthernet0/1 C3550#show ip verify source Interface Filter-type Filter-mode IP-address Mac-address Vlan --------- ----------- ----------- --------------- ----------------- -------- Gi0/1 ip active 192.168.10.3 10 Gi0/1 ip active 192.168.10.4 10 |
說明:本例中将IP源防護應用于3560下聯的trunk接口上,該接口為非信任接口。由于2960沒有IP源防護功能,是以從2960過來的資料封包是 有可能存在IP欺騙攻擊的。在3560的trunk口上應用IP源防護将可以把攻擊隔絕在這裡,使受攻擊的範圍減小到最小。但由于 2960本身沒有該功能,是以接在2960上的各個主機之間仍有可能存在攻擊行為。
5、多交換機環境(所有主機位于同一VLAN)
4503交換機自身作為DHCP伺服器
PC1和PC2都位于vlan 10;
PC1接4503的gi2/1口
PC2接3560的fa0/1口
兩交換機互連口是4503 gi1/1 – 3560 gi0/1
4503交換機相關配置:
interface GigabitEthernet2/1 ip verify source vlan dhcp-snooping interface GigabitEthernet1/1 |