|
MaximumDynamicBacklog是當(dāng)前活動的半連接和空閑連接的和,當(dāng)此和超過某個臨界值時,系統(tǒng)拒絕SYN包,Microsoft推薦MaximumDynamicBacklog值不得超過2000。
DynamicBacklogGrowthDelta值是指擴展的空閑連接數(shù),此連接數(shù)并不計算在MaximumDynamicBacklog內(nèi),當(dāng)半連接隊列為某個TCP端囗分配的空閑連接小于MinimumDynamicBacklog時,系統(tǒng)自動分配DynamicBacklogGrowthDelta所定義的空閑連接空間,以使該TCP端囗能處理更多的半連接。Microsoft推薦該值為10。
LINUX:Linux用變量tcp_max_syn_backlog定義backlog隊列容納的最大半連接數(shù)。在Redhat 7.3中,該變量的值默認(rèn)為256,這個值是遠遠不夠的,一次強度不大的SYN攻擊就能使半連接隊列占滿。我們可以通過以下命令修改此變量的值:
# sysctl -w net.ipv4.tcp_max_syn_backlog=`2048`
Sun Solaris Sun Solaris用變量tcp_conn_req_max_q0來定義最大半連接數(shù),在Sun Solaris 8中,該值默認(rèn)為1024,可以通過add命令改變這個值:
# ndd -set /dev/tcp tcp_conn_req_max_q0 2048
HP-UX:HP-UX用變量tcp_syn_rcvd_max來定義最大半連接數(shù),在HP-UX 11.00中,該值默認(rèn)為500,可以通過ndd命令改變默認(rèn)值:
#ndd -set /dev/tcp tcp_syn_rcvd_max 2048
·縮短超時時間
上文提到,通過增大backlog隊列能防范SYN攻擊;另外減少超時時間也使系統(tǒng)能處理更多的SYN請求。我們知道,timeout超時時間,也即半連接存活時間,是系統(tǒng)所有重傳次數(shù)等待的超時時間總和,這個值越大,半連接數(shù)占用backlog隊列的時間就越長,系統(tǒng)能處理的SYN請求就越少。為縮短超時時間,可以通過縮短重傳超時時間(一般是第一次重傳超時時間)和減少重傳次數(shù)來實現(xiàn)。
Windows2000第一次重傳之前等待時間默認(rèn)為3秒,為改變此默認(rèn)值,可以通過修改網(wǎng)絡(luò)接囗在注冊表里的TcpInitialRtt注冊值來完成。重傳次數(shù)由TcpMaxConnectResponseRetransmissions 來定義,注冊表的位置是:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters registry key
當(dāng)然我們也可以把重傳次數(shù)設(shè)置為0次,這樣服務(wù)器如果在3秒內(nèi)還未收到ack確認(rèn)包就自動從backlog隊列中刪除該連接條目。
LINUX:Redhat使用變量tcp_synack_retries定義重傳次數(shù),其默認(rèn)值是5次,總超時時間需要3分鐘。
Sun Solaris Solaris 默認(rèn)的重傳次數(shù)是3次,總超時時間為3分鐘,可以通過ndd命令修改這些默認(rèn)值。本新聞共 4頁,當(dāng)前在第 4頁 1 2 3 4 |
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|