天天看點

網絡攻擊與路由器的NAT功能

某校園網接入網際網路的裝置是一台功能很強的CATALYST6509(帶三層功能),但它最近卻頻繁癱瘓,CPU使用率經常到達百分之99-100,其拓撲結構如下:

attachment.php?fid=7020

CATALYST6509的配置如下: 

... 

ip nat pool teachers 210.83.X.X 210.83.X.X netmask 255.255.255.224 

ip nat pool students 210.83.X.X 210.83.X.X netmask 255.255.255.240 

ip nat inside source list 1 pool teachers overload 

ip nat inside source list 2 pool students overload 

access-list 1 permit 172.17.0.0 0.0.0.255 

access-list 2 permit 192.168.0.0 0.0.3.255 

為了便于管理,教師和學生各使用一個位址池。

經過檢查,發生這種故障的原因是由于網絡病毒或黑客掃描工具的攻擊。比如“紅色代碼”病毒,“紅色代碼”是一種新型的網絡病毒,它感染微軟的IIS系統,改寫WWW伺服器的首頁,并通過HTTP的标準端口80進行傳播,繼續感染其他IIS系統。這種病毒尋找其他IIS系統的方式是通過不斷地對随機産生的IP位址的TCP80端口發出連接配接請求資料包,一旦某台運作了索引服務(INDEX SERVICE)的IIS系統對請求進行了應答,那樣,這台伺服器就可能成為受害者。我們從中可以看出,“紅色代碼”病毒這種大海撈針式的尋找“傳人”的方法,會在短時間内産生成千成萬的TCP連接配接請求,網絡的路由裝置為了支援這樣多的連接配接,就有可能耗盡資源,造成癱瘓,是以這種病毒對網絡的路由裝置的危害很大。 

由于在CATALYST6509上配置了基于端口的NAT功能,一旦校園網内某台感染“紅色代碼”病毒的IIS伺服器向外發起攻擊,或某人使用端口掃描工具不斷地發起針對各個TCP和UDP端口的試探連接配接,6509都會為每個TCP或UDP連接配接在它的位址翻譯表中建立一條基于端口複用的連接配接,這樣一來,随着攻擊的進行,NAT表裡維持的連接配接數會越來越多,直到耗盡CPU使用率。這時,讓我們看一下CATLYST6509的情況: 

CAT6509#sh ip nat statistics 

Total active translations: 18404 (0 static, 18404 dynamic; 18372 extended) 

Outside interfaces: 

Vlan3, Vlan5 

Inside interfaces: 

Vlan10, Vlan12, Vlan103, Vlan108, Vlan109, Vlan165, Vlan166 

Hits: 979206714 Misses: 9323076 

Expired translations: 10650887 

Dynamic mappings: 

-- Inside Source 

access-list 1 pool teachers refcount 9269 

pool teachers: netmask 255.255.255.224 

start 210.83.X.X end 210.83.X.X 

type generic, total addresses 28, allocated 28 (100%), misses 34659 

access-list 2 pool students refcount 9135 

pool students: netmask 255.255.255.240 

type generic, total addresses 13, allocated 13 (100%), misses 194892 

NAT表裡的連接配接數已經達到1萬8千多條!這基本是CPU處理能力的極限(還要看資料包的流量)。 

CAT6509#sh ip nat tr 

… 

tcp 210.83.X.X:1248 192.168.0.226:1039 61.139.8.X:80 61.139.8.X:80 

tcp 210.83.X.X:1274 192.168.0.226:1049 61.139.8.X:80 61.139.8.X:80 

tcp 210.83.X.X:1253 192.168.0.226:1040 61.139.8.X:80 61.139.8.X:80 

tcp 210.83.X.X:1255 192.168.0.226:1088 61.139.8.X:80 61.139.8.X:80 

tcp 210.83.X.X:1257 192.168.0.226:1089 61.139.8.X:80 61.139.8.X:80 

tcp 210.83.X.X:1258 192.168.0.226:1041 61.139.8.X:80 61.139.8.X:80 

tcp 210.83.X.X:1264 192.168.0.226:1066 61.139.8.X:80 61.139.8.X:80 

從輸出裡可見,大部分連接配接都是192.168.0.226這台機器發起的,使用下面的指令可以看得更清楚: 

CAT6509#sh ip nat tr | include 192.168.0.226 

(輸出略)

那麼如何解決這個問題? 

需要使用下面的一系列指令: 

CAT6509(conf)#ip nat translation max-entries 12000 

把NAT表裡的連接配接數限制到12000條,防止達到處理能力的極限,造成全癱。

CAT6509(conf)#ip nat translation icmp-timeout 10 

ICMP連接配接的空閑時限是60秒,現在把它設為10秒,這樣可以使空閑10秒的ICMP連接配接被及時清除出NAT表,防止NAT表裡的連接配接數被“虛占其位”的ICMP空閑連接配接搞得迅速增長,耗盡CPU資源。

CAT6509(conf)#ip nat translation udp-timeout 20 

UDP連接配接的空閑時限是300秒,現在把它設為20秒,原因同前面一樣。

CAT6509(conf)#ip nat translation syn-timeout 15 

設定發出TCP連接配接請求資料包後,等待握手應答的空閑時間,預設是60秒,現在設為15秒。由于“紅色代碼”病毒是以一種漫無目的方式發起TCP連接配接,許多目的位址是不存在的,或是沒有運作IIS系統,是以根本沒有應答。設定發出TCP連接配接請求資料包後,等待握手應答的空閑時間為15秒,可以使空閑15秒的TCP發起連接配接被及時清除出NAT表。

CAT6509(conf)#ip nat translation tcp-timeout 300 

設定當TCP連接配接經過三次握手建立起來後,連接配接沒有資料流的空閑時限,預設為24小時,現在設為5分鐘,這樣可以使空閑300秒的TCP連接配接被及時清除出NAT表,同樣防止NAT表裡的連接配接數被“虛占其位”的TCP空閑連接配接搞得迅速增長,耗盡CPU資源。 

應用上述配置後, 從實際效果上看,确實起了作用,6509抗攻擊能力顯著提高。 

--------------------------------------------------------------------------------

看看一個在cisco4000上的配置

ip kerberos source-interface any

ip nat translation timeout 3000

ip nat translation tcp-timeout 500

ip nat translation udp-timeout 30

ip nat translation finrst-timeout 30

ip nat translation syn-timeout 30

ip nat translation dns-timeout 30

ip nat translation icmp-timeout 30

ip nat translation max-entries 24000

ip nat inside source list 1 interface Ethernet0 overload

ip classless

ip route 0.0.0.0 0.0.0.0 221.237.163.1

ip route 210.6.0.0 255.255.0.0 10.1.1.3

no ip http server

!

access-list 1 permit 10.1.0.0 0.0.255.255

access-list 1 permit 211.83.0.0 0.0.255.255

access-list 1 permit 192.168.0.0 0.0.255.255

access-list 1 permit 210.6.0.0 0.0.255.255

本文轉自 qq8658868 51CTO部落格,原文連結:http://blog.51cto.com/hujizhou/1186352,如需轉載請自行聯系原作者

繼續閱讀