本文提供在Cisco路由器上的Cisco IOS®軟體中,透過網路型應用程式辨識(NBAR)和存取控制清單(ACL),阻斷網路入口點的「紅色代碼」蠕蟲的方法。此解決方案應與Microsoft為IIS伺服器推薦的修補程式結合使用。
注意:此方法在Cisco 1600系列路由器上不起作用。
注意:由於某些P2P流量的P2P協定性質,無法完全阻止該流量。這些P2P協定會動態更改其簽名,以繞過嘗試完全阻止其流量的任何DPI引擎。因此,建議限制頻寬,而不是完全阻塞頻寬。限制此流量的頻寬。提供少得多的頻寬;但是,讓連線通過。
思科建議您瞭解以下主題:
使用模組化QoS命令列介面(CLI)命令的服務品質(QoS)服務策略。
NBAR
ACL
基於策略的路由
本文件所述內容不限於特定軟體和硬體版本。本文檔中的配置已在運行Cisco IOS版本12.2(24a)的Cisco 3640上進行了測試
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
要抵禦「紅色代碼」,首先應使用Microsoft提供的修補程式(請參閱下面方法A:使用ACL部分中的連結)。這樣可以保護易受攻擊的系統,並從受感染的系統上清除蠕蟲。但是,將修補程式應用到伺服器只會防止蠕蟲感染伺服器,而不會阻止HTTP GET請求到達伺服器。伺服器仍有可能遭受大量感染嘗試。
本建議中詳述的解決方案旨在與Microsoft修補程式配合使用,在網路入口點阻止「紅色代碼」HTTP GET請求。
此解決方案嘗試阻止感染,但它無法解決由於大量快取條目、鄰接關係和NAT/PAT條目累積而導致的問題,因為分析HTTP GET請求內容的唯一方法是建立TCP連線。以下過程無助於防止網路掃描。但是,它將保護站點免受外部網路的侵擾,或者減少電腦必須服務的感染嘗試次數。與入站過濾結合使用時,出站過濾可防止受感染的客戶端將「紅色代碼」蠕蟲傳播到全球網際網路。
本文檔中介紹的解決方案需要Cisco IOS軟體中基於類的標籤功能。具體來說,在HTTP URL的任何部分上進行匹配的功能都使用NBAR中的HTTP子埠分類功能。支援的平台和最低Cisco IOS軟體要求概述如下:
平台 | 最低Cisco IOS軟體 |
---|---|
7200 | 12.1(5)公噸 |
7100 | 12.1(5)公噸 |
3745 | 12.2(8)公噸 |
3725 | 12.2(8)公噸 |
3660 | 12.1(5)公噸 |
3640 | 12.1(5)公噸 |
3620 | 12.1(5)公噸 |
2600 | 12.1(5)公噸 |
1700 | 12.2(2)公噸 |
注意:您需要啟用Cisco Express Forwarding (CEF)才能使用NBAR。
以下平台上還提供了基於類的標籤和分散式NBAR (DNBAR):
平台 | 最低Cisco IOS軟體 |
---|---|
7500 | 12.1(6)E |
FlexWAN | 12.1(6)E |
初始感染嘗試向目標IIS伺服器傳送大型HTTP GET請求。原始的「紅色代碼」腳印顯示如下:
2001-08-04 16:32:23 10.101.17.216 - 10.1.1.75 80 GET /default.ida NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u 7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403
「紅色代碼」II的足跡顯示如下:
2001-08-04 15:57:35 10.7.35.92 - 10.1.1.75 80 GET /default.ida XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090 %u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090% u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403 -
請注意,GET請求始終查詢副檔名為.ida的檔案。這是所有感染嘗試中的常見字串,因此可以作為IOS中帶有基於類的標籤的匹配條件使用。GET請求的其餘部分並不一定一致,因為它只是嘗試建立緩衝區溢位。透過比較以上兩個條目即可看出這一點。
現在有報導說,這兩個特徵碼之間的差異是由於「Code Red」蠕蟲的新病毒株,稱為CodeRed.v3或CodeRed.C。原始的「紅色代碼」變種在GET請求中包含「NNNNNNNN」字串,而新變種包含「XXXXXXXX」。有關詳細資訊,請參閱Symantec建議。
2001年8月6日東部夏令時間下午6:24,我們錄得新的足跡。我們後來瞭解到,這是eEye漏洞掃描程式留下的痕跡。
2001-08-06 22:24:02 10.30.203.202 - 10.1.1.9 80 GET /x.ida AAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=X 403 HTTP/1.1 -
本建議中提供的「紅色代碼」阻止技術還可以透過嚴格類對映定義來阻止這些掃描嘗試,如下一部分所示。
要阻止「紅色代碼」蠕蟲,請使用以下三種方法之一。這三種方法都使用Cisco IOS MQC功能對惡意流量進行分類。然後此流量會被丟棄,如下所述。
此方法在輸出介面上使用ACL來捨棄標籤的「紅色代碼」封包。讓我們使用下列網路圖表來說明此方法的步驟:
以下是設定此方法的步驟:
使用Cisco IOS軟體中的基於類的標籤功能對入站「紅色代碼」駭客進行分類,如下所示:
Router(config)#class-map match-any http-hacks Router(config-cmap)#match protocol http url "*default.ida*" Router(config-cmap)#match protocol http url "*cmd.exe*" Router(config-cmap)#match protocol http url "*root.exe*"
上面的類對映檢視HTTP URL的內部,並且匹配任何指定的字串。請注意,除了「Code Red」的default.ida之外,我們還包括其他檔名。您可以使用此技術來阻止類似的駭客攻擊嘗試,例如Sadmind病毒,如以下文檔所述:
建立策略並使用set命令以使用策略對映標籤入站「紅色代碼」駭客。本文檔使用DSCP值1(以十進位制表示),因為其他任何網路流量都不太可能攜帶該值。
此處我們使用名為「mark-inbound-http-hacks」的策略對映標籤入站「紅色代碼」駭客。
Router(config)#policy-map mark-inbound-http-hacks Router(config-pmap)#class http-hacks Router(config-pmap-c)#set ip dscp 1
將該策略作為入站策略應用到輸入介面上,以標籤到達的「紅色代碼」資料包。
Router(config)#interface serial 0/0 Router(config-if)#service-policy input mark-inbound-http-hacks
按照服務策略設定,配置與DSCP值1匹配的ACL。
Router(config)#access-list 105 deny ip any any dscp 1 Router(config)#access-list 105 permit ip any any
注意:Cisco IOS軟體版本12.2(11)和12.2(11)T在定義類別對映以搭配NBAR (CSCdv48172)時引入了對ACL上log關鍵字的支援。如果使用早期版本,請勿在ACL中使用log關鍵字。這麼做會強制所有封包進行程式交換,而非CEF交換,且NBAR無法運作,因為它需要CEF。
將ACL套用至連線至目標Web伺服器的輸出介面之傳出位置。
Router(config)#interface ethernet 0/1 Router(config-if)#ip access-group 105 out
驗證解決方案是否如預期運作。執行show access-list命令,確保與拒絕語句的「匹配」值不斷增加。
Router#show access-list 105 Extended IP access list 105 deny ip any any dscp 1 log (2406 matches) permit ip any any (731764 matches)
也可以在配置步驟中使用no ip unreachable介面級別命令禁止傳送無法到達目標IP的消息,以避免路由器消耗過多資源。
如果可以將DSCP=1流量策略路由到Null 0,則不建議使用此方法,如方法B部分所述。
此方法使用基於策略的路由來阻止標籤為「紅色代碼」的資料包。如果已經配置了方法A或C,則不需要應用此方法中的命令。
以下是實作此方法的步驟:
對流量進行分類並標籤。使用方法A中所示的class-map 和policy-map 命令。
使用service-policy命令將此策略作為入站策略應用到輸入介面上,以標籤到達的「紅色代碼」資料包。參見方法A。
建立與標籤的「紅色代碼」資料包匹配的擴展IP ACL。
Router(config)#access-list 106 permit ip any any dscp 1
使用route-map命令建立路由策略。
Router(config)#route-map null_policy_route 10 Router(config-route-map)#match ip address 106 Router(config-route-map)#set interface Null0
將路由對映應用於輸入介面。
Router(config)#interface serial 0/0 Router(config-if)#ip policy route-map null_policy_route
使用show access-list命令驗證解決方案能否如預期運作。如果使用輸出ACL並啟用了ACL日誌記錄,則也可以使用show log命令,如下所示:
Router#show access-list 106 Extended IP access list 106 permit ip any any dscp 1 (1506 matches) Router#show log Aug 4 13:25:20: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets Aug 4 13:26:32: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets
我們能夠在路由器的入口介面做出丟棄決策,而不是在每個出口介面上都需要一個輸出ACL。再次建議您使用no ip unreachables 命令禁止傳送無法到達目標IP的消息。
此方法通常可擴充性最高,因為它不依賴於PBR或輸出ACL。
使用方法A中所示的class-map 命令對資料流進行分類。
使用policy-map命令建立策略,並使用police命令為該資料流指定丟棄操作。
Router(config)#policy-map drop-inbound-http-hacks Router(config-pmap)#class http-hacks Router(config-pmap-c)#police 1000000 31250 31250 conform-action drop exceed-action drop violate-action drop
使用service-policy命令將此策略作為入站策略應用到輸入介面上,以丟棄「紅色代碼」資料包。
Router(config)#interface serial 0/0 Router(config-if)#service-policy input drop-inbound-http-hacks
使用show policy-map interface命令驗證解決方案能否如預期運作。確保您看到類值和單個匹配條件的值增加。
Router#show policy-map interface serial 0/0 Serial0/0 Service-policy input: drop-inbound-http-hacks Class-map: http-hacks (match-any) 5 packets, 300 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: protocol http url "*default.ida*" 5 packets, 300 bytes 5 minute rate 0 bps Match: protocol http url "*cmd.exe*" 0 packets, 0 bytes 5 minute rate 0 bps Match: protocol http url "*root.exe*" 0 packets, 0 bytes 5 minute rate 0 bps police: 1000000 bps, 31250 limit, 31250 extended limit conformed 5 packets, 300 bytes; action: drop exceeded 0 packets, 0 bytes; action: drop violated 0 packets, 0 bytes; action: drop conformed 0 bps, exceed 0 bps, violate 0 bps Class-map: class-default (match-any) 5 packets, 300 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any
將NBAR與本文檔中的方法一起使用時,請注意NBAR不支援以下功能:
超過24個併發URL、HOST或MIME型別匹配
在URL中的前400個位元組之外進行匹配
非IP流量
組播和其他非CEF交換模式
分段的資料包
管道化永久HTTP請求
使用安全HTTP的URL/主機/MIME/分類
使用有狀態協定的非對稱流
來自運行NBAR的路由器或發往路由器的資料包
您無法在以下邏輯介面上配置NBAR:
快速EtherChannel
使用通道或加密的介面
VLAN
撥號器介面
多重連結PPP
注意:自Cisco IOS版本12.1(13)E起,NBAR可在VLAN上設定,但僅支援於軟體交換路徑。
由於NBAR不能用於對使用隧道或加密的WAN鏈路上的輸出流量進行分類,因此請將其應用於路由器上的其他介面(例如LAN介面),以便在流量切換到WAN鏈路進行輸出之前執行輸入分類。
有關NBAR的詳細資訊,請參閱相關資訊
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
08-Sep-2014 |
初始版本 |