如何:強化 TCP/IP 堆棧安全

抵禦 SYN ***

SYN ***利用了 TCP/IP 連接建立機制中的安全漏洞。要實施 SYN 洪水***,***者會使用程序發送大量 TCP SYN 請求來填滿服務器上的掛起連接隊列。這會禁止其他用戶建立網絡連接。
要保護網絡抵禦 SYN ***,請按照下面這些通用步驟操作(這些步驟將在本文檔的稍後部分進行說明):
啓用 SYN ***保護
設置 SYN 保護閾值
設置其他保護

啓用 SYN ***保護

啓用 SYN ***保護的命名值位於此註冊表項的下面:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
值名稱SynAttackProtect
建議值: 2
有效值: 0 – 2
說明:使 TCP 調整 SYN-ACK 的重傳。配置此值後,在遇到 SYN ***時,對連接超時的響應將更快速。在超過 TcpMaxHalfOpenTcpMaxHalfOpenRetried 的值後,將觸發 SYN ***保護。

設置 SYN 保護閾值

下列值確定觸發 SYN 保護的閾值。這一部分中的所有註冊表項和值都位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。這些註冊表項和值是:
值名稱TcpMaxPortsExhausted
建議值: 5
有效值: 0 – 65535
說明:指定觸發 SYN 洪水***保護所必須超過的 TCP 連接請求數的閾值。
值名稱TcpMaxHalfOpen
建議的數值數據: 500
有效值: 100 – 65535
說明:在啓用 SynAttackProtect 後,該值指定處於 SYN_RCVD 狀態的 TCP 連接數的閾值。在超過 SynAttackProtect 後,將觸發 SYN 洪水***保護。
值名稱TcpMaxHalfOpenRetried
建議的數值數據: 400
有效值: 80 – 65535
說明:在啓用 SynAttackProtect 後,該值指定處於至少已發送一次重傳的 SYN_RCVD 狀態中的 TCP 連接數的閾值。在超過 SynAttackProtect 後,將觸發 SYN 洪水***保護。

設置其他保護

這一部分中的所有註冊表項和值都位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。這些註冊表項和值是:
值名稱TcpMaxConnectResponseRetransmissions
建議的數值數據: 2
有效值: 0 – 255
說明:控制在響應一次 SYN 請求之後、在取消重傳嘗試之前 SYN-ACK 的重傳次數。
值名稱TcpMaxDataRetransmissions
建議的數值數據: 2
有效值: 0 – 65535
說明:指定在終止連接之前 TCP 重傳一個數據段(不是連接請求段)的次數。
值名稱EnablePMTUDiscovery
建議的數值數據: 0
有效值: 0, 1
說明:將該值設置爲 1(默認值)可強制 TCP 查找在通向遠程主機的路徑上的最大傳輸單元或最大數據包大小。***者可能將數據包強制分段,這會使堆棧不堪重負。對於不是來自本地子網的主機的連接,將該值指定爲 0 可將最大傳輸單元強制設爲 576 字節。
值名稱KeepAliveTime
建議的數值數據: 300000
有效值: 80 – 4294967295
說明:指定 TCP 嘗試通過發送持續存活的數據包來驗證空閒連接是否仍然未被觸動的頻率。
值名稱NoNameReleaseOnDemand
建議的數值數據: 1
有效值: 0, 1
說明:指定計算機在收到名稱發佈請求時是否發佈其 NetBIOS 名稱。
使用表 1 中彙總的值可獲得最大程度的保護。
表 1:建議值
值名稱 值 (REG_DWORD)
SynAttackProtect
2
TcpMaxPortsExhausted
1
TcpMaxHalfOpen
500
TcpMaxHalfOpenRetried
400
TcpMaxConnectResponseRetransmissions
2
TcpMaxDataRetransmissions
2
EnablePMTUDiscovery
0
KeepAliveTime
300000(5 分鐘)
NoNameReleaseOnDemand
1

抵禦 ICMP ***

這一部分的命名值都位於註冊表項 HKLM\System\CurrentControlSet\Services\AFD\Parameters 的下面
EnableICMPRedirect
建議的數值數據: 0
有效值:0(禁用),1(啓用)
說明:通過將此註冊表值修改爲 0,能夠在收到 ICMP 重定向數據包時禁止創建高成本的主機路由。
使用表 2 中彙總的值可以獲得最大程度的保護:
表 2:建議值
值名稱 值 (REG_DWORD)
EnableICMPRedirect
0

抵禦 SNMP ***

這一部分的命名值位於註冊表項 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 的下面。
EnableDeadGWDetect
建議的數值數據: 0
有效值:0(禁用),1(啓用)
說明:禁止***者強制切換到備用網關
使用表 3 中彙總的值可以獲得最大程度的保護:
表 3:建議值
值名稱 值 (REG_DWORD)
EnableDeadGWDetect
0

AFD.SYS 保護

下面的註冊表項指定內核模式驅動程序 Afd.sys 的參數。Afd.sys 用於支持 Windows Sockets 應用程序。這一部分的所有註冊表項和值都位於註冊表項 HKLM\System\CurrentControlSet\Services\AFD\Parameters 的下面。這些註冊表項和值是:
值 EnableDynamicBacklog
建議的數值數據: 1
有效值:0(禁用),1(啓用)
說明:指定 AFD.SYS 功能,以有效處理大量的 SYN_RCVD 連接。有關詳細信息,請參閱“Internet Server Unavailable Because of Malicious SYN Attacks”,網址爲 http://support.microsoft.com/default.aspx?scid=kb;en-us;142641(英文)。
值名稱MinimumDynamicBacklog
建議的數值數據: 20
有效值: 0 – 4294967295
說明:指定在偵聽的終結點上所允許的最小空閒連接數。如果空閒連接的數目低於該值,線程將被排隊,以創建更多的空閒連接
值名稱:MaximumDynamicBacklog
建議的數值數據: 20000
有效值: 0 – 4294967295
說明:指定空閒連接以及處於 SYN_RCVD 狀態的連接的最大總數。
值名稱DynamicBacklogGrowthDelta
建議的數值數據: 10
有效值: 0 – 4294967295
默認情況下是否出現:否
說明:指定在需要增加連接時將要創建的空閒連接數。
使用表 4 中彙總的值可以獲得最大程度的保護。
表 4:建議值
值名稱 值 (REG_DWORD)
EnableDynamicBacklog
1
MinimumDynamicBacklog
20
MaximumDynamicBacklog
20000
DynamicBacklogGrowthDelta
10

其他保護

這一部分的所有註冊表項和值都位於註冊表項 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 的下面。

保護屏蔽的網絡細節

網絡地址轉換 (NAT) 用於將網絡與傳入連接屏蔽開來。***者可能規避此屏蔽,以便使用 IP 源路由來確定網絡拓撲。
DisableIPSourceRouting
建議的數值數據: 1
有效值:0(轉發所有數據包),1(不轉發源路由數據包),2(丟棄所有傳入的源路由數據包)。
說明:禁用 IP 源路由,後者允許發送者確認數據報在網絡中應採用的路由。

避免接受數據包片段

處理數據包片段可以是高成本的。雖然拒絕服務很少來自外圍網絡內,但此設置能防止處理數據包片段。
EnableFragmentChecking
建議的數值數據: 1
有效值:0(禁用),1(啓用)
說明:禁止 IP 堆棧接受數據包片段。

切勿轉發去往多臺主機的數據包

多播數據包可能被多臺主機響應,從而導致響應淹沒網絡。
EnableMulticastForwarding
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:路由服務使用此參數來控制是否轉發 IP 多播。此參數由路由和遠程訪問服務創建。

只有防火牆可以在網絡間轉發數據包

多主機服務器切勿在它所連接的網絡之間轉發數據包。明顯的例外是防火牆。
IPEnableRouter
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:將此參數設置爲 1 (true) 會使系統在它所連接的網絡之間路由 IP 數據包。

屏蔽網絡拓撲結構細節

可以使用 ICMP 數據包請求主機的子網掩碼。只泄漏此信息是無害的;但是,可以利用多臺主機的響應來了解內部網絡的情況。
EnableAddrMaskReply
建議的數值數據: 0
有效範圍:0 (false),1 (true)
說明:此參數控制計算機是否響應 ICMP 地址屏蔽請求。
使用表 5 中彙總的值可以獲得最大程度的保護。
表 5:建議值
值名稱 值 (REG_DWORD)
DisableIPSourceRouting
1
EnableFragmentChecking
1
EnableMulticastForwarding
0
IPEnableRouter
0
EnableAddrMaskReply
0

缺陷

在測試這些值的變化時,請參照在產品中所期望的網絡流量進行測試。這些設置會修改被認爲正常並偏離了測試默認值的項目的閾值。一些閾值可能由於範圍太小而無法在客戶端的連接速度劇烈變化時可靠地支持客戶端。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章