如何強化TCP/IP 堆棧安全教程

2016-08-09 14:51:34 來源:互聯(lián)網作者:sou6 人氣: 次閱讀 151 條評論

目標使用本模塊可以實現(xiàn):•強化服務器的TCP/IP堆棧安全•保護服務器免遭&ldq...

  目標

  使用本模塊可以實現(xiàn):

強化服務器的 TCP/IP 堆棧安全

保護服務器免遭“拒絕服務”和其他基于網絡的攻擊

在檢測到攻擊時啟用 SYN 洪水攻擊保護

設置用于確認是什么構成攻擊的閾值

  適用范圍

  本模塊適用于下列產品和技術:

Microsoft Windows 2000 Server 和 Windows 2000 Advanced Server

  如何使用本模塊

  默認情況下,本模塊中的一些注冊表項和值可能不存在。在這些情況下,請創(chuàng)建這些注冊表項、值和數(shù)值數(shù)據(jù)。

  注意:這些設置會修改服務器上 TCP/IP 的工作方式。Web 服務器的特征將確定觸發(fā)拒絕服務對策的最佳閾值。對于客戶端的連接,一些值可能過于嚴格。在將本模塊的建議部署到產品服務器之前,要對這些建議進行測試。

  摘要

  TCP/IP 堆棧負責處理傳入和傳出的 IP 數(shù)據(jù)包,并將數(shù)據(jù)包中的數(shù)據(jù)路由到要處理它們的應用程序。默認情況下,TCP/IP 天生就是一個不安全的協(xié)議。但是,Microsoft® Windows® 2000 版本允許您配置其操作,以抵御網絡級別的大多數(shù)拒絕服務攻擊。

  本模塊解釋如何強化 TCP/IP 堆棧的安全,以及如何在 Windows 注冊表內配置各種 TCP/IP 參數(shù),以便保護服務器免遭網絡級別的拒絕服務攻擊,包括 SYS 洪水攻擊、ICMP 攻擊和 SNMP 攻擊。

  必備知識

  可以在 Windows 注冊表內配置各種 TCP/IP 參數(shù),以便保護服務器免遭網絡級別的拒絕服務攻擊,包括 SYS 洪水攻擊、ICMP 攻擊和 SNMP 攻擊??梢耘渲米员眄?,以便:

在檢測到攻擊時啟用 SYN 洪水攻擊保護機制。

設置用于確認構成攻擊的閾值。

  本“如何”向管理員介紹必須配置哪些注冊表項和注冊表值,以抵御基于網絡的拒絕服務攻擊。

  注意 這些設置會修改服務器上 TCP/IP 的工作方式。Web 服務器的特征將確定觸發(fā)拒絕服務對策的最佳閾值。對于客戶端的連接,一些值可能過于嚴格。在將本文檔的建議部署到產品服務器之前,應當測試這些建議。

  TCP/IP 天生就是一個不安全的協(xié)議。但是,Windows 2000 版本允許您配置其操作,以抵御網絡級別的拒絕服務攻擊。默認情況下,本“如何”中引用的一些注冊表項和值可能不存在。在這些情況下,請創(chuàng)建這些注冊表項、值和值數(shù)據(jù)。

  抵御 SYN 攻擊

  SYN 攻擊利用了 TCP/IP 連接建立機制中的安全漏洞。要實施 SYN 洪水攻擊,攻擊者會使用程序發(fā)送大量 TCP SYN 請求來填滿服務器上的掛起連接隊列。這會禁止其他用戶建立網絡連接。

  要保護網絡抵御 SYN 攻擊,請按照下面這些通用步驟操作(這些步驟將在本文檔的稍后部分進行說明):

啟用 SYN 攻擊保護

設置 SYN 保護閾值

設置其他保護

  啟用 SYN 攻擊保護

  啟用 SYN 攻擊保護的命名值位于此注冊表項的下面:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices。

  值名稱: SynAttackProtect

  建議值: 2

  有效值: 0 – 2

  說明:使 TCP 調整 SYN-ACK 的重傳。配置此值后,在遇到 SYN 攻擊時,對連接超時的響應將更快速。在超過 TcpMaxHalfOpen 或 TcpMaxHalfOpenRetried 的值后,將觸發(fā) SYN 攻擊保護。

  設置 SYN 保護閾值

  下列值確定觸發(fā) SYN 保護的閾值。這一部分中的所有注冊表項和值都位于注冊表項 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 的下面。這些注冊表項和值是:

值名稱TcpMaxPortsExhausted
建議值
: 5
有效值: 0 – 65535
說明:指定觸發(fā) SYN 洪水攻擊保護所必須超過的 TCP 連接請求數(shù)的閾值。

值名稱TcpMaxHalfOpen
建議的數(shù)值數(shù)據(jù)
: 500
有效值: 100 – 65535
說明:在啟用 SynAttackProtect 后,該值指定處于 SYN_RCVD 狀態(tài)的 TCP 連接數(shù)的閾值。在超過 SynAttackProtect 后,將觸發(fā) SYN 洪水攻擊保護。

值名稱TcpMaxHalfOpenRetried
建議的數(shù)值數(shù)據(jù)
: 400
有效值: 80 – 65535
說明:在啟用 SynAttackProtect 后,該值指定處于至少已發(fā)送一次重傳的 SYN_RCVD 狀態(tài)中的 TCP 連接數(shù)的閾值。在超過 SynAttackProtect 后,將觸發(fā) SYN 洪水攻擊保護。

  設置其他保護

  這一部分中的所有注冊表項和值都位于注冊表項 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 的下面。這些注冊表項和值是:

值名稱TcpMaxConnectResponseRetransmissions
建議的數(shù)值數(shù)據(jù)
: 2
有效值: 0 – 255
說明:控制在響應一次 SYN 請求之后、在取消重傳嘗試之前 SYN-ACK 的重傳次數(shù)。

值名稱TcpMaxDataRetransmissions
建議的數(shù)值數(shù)據(jù)
: 2
有效值: 0 – 65535
說明:指定在終止連接之前 TCP 重傳一個數(shù)據(jù)段(不是連接請求段)的次數(shù)。

值名稱EnablePMTUDiscovery
建議的數(shù)值數(shù)據(jù)
: 0
有效值: 0, 1
說明:將該值設置為 1(默認值)可強制 TCP 查找在通向遠程主機的路徑上的最大傳輸單元或最大數(shù)據(jù)包大小。攻擊者可能將數(shù)據(jù)包強制分段,這會使堆棧不堪重負。對于不是來自本地子網的主機的連接,將該值指定為 0 可將最大傳輸單元強制設為 576 字節(jié)。

值名稱KeepAliveTime
建議的數(shù)值數(shù)據(jù)
: 300000
有效值: 80 – 4294967295
說明:指定 TCP 嘗試通過發(fā)送持續(xù)存活的數(shù)據(jù)包來驗證空閑連接是否仍然未被觸動的頻率。

值名稱NoNameReleaseOnDemand
建議的數(shù)值數(shù)據(jù)
: 1
有效值: 0, 1
說明:指定計算機在收到名稱發(fā)布請求時是否發(fā)布其 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

  建議的數(shù)值數(shù)據(jù): 0

  有效值:0(禁用),1(啟用)

  說明:通過將此注冊表值修改為 0,能夠在收到 ICMP 重定向數(shù)據(jù)包時禁止創(chuàng)建高成本的主機路由。

  使用表 2 中匯總的值可以獲得最大程度的保護:

  表 2:建議值

值名稱 值 (REG_DWORD)

EnableICMPRedirect

0

  抵御 SNMP 攻擊

  這一部分的命名值位于注冊表項 HKLMSystemCurrentControlSetServicesTcpipParameters 的下面。

  值: EnableDeadGWDetect

  建議的數(shù)值數(shù)據(jù): 0

  有效值:0(禁用),1(啟用)

  說明:禁止攻擊者強制切換到備用網關

  使用表 3 中匯總的值可以獲得最大程度的保護:

  表 3:建議值

值名稱 值 (REG_DWORD)

EnableDeadGWDetect

0

  AFD.SYS 保護

  下面的注冊表項指定內核模式驅動程序 Afd.sys 的參數(shù)。Afd.sys 用于支持 Windows Sockets 應用程序。這一部分的所有注冊表項和值都位于注冊表項 HKLMSystemCurrentControlSetServicesAFDParameters 的下面。這些注冊表項和值是:

值 EnableDynamicBacklog
建議的數(shù)值數(shù)據(jù)
: 1
有效值:0(禁用),1(啟用)
說明:指定 AFD.SYS 功能,以有效處理大量的 SYN_RCVD 連接。

值名稱MinimumDynamicBacklog
建議的數(shù)值數(shù)據(jù)
: 20
有效值: 0 – 4294967295
說明:指定在偵聽的終結點上所允許的最小空閑連接數(shù)。如果空閑連接的數(shù)目低于該值,線程將被排隊,以創(chuàng)建更多的空閑連接

值名稱:MaximumDynamicBacklog
建議的數(shù)值數(shù)據(jù): 20000
有效值: 0 – 4294967295
說明:指定空閑連接以及處于 SYN_RCVD 狀態(tài)的連接的最大總數(shù)。

值名稱DynamicBacklogGrowthDelta
建議的數(shù)值數(shù)據(jù)
: 10
有效值: 0 – 4294967295
默認情況下是否出現(xiàn):否
說明:指定在需要增加連接時將要創(chuàng)建的空閑連接數(shù)。

  使用表 4 中匯總的值可以獲得最大程度的保護。

  表 4:建議值

值名稱 值 (REG_DWORD)

EnableDynamicBacklog

1

MinimumDynamicBacklog

20

MaximumDynamicBacklog

20000

DynamicBacklogGrowthDelta

10

  其他保護

  這一部分的所有注冊表項和值都位于注冊表項 HKLMSystemCurrentControlSetServicesTcpipParameters 的下面。

  保護屏蔽的網絡細節(jié)

  網絡地址轉換 (NAT) 用于將網絡與傳入連接屏蔽開來。攻擊者可能規(guī)避此屏蔽,以便使用 IP 源路由來確定網絡拓撲。

  值: DisableIPSourceRouting

  建議的數(shù)值數(shù)據(jù): 1

  有效值:0(轉發(fā)所有數(shù)據(jù)包),1(不轉發(fā)源路由數(shù)據(jù)包),2(丟棄所有傳入的源路由數(shù)據(jù)包)。

  說明:禁用 IP 源路由,后者允許發(fā)送者確認數(shù)據(jù)報在網絡中應采用的路由。

  避免接受數(shù)據(jù)包片段

  處理數(shù)據(jù)包片段可以是高成本的。雖然拒絕服務很少來自外圍網絡內,但此設置能防止處理數(shù)據(jù)包片段。

  值: EnableFragmentChecking

  建議的數(shù)值數(shù)據(jù): 1

  有效值:0(禁用),1(啟用)

  說明:禁止 IP 堆棧接受數(shù)據(jù)包片段。

  切勿轉發(fā)去往多臺主機的數(shù)據(jù)包

  多播數(shù)據(jù)包可能被多臺主機響應,從而導致響應淹沒網絡。

  值: EnableMulticastForwarding

  建議的數(shù)值數(shù)據(jù): 0

  有效范圍:0 (false),1 (true)

  說明:路由服務使用此參數(shù)來控制是否轉發(fā) IP 多播。此參數(shù)由路由和遠程訪問服務創(chuàng)建。

  只有防火墻可以在網絡間轉發(fā)數(shù)據(jù)包

  多主機服務器切勿在它所連接的網絡之間轉發(fā)數(shù)據(jù)包。明顯的例外是防火墻。

  值: IPEnableRouter

  建議的數(shù)值數(shù)據(jù): 0

  有效范圍:0 (false),1 (true)

  說明:將此參數(shù)設置為 1 (true) 會使系統(tǒng)在它所連接的網絡之間路由 IP 數(shù)據(jù)包。

  屏蔽網絡拓撲結構細節(jié)

  可以使用 ICMP 數(shù)據(jù)包請求主機的子網掩碼。只泄漏此信息是無害的;但是,可以利用多臺主機的響應來了解內部網絡的情況。

  值: EnableAddrMaskReply

  建議的數(shù)值數(shù)據(jù): 0

  有效范圍:0 (false),1 (true)

  說明:此參數(shù)控制計算機是否響應 ICMP 地址屏蔽請求。

  使用表 5 中匯總的值可以獲得最大程度的保護。

  表 5:建議值

值名稱 值 (REG_DWORD)

DisableIPSourceRouting

1

EnableFragmentChecking

1

EnableMulticastForwarding

0

IPEnableRouter

0

EnableAddrMaskReply

0

  缺陷

  在測試這些值的變化時,請參照在產品中所期望的網絡流量進行測試。這些設置會修改被認為正常并偏離了測試默認值的項目的閾值。一些閾值可能由于范圍太小而無法在客戶端的連接速度劇烈變化時可靠地支持客戶端。

    無相關信息