在網絡管理中,如何防御各種網絡攻擊,保護網絡的安全運行,是網管員必須重視的問題。這就要求網管員熟悉各種網絡攻擊的特點,才能有針對性的采取保護措施。例如利用交換機等網絡設備自帶的安全功能,就可以輕松化解各種潛在的安全威脅。眾所周知,在思科交換機上不僅可以提供基于端口的安全控制,還提供了DHCP偵聽(DHCP Snooping),動 態 ARP檢 測(Dynamic ARP Inspection)和 IP源 防 護(IP Source Guard)等基于主機和端口的安全控制手段。
在實際的網絡管理中,會使用DHCP服務器為客戶機分配IP地址和核心的網絡配置參數。對于DHCP的欺騙攻擊來說,攻擊者會將自身的主機偽裝成DHCP服務器或者客戶端,分別以不同的方式來攻擊DHCP服務器。對于黑客來說,當其連接到交換網絡后,將自己偽裝成DHCP服務器,當同一個VLAN中的其他主機向外產生廣播數據幀,來請求DHCP的IP地址時,黑客的主機就會搶先向其分配IP,當然,這肯定是虛假的IP。例如,本地VLAN使用三層交換機的網關為192.168.1.254,而黑客會為其提供偽造的網關IP(例如是黑客主機的地址192.168.1.253),造成該客戶端到達外網的流量會先經過黑客的主機,再經過轉發后到達外部網絡。
這樣,攻擊者將毫不費力的偵聽到該客戶機的所有對外的訪問信息。攻擊者也可能將自身偽裝成DHCP客戶端,不停的對外發送DHSP請求包,當然,其會不斷的偽裝不同的MAC地址。這就會給DHCP服務器造成一個錯覺,認為網絡中很多主機向其申請IP,造成其不斷的向下分發IP,直到DHCP地址池耗盡為止。
針對DHCP欺騙攻擊,思科交換機提供了DHCP偵聽功能。該功能可以跟蹤和記錄所有的DHCP請求(Discover)和回應(Offer)消息,來檢測DHCP信息在傳遞過程中是否存在異常情況(例如檢測當一臺主機產生大量的Discover消息等)。前者由客戶端產生,后者由DHCP服務器產生。DHCP Snooping會記錄Offer消息中的IP地址分配信息,籍此交換機會知曉在本地交換網絡中哪些主機(即MAC地址)分配了什么樣的IP地址。
DHCP Snooping會 對Request消息進行流量的限制,即限制在一個接口上每分鐘產生的Request消息的流量。如果該流量到達預設的閥值,交換機就會認為有用戶偽裝成DHCP客戶端,不停的發送Request消息對DHCP服務器進行拒絕服務攻擊,交換機就會對該端口進行管控。針對DHCP的Offer消息,交換機可以將其限定在某些接口上,例如將只將某個接口連接到DHCP服務器,只允許在該接口上出現DHCP的Offer消息,如果其他的接口上出現了Offer消息,交換機就會認為其連接的主機是偽裝的DHCP服務器。DHCP Snooping將 交換網絡中的端口分為信任(Trust)和非信任(Untrust)端口。
對于前者來說,允許連接到DHCP服務器,可以接收DHCP服務器發出的消息(例如Offer和Replay消息等)。對于后者來說,是不允許接收DHCP服務器發送來的數據,即其不允許連接DHCP服務器。如果該類型的接口上出現了DHCP的Offer包,就會被交換機丟棄。這樣,當黑客主機連接到了Untrust接口,其產生的所有offer包是無法進行交換網絡中的。一般來說,會將接入層交換機的所有連接到主機的接口都配置成Untrust接口,同時將所有的上行鏈路都配置成Trust接口,因為上行鏈路通常是安全的骨干網絡,DHCP服務器往往出現在上行鏈路中。
進入交換機額全局配置模式,執行“ip dhcp snooping”命令,開啟DHCP偵聽功能。執行“ip dhcp snooping information option”命令,將一些擴展信息也提交到監控內容中。執行“ip dhcp snooping valn 10,20”命令,在指定的VALN上看起DHCP Snooping功能。默認情況下,所有的接口都是Untrust狀態。可以針對特定的端口,將其配置為Untrust狀態。
例如執行“interface fastethernet 1/0/9” 命令,進入指定的端口。執行“description Uplink”,“switchport mode trunk”,“switchport trunk allowed vlan 10,20”,“ip dhcp snooping trust” 命 令,為該端口設置描述信息,將其設置為Trust狀態,在該接口上可以連接合法的DHCP服務器。對于Untrust接口,可以設置其閥值。例如執行“int ran fa 1/0/10,fa1/0/20”命令,進入指定的端口。
之后執行“description Access Port”,“ip dhcp limit rate 10”的命令,為其設置好描述信息,并允許其在一分鐘內最多能夠出現10個DHCP數據包。這樣就可以防止黑客連接到該接口來偽裝成DHCP客戶端,對DHCP服務器發起拒絕服務攻擊了。
當黑客發送的DHCP請求包達到預設的閥值后,該端口就會自動關閉。執行“show ip dhcp snooping binding”命令,可以監聽哪個MAC地址獲得了哪個IP地址信息,以及對應的租期,監聽類型,所屬的VLAN,連接的端口等內容。
在網絡環境中經常會遇到ARP毒化攻擊,其本質就是ARP欺騙攻擊。例如,當A主機想連接某個路由器,為了獲取其MAC地址,該主機會首先向外部發送ARP請求,該請求實際上是廣播數據幀,主要用來尋找路由器的MAC地址。因為是廣播數據幀,所以可能會到達黑客主機,當其收到該ARP請求后,就會自身偽裝成目標路由器的IP地址,并將自身的IP地址通告給上述主機。這樣,就會讓A主機誤以為黑客主機就是目標路由器。這樣,A主機發送的數據機會傳送給黑客主機。而黑客主機會通過設置一些路由信息,將A主機發送的數據轉發給目標路由器。
可以看出,ARP毒化攻擊就是黑客主機用自己的MAC地址,來回應其他主機對于其他節點的ARP請求。在思科交換機上,提供了DAI(動態ARP檢測)功能來抗擊ARP毒化攻擊,這樣可以有效防止惡意ARP響應出現在網絡環境中,并且可以檢測數據庫來對比找出哪些是惡意的ARP,以及哪些是正確的ARP請求。
例如,當網關主機需要尋找A主機時,會產生一個ARP請求,來獲取A主機的MAC地址。當黑客主機獲得該請求后,會使用其自身的MAC地址進行回應。當該ARP回應包到達交換機后,交換機上的DAI功能對其進行偵聽和監控,并提取其中的信息,并將其和本地的數據庫進行比對,如果信息符合規范,說明其是一個正確的ARP回應包,否則說明其非法的ARP信息。
交換機是如何知曉每臺主機的IP和MAC地址的對應關系呢?這其實和DHCP Snooping功能相關。DHCP Snooping會偵聽每一個DHCP Offer消息,來獲取每一個MAC地址和IP的正確對應關系。這樣,就可以建立所需的數據庫。
由此可以看出,當黑客主機冒充A主機的MAC地址的ARP回應包到達交換機后,就會被交換機識破并被丟棄。要想在交換機上開啟DAI功能,首先需要正確的開啟和配置DHCP Snooping功能。和DHCP Snooping一樣,DAI也會將端口分為Trust和Untrust兩種。對于前者來說,其連接的主機不可能出現ARP欺騙的現象,即無需檢測直接轉發ARP數據包。對于后者來說,必須對所有的ARP消息進行檢測,判斷其合法性。不僅需要對ARP回應包中的IP和MAC的對應關系進行檢測,還可以限制允許發送的ARP數據包的數量。
這樣,可以防止黑客使用ARP掃描來探測網絡中的主機信息。在交換機全局配置模式下按照上述方法開啟DHCP Snooping功能,并針對對應的VLAN開啟DHCP偵聽,并配置對應端口的閥值。執 行“ip arp inspection vlan 10,20”命令,來針對目標VLAN開啟DAI保護功能。當然,還需要按照上述方法,開啟針對特定端口將其配置為Trust狀態。執行“ip arp inspection trust”命令,針對特定的Trust端口開啟DAI信任。
注意,在默認情況下,針對ARP檢測來說,如果沒有具體配置的話,所有的端口都將會自動處于Untrust狀態,即其發送的ARP信息都會被跟蹤和監視。對于連接企業主干網絡的上行鏈路或者連接合法服務器的接口來說,可以將其設置為Trust狀態。