如何:強化TCP/IP堆疊安全
目標
使用本模組可以實現:
• |
強化伺服器的 TCP/IP 堆疊安全
|
• |
保護伺服器免遭“拒絕服務”和其他基於網路的攻擊
|
• |
在檢測到攻擊時啟用 SYN 洪水攻擊保護
|
• |
設定用於確認是什麼構成攻擊的閾值
|
如何使用本模組
預設情況下,本模組中的一些登錄檔項和值可能不存在。在這些情況下,請建立這些登錄檔項、值和數值資料。
有關 Windows 2000 控制的 TCP/IP 網路設定的登錄檔的詳細資訊,請參閱白皮書“Microsoft Windows 2000 TCP/IP Implementation Details”,網址為 [url]http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/network/deploy/depovg/tcpip2k.asp[/url](英文)
注意:這些設定會修改伺服器上 TCP/IP 的工作方式。Web 伺服器的特徵將確定觸發拒絕服務對策的最佳閾值。對於客戶端的連線,一些值可能過於嚴格。在將本模組的建議部署到產品伺服器之前,要對這些建議進行測試。
摘要
TCP/IP 堆疊負責處理傳入和傳出的 IP 資料包,並將資料包中的資料路由到要處理它們的應用程式。預設情況下,TCP/IP 天生就是一個不安全的協議。但是,Microsoft® Windows® 2000 版本允許您配置其操作,以抵禦網路級別的大多數拒絕服務攻擊。
本模組解釋如何強化 TCP/IP 堆疊的安全,以及如何在 Windows 登錄檔內配置各種 TCP/IP 引數,以便保護伺服器免遭網路級別的拒絕服務攻擊,包括 SYS 洪水攻擊、ICMP 攻擊和 SNMP 攻擊。
必備知識
可以在 Windows 登錄檔內配置各種 TCP/IP 引數,以便保護伺服器免遭網路級別的拒絕服務攻擊,包括 SYS 洪水攻擊、ICMP 攻擊和 SNMP 攻擊。可以配置登錄檔項,以便:
• |
在檢測到攻擊時啟用 SYN 洪水攻擊保護機制。
|
• |
設定用於確認構成攻擊的閾值。
|
本“如何”向管理員介紹必須配置哪些登錄檔項和登錄檔值,以抵禦基於網路的拒絕服務攻擊。
注意 這些設定會修改伺服器上 TCP/IP 的工作方式。Web 伺服器的特徵將確定觸發拒絕服務對策的最佳閾值。對於客戶端的連線,一些值可能過於嚴格。在將本文件的建議部署到產品伺服器之前,應當測試這些建議。
TCP/IP 天生就是一個不安全的協議。但是,Windows 2000 版本允許您配置其操作,以抵禦網路級別的拒絕服務攻擊。預設情況下,本“如何”中引用的一些登錄檔項和值可能不存在。在這些情況下,請建立這些登錄檔項、值和值資料。
有關 Windows 2000 的登錄檔所控制的 TCP/IP 網路設定的詳細資訊,請參閱白皮書“Microsoft Windows 2000 TCP/IP Implementation Details”,網址為 [url]http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/network/deploy/depovg/tcpip2k.asp[/url](英文)。
抵禦 SYN 攻擊
SYN 攻擊利用了 TCP/IP 連線建立機制中的安全漏洞。要實施 SYN 洪水攻擊,攻擊者會使用程式傳送大量 TCP SYN 請求來填滿伺服器上的掛起連線佇列。這會禁止其他使用者建立網路連線。
要保護網路抵禦 SYN 攻擊,請按照下面這些通用步驟操作(這些步驟將在本文件的稍後部分進行說明):
• |
啟用 SYN 攻擊保護
|
• |
設定 SYN 保護閾值
|
• |
設定其他保護
|
啟用 SYN 攻擊保護
啟用 SYN 攻擊保護的命名值位於此登錄檔項的下面:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices。
值名稱: SynAttackProtect
建議值: 2
有效值: 0 – 2
說明:使 TCP 調整 SYN-ACK 的重傳。配置此值後,在遇到 SYN 攻擊時,對連線超時的響應將更快速。在超過 TcpMaxHalfOpen 或 TcpMaxHalfOpenRetried 的值後,將觸發 SYN 攻擊保護。
設定 SYN 保護閾值
下列值確定觸發 SYN 保護的閾值。這一部分中的所有登錄檔項和值都位於登錄檔項 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 的下面。這些登錄檔項和值是:
• |
值名稱: 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_MACHINESYSTEMCurrentControlSetServices 的下面。這些登錄檔項和值是:
• |
值名稱: 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 攻擊
這一部分的命名值都位於登錄檔項 HKLMSystemCurrentControlSetServicesAFDParameters 的下面
值: EnableICMPRedirect
建議的數值資料: 0
有效值:0(禁用),1(啟用)
說明:通過將此登錄檔值修改為 0,能夠在收到 ICMP 重定向資料包時禁止建立高成本的主機路由。
建議的數值資料: 0
有效值:0(禁用),1(啟用)
說明:通過將此登錄檔值修改為 0,能夠在收到 ICMP 重定向資料包時禁止建立高成本的主機路由。
使用表 2 中彙總的值可以獲得最大程度的保護:
表 2:建議值
值名稱 | 值 (REG_DWORD) |
EnableICMPRedirect
|
0
|
抵禦 SNMP 攻擊
這一部分的命名值位於登錄檔項 HKLMSystemCurrentControlSetServicesTcpipParameters 的下面。
值: EnableDeadGWDetect
建議的數值資料: 0
有效值:0(禁用),1(啟用)
說明:禁止攻擊者強制切換到備用閘道器
建議的數值資料: 0
有效值:0(禁用),1(啟用)
說明:禁止攻擊者強制切換到備用閘道器
使用表 3 中彙總的值可以獲得最大程度的保護:
表 3:建議值
值名稱 | 值 (REG_DWORD) |
EnableDeadGWDetect
|
0
|
AFD.SYS 保護
下面的登錄檔項指定核心模式驅動程式 Afd.sys 的引數。Afd.sys 用於支援 Windows Sockets 應用程式。這一部分的所有登錄檔項和值都位於登錄檔項 HKLMSystemCurrentControlSetServicesAFDParameters 的下面。這些登錄檔項和值是:
• |
值 EnableDynamicBacklog
建議的數值資料: 1 有效值:0(禁用),1(啟用) 說明:指定 AFD.SYS 功能,以有效處理大量的 SYN_RCVD 連線。有關詳細資訊,請參閱“Internet Server Unavailable Because of Malicious SYN Attacks”,網址為 [url]http://support.microsoft.com/default.aspx?scid=kb;en-us;142641[/url](英文)。 |
• |
值名稱: 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
|
其他保護
這一部分的所有登錄檔項和值都位於登錄檔項 HKLMSystemCurrentControlSetServicesTcpipParameters 的下面。
保護遮蔽的網路細節
網路地址轉換 (NAT) 用於將網路與傳入連線遮蔽開來。攻擊者可能規避此遮蔽,以便使用 IP 源路由來確定網路拓撲。
值: DisableIPSourceRouting
建議的數值資料: 1
有效值:0(轉發所有資料包),1(不轉發源路由資料包),2(丟棄所有傳入的源路由資料包)。
說明:禁用 IP 源路由,後者允許傳送者確認資料包在網路中應採用的路由。
建議的數值資料: 1
有效值:0(轉發所有資料包),1(不轉發源路由資料包),2(丟棄所有傳入的源路由資料包)。
說明:禁用 IP 源路由,後者允許傳送者確認資料包在網路中應採用的路由。
避免接受資料包片段
處理資料包片段可以是高成本的。雖然拒絕服務很少來自外圍網路內,但此設定能防止處理資料包片段。
值: EnableFragmentChecking
建議的數值資料: 1
有效值:0(禁用),1(啟用)
說明:禁止 IP 堆疊接受資料包片段。
建議的數值資料: 1
有效值:0(禁用),1(啟用)
說明:禁止 IP 堆疊接受資料包片段。
切勿轉發去往多臺主機的資料包
多播資料包可能被多臺主機響應,從而導致響應淹沒網路。
值: EnableMulticastForwarding
建議的數值資料: 0
有效範圍:0 (false),1 (true)
說明:路由服務使用此引數來控制是否轉發 IP 多播。此引數由路由和遠端訪問服務建立。
建議的數值資料: 0
有效範圍:0 (false),1 (true)
說明:路由服務使用此引數來控制是否轉發 IP 多播。此引數由路由和遠端訪問服務建立。
只有防火牆可以在網路間轉發資料包
多主機伺服器切勿在它所連線的網路之間轉發資料包。明顯的例外是防火牆。
值: IPEnableRouter
建議的數值資料: 0
有效範圍:0 (false),1 (true)
說明:將此引數設定為 1 (true) 會使系統在它所連線的網路之間路由 IP 資料包。
建議的數值資料: 0
有效範圍:0 (false),1 (true)
說明:將此引數設定為 1 (true) 會使系統在它所連線的網路之間路由 IP 資料包。
遮蔽網路拓撲結構細節
可以使用 ICMP 資料包請求主機的子網掩碼。只洩漏此資訊是無害的;但是,可以利用多臺主機的響應來了解內部網路的情況。
值: EnableAddrMaskReply
建議的數值資料: 0
有效範圍:0 (false),1 (true)
說明:此引數控制計算機是否響應 ICMP 地址遮蔽請求。
建議的數值資料: 0
有效範圍:0 (false),1 (true)
說明:此引數控制計算機是否響應 ICMP 地址遮蔽請求。
使用表 5 中彙總的值可以獲得最大程度的保護。
表 5:建議值
值名稱 | 值 (REG_DWORD) |
DisableIPSourceRouting
|
1
|
EnableFragmentChecking
|
1
|
EnableMulticastForwarding
|
0
|
IPEnableRouter
|
0
|
EnableAddrMaskReply
|
0
|
缺陷
在測試這些值的變化時,請參照在產品中所期望的網路流量進行測試。這些設定會修改被認為正常並偏離了測試預設值的專案的閾值。一些閾值可能由於範圍太小而無法在客戶端的連線速度劇烈變化時可靠地支援客戶端。
其他資源
有關 TCP/IP 的其他資料,請參考下面的資源:
• |
有關強化 TCP/IP 堆疊的詳細資訊,請參閱 Microsoft 知識庫文章 315669 How To:Harden the TCP/IP Stack Against Denial of Service Attacks in Windows 2000(英文)。
|
• |
有關 Windows 2000 TCP/IP 實現的詳細資訊,請參閱“Windows 2000 TCP/IP Protocols and Services”(英文)(Davies, Joseph 和 Lee, Thomas 著,Microsoft Press,2000 年)。
|
• |
有關 Windows 2000 TCP/IP 實現的詳細資訊,請參閱 TechNet 網站上的“Microsoft Windows 2000 TCP/IP Implementation Details”,網址為 [url]http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/network/deploy/depovg/tcpip2k.asp[/url](英文)。
本文轉自loveme2351CTO部落格,原文連結: http://blog.51cto.com/loveme23/8407,如需轉載請自行聯絡原作者
|
相關文章
- 如何強化TCP/IP 堆疊安全教程TCP
- TCP/IP堆疊中的路由漏洞 (BSD,缺陷) (轉)TCP路由
- [golang]如何看懂呼叫堆疊Golang
- JS 堆疊JS
- java堆疊Java
- 堆疊圖
- 平衡堆疊
- TCP/IP基礎文章(安全篇) (轉)TCP
- 如何理解TCP/IP協議?TCP協議
- 圖的深度優先遍歷[非堆疊、堆疊實現]
- 如何利用執行緒堆疊定位問題執行緒
- 記憶體堆疊記憶體
- 堆疊的工作原理
- C#堆疊(Stack)C#
- 利用Decorator和SourceMap優化JavaScript錯誤堆疊優化JavaScript
- 如何優雅地檢視 JS 錯誤堆疊?JS
- C#中堆和堆疊的區別C#
- iOS Crash 捕獲及堆疊符號化思路剖析iOS符號
- 華為裝置堆疊原理
- Thrift的網路堆疊
- C++堆疊詳解C++
- 泛型鏈式堆疊泛型
- 第六講 堆疊操作
- 益智補劑:Stamets堆疊
- 圖的深度優先遍歷(堆疊實現和非堆疊實現)
- 如何解決快應用堆疊溢位問題
- 如何抓取Thread Dump(轉儲執行緒堆疊)thread執行緒
- 大型站點TCP/IP協議優化TCP協議優化
- junkman 遠端堆疊監控
- 什麼是網路堆疊?
- Java 堆疊記憶體分配Java記憶體
- iOS crash 日誌堆疊解析iOS
- (js佇列,堆疊) (FIFO,LIFO)JS佇列
- z-index堆疊規則Index
- StackOverflowError堆疊溢位錯誤Error
- TCP TCP/IP HTTP HTTPSTCPHTTP
- TCP/IP族TCP
- TCP/IP模型TCP模型