成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何進行SYN攻擊防范

安全 黑客攻防
本文通過過濾網關防護和加固TCP/IP協議棧進行防護兩種方式,講解如何進行SYN攻擊防范。使廣大的管理員能夠更好的加強對自己付服務器的安全防護。

SYN攻擊防范技術主要分為兩大類,第一種是通過防火墻等過濾網關防護,另一種是通過加固TCP/IP協議棧進行防范。但是我們要知道,不論是利用哪種防護措施,SYN攻擊防范是不可能達到完美的。我們只能盡可能減少SYN攻擊所造成的危害。

1、過濾網關防護

這里,過濾網關主要指明防火墻,當然路由器也能成為過濾網關。防火墻部署在不同網絡之間,防范外來非法攻擊和防止保密信息外泄,它處于客戶端和服務器之間,利用它來防護SYN攻擊能起到很好的效果。過濾網關防護主要包括超時設置,SYN網關和SYN代理三種。

·網關超時設置:

防火墻設置SYN轉發超時參數(狀態檢測的防火墻可在狀態表里面設置),該參數遠小于服務器的timeout時間。當客戶端發送完SYN包,服務端發送確認包后(SYN+ACK),防火墻如果在計數器到期時還未收到客戶端的確認包(ACK),則往服務器發送RST包,以使服務器從隊列中刪去該半連接。值得注意的是,網關超時參數設置不宜過小也不宜過大,超時參數設置過小會影響正常的通訊,設置太大,又會影響防范SYN攻擊的效果,必須根據所處的網絡應用環境來設置此參數。

·SYN網關:

SYN網關收到客戶端的SYN包時,直接轉發給服務器;SYN網關收到服務器的SYN/ACK包后,將該包轉發給客戶端,同時以客戶端的名義給服務器發ACK確認包。此時服務器由半連接狀態進入連接狀態。當客戶端確認包到達時,如果有數據則轉發,否則丟棄。事實上,服務器除了維持半連接隊列外,還要有一個連接隊列,如果發生SYN攻擊時,將使連接隊列數目增加,但一般服務器所能承受的連接數量比半連接數量大得多,所以這種方法能有效地減輕對服務器的攻擊。

·SYN代理:

當客戶端SYN包到達過濾網關時,SYN代理并不轉發SYN包,而是以服務器的名義主動回復SYN/ACK包給客戶,如果收到客戶的ACK包,表明這是正常的訪問,此時防火墻向服務器發送ACK包并完成三次握手。SYN代理事實上代替了服務器去處理SYN攻擊,此時要求過濾網關自身具有很強的防范SYN攻擊能力。

2、加固tcp/ip協議棧

防范SYN攻擊的另一項主要技術是調整tcp/ip協議棧,修改tcp協議實現。主要方法有SynAttackProtect保護機制、SYN cookies技術、增加最大半連接和縮短超時時間等。tcp/ip協議棧的調整可能會引起某些功能的受限,管理員應該在進行充分了解和測試的前提下進行此項工作。

·SynAttackProtect機制

為防范SYN攻擊,Windows2000系統的tcp/ip協議棧內嵌了SynAttackProtect機制,Win2003系統也采用此機制。SynAttackProtect機制是通過關閉某些socket選項,增加額外的連接指示和減少超時時間,使系統能處理更多的SYN連接,以達到防范SYN攻擊的目的。默認情況下,Windows2000操作系統并不支持SynAttackProtect保護機制,需要在注冊表以下位置增加SynAttackProtect鍵值:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

當SynAttackProtect值(如無特別說明,本文提到的注冊表鍵值都為十六進制)為0或不設置時,系統不受SynAttackProtect保護。

當SynAttackProtect值為1時,系統通過減少重傳次數和延遲未連接時路由緩沖項(route cache entry)防范SYN攻擊。

當SynAttackProtect值為2時(Microsoft推薦使用此值),系統不僅使用backlog隊列,還使用附加的半連接指示,以此來處理更多的SYN連接,使用此鍵值時,tcp/ip的TCPInitialRTT、window size和可滑動窗囗將被禁止。

我們應該知道,平時,系統是不啟用SynAttackProtect機制的,僅在檢測到SYN攻擊時,才啟用,并調整tcp/ip協議棧。那么系統是如何檢測SYN攻擊發生的呢?事實上,系統根據TcpMaxHalfOpen,TcpMaxHalfOpenRetried 和TcpMaxPortsExhausted三個參數判斷是否遭受SYN攻擊。

TcpMaxHalfOpen 表示能同時處理的最大半連接數,如果超過此值,系統認為正處于SYN攻擊中。Windows2000 server默認值為100,Windows2000 Advanced server為500。

TcpMaxHalfOpenRetried定義了保存在backlog隊列且重傳過的半連接數,如果超過此值,系統自動啟動SynAttackProtect機制。Windows2000 server默認值為80,Windows2000 Advanced server為400。

TcpMaxPortsExhausted 是指系統拒絕的SYN請求包的數量,默認是5。

如果想調整以上參數的默認值,可以在注冊表里修改(位置與SynAttackProtect相同)#p#

· SYN cookies技術

我們知道,TCP協議開辟了一個比較大的內存空間backlog隊列來存儲半連接條目,當SYN請求不斷增加,并這個空間,致使系統丟棄SYN連接。為使半連接隊列被塞滿的情況下,服務器仍能處理新到的SYN請求,SYN cookies技術被設計出來。

SYN cookies應用于linux、FreeBSD等操作系統,當半連接隊列滿時,SYNcookies并不丟棄SYN請求,而是通過加密技術來標識半連接狀態。

在TCP實現中,當收到客戶端的SYN請求時,服務器需要回復SYN+ACK包給客戶端,客戶端也要發送確認包給服務器。通常,服務器的初始序列號由服務器按照一定的規律計算得到或采用隨機數,但在SYN cookies中,服務器的初始序列號是通過對客戶端IP地址、客戶端端囗、服務器IP地址和服務器端囗以及其他一些安全數值等要素進行hash運算,加密得到的,稱之為cookie。當服務器遭受SYN攻擊使得backlog隊列滿時,服務器并不拒絕新的SYN請求,而是回復cookie(回復包的SYN序列號)給客戶端, 如果收到客戶端的ACK包,服務器將客戶端的ACK序列號減去1得到cookie比較值,并將上述要素進行一次hash運算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此時并不用查看此連接是否屬于backlog隊列)。

在RedHat linux中,啟用SYN cookies是通過在啟動環境中設置以下命令來完成:

# echo 1 ?? /proc/sys/net/ipv4/tcp_syncookies

· 增加最大半連接數

大量的SYN請求導致未連接隊列被塞滿,使正常的TCP連接無法順利完成三次握手,通過增大未連接隊列空間可以緩解這種壓力。當然backlog隊列需要占用大量的內存資源,不能被無限的擴大。

Windows2000:除了上面介紹的TcpMaxHalfOpen, TcpMaxHalfOpenRetried參數外,Windows2000操作系統可以通過設置動態backlog(dynamic backlog)來增大系統所能容納的最大半連接數,配置動態backlog由AFD.SYS驅動完成,AFD.SYS是一種內核級的驅動,用于支持基于window socket的應用程序,比如ftp、telnet等。AFD.SYS在注冊表的位置:

HKLM\System\CurrentControlSet\Services\AFD\Parameters\EnableDynamicBacklog值為1時,表示啟用動態backlog,可以修改最大半連接數。

MinimumDynamicBacklog表示半連接隊列為單個TCP端囗分配的最小空閑連接數,當該TCP端囗在backlog隊列的空閑連接小于此臨界值時,系統為此端囗自動啟用擴展的空閑連接(DynamicBacklogGrowthDelta),Microsoft推薦該值為20。

MaximumDynamicBacklog是當前活動的半連接和空閑連接的和,當此和超過某個臨界值時,系統拒絕SYN包,Microsoft推薦MaximumDynamicBacklog值不得超過2000。

DynamicBacklogGrowthDelta值是指擴展的空閑連接數,此連接數并不計算在MaximumDynamicBacklog內,當半連接隊列為某個TCP端囗分配的空閑連接小于MinimumDynamicBacklog時,系統自動分配DynamicBacklogGrowthDelta所定義的空閑連接空間,以使該TCP端囗能處理更多的半連接。Microsoft推薦該值為10。

LINUX:Linux用變量tcp_max_syn_backlog定義backlog隊列容納的最大半連接數。在Redhat 7.3中,該變量的值默認為256,這個值是遠遠不夠的,一次強度不大的SYN攻擊就能使半連接隊列占滿。我們可以通過以下命令修改此變量的值:

# sysctl -w net.ipv4.tcp_max_syn_backlog=`2048`

Sun Solaris Sun Solaris用變量tcp_conn_req_max_q0來定義最大半連接數,在Sun Solaris 8中,該值默認為1024,可以通過add命令改變這個值:

# ndd -set /dev/tcp tcp_conn_req_max_q0 2048

HP-UX:HP-UX用變量tcp_syn_rcvd_max來定義最大半連接數,在HP-UX 11.00中,該值默認為500,可以通過ndd命令改變默認值:

#ndd -set /dev/tcp tcp_syn_rcvd_max 2048

·縮短超時時間

上文提到,通過增大backlog隊列能防范SYN攻擊;另外減少超時時間也使系統能處理更多的SYN請求。我們知道,timeout超時時間,也即半連接存活時間,是系統所有重傳次數等待的超時時間總和,這個值越大,半連接數占用backlog隊列的時間就越長,系統能處理的SYN請求就越少。為縮短超時時間,可以通過縮短重傳超時時間(一般是第一次重傳超時時間)和減少重傳次數來實現。

Windows2000第一次重傳之前等待時間默認為3秒,為改變此默認值,可以通過修改網絡接囗在注冊表里的TcpInitialRtt注冊值來完成。重傳次數由TcpMaxConnectResponseRetransmissions 來定義,注冊表的位置是:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters registry key

當然我們也可以把重傳次數設置為0次,這樣服務器如果在3秒內還未收到ack確認包就自動從backlog隊列中刪除該連接條目。

LINUX:Redhat使用變量tcp_synack_retries定義重傳次數,其默認值是5次,總超時時間需要3分鐘。

Sun Solaris Solaris 默認的重傳次數是3次,總超時時間為3分鐘,可以通過ndd命令修改這些默認值。
 

【編輯推薦】

  1. CentOS SYN Flood攻擊原理Linux下設置
  2. 對跨站腳本攻擊的全面了解
  3. 老話重提:防范跨站腳本攻擊
  4. SYN攻擊原理與檢測
  5. 使用工具和測試防范跨站點腳本攻擊
責任編輯:張啟峰 來源: 中國IT實驗室
相關推薦

2010-09-16 15:39:18

2020-02-17 16:52:06

誤植攻擊網絡攻擊網絡安全

2018-07-16 08:36:13

2010-09-13 10:14:30

2021-12-16 12:07:04

滲透測試黑客攻擊

2013-05-09 09:19:55

2022-07-31 00:12:08

Deepfakes數據圖像

2011-08-09 15:09:45

2010-08-31 13:05:25

2010-03-10 14:18:09

2010-09-13 10:26:48

2022-04-02 11:17:43

勒索軟件網絡安全網絡攻擊

2011-05-16 09:19:51

2009-08-13 17:40:55

2022-04-14 15:28:46

安全勒索軟件贖金

2011-07-04 14:12:34

2010-03-05 10:10:04

2013-05-13 17:33:10

2013-06-17 09:48:02

2009-08-14 11:25:38

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日产精品一区二区三区四区 | 成人在线观看网站 | 国产乱码精品一区二区三区五月婷 | 久草久| 羞羞色视频| 欧美一级全黄 | 中文字幕第二十页 | 欧美日韩一区在线 | 国产精品一区二区av | 99久久中文字幕三级久久日本 | 夜夜草| 亚洲成人免费 | 韩日在线观看视频 | 国产精品国产三级国产a | 精品久久香蕉国产线看观看亚洲 | www操操| 国产免费一区二区三区免费视频 | 亚洲福利一区二区 | 999久久久久久久久6666 | 人人九九精 | 亚洲日本视频 | 日韩影院在线观看 | 欧美日韩高清免费 | 久久精品高清视频 | 一区二区三区国产在线观看 | 成人特区 | 91av精品 | 久久草在线视频 | 国产精品视频观看 | 国产精品一码二码三码在线 | 日韩中文字幕一区二区 | 精品国产乱码久久久久久88av | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 午夜影视免费片在线观看 | 午夜爽爽男女免费观看hd | 日韩在线中文字幕 | 这里有精品 | 日本aⅴ中文字幕 | 亚洲一区二区三区在线免费 | 久久精品小短片 | www.久久.com|