人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng) > 網(wǎng)絡(luò)技術(shù)教程 > 詳細(xì)頁(yè)面

SYN 攻擊原理以及防范技術(shù)(2)

SYN 攻擊原理以及防范技術(shù)(2)

更新時(shí)間:2021-04-21 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來(lái)的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專(zhuān)家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。

五、SYN攻擊防范技術(shù)


  關(guān)于SYN攻擊防范技術(shù),人們研究得比較早。歸納起來(lái),主要有兩大類(lèi),一類(lèi)是通過(guò)防火墻、路由器等過(guò)濾網(wǎng)關(guān)防護(hù),另一類(lèi)是通過(guò)加固TCP/IP協(xié)議棧防范.但必須清楚的是,SYN攻擊不能完全被阻止,我們所做的是盡可能的減輕SYN攻擊的危害,除非將TCP協(xié)議重新設(shè)計(jì)。

  1、過(guò)濾網(wǎng)關(guān)防護(hù)

  這里,過(guò)濾網(wǎng)關(guān)主要指明防火墻,當(dāng)然路由器也能成為過(guò)濾網(wǎng)關(guān)。防火墻部署在不同網(wǎng)絡(luò)之間,防范外來(lái)非法攻擊和防止保密信息外泄,它處于客戶(hù)端和服務(wù)器之間,利用它來(lái)防護(hù)SYN攻擊能起到很好的效果。過(guò)濾網(wǎng)關(guān)防護(hù)主要包括超時(shí)設(shè)置,SYN網(wǎng)關(guān)和SYN代理三種。

  ■網(wǎng)關(guān)超時(shí)設(shè)置:防火墻設(shè)置SYN轉(zhuǎn)發(fā)超時(shí)參數(shù)(狀態(tài)檢測(cè)的防火墻可在狀態(tài)表里面設(shè)置),該參數(shù)遠(yuǎn)小于服務(wù)器的timeout時(shí)間。當(dāng)客戶(hù)端發(fā)送完SYN包,服務(wù)端發(fā)送確認(rèn)包后(SYN+ACK),防火墻如果在計(jì)數(shù)器到期時(shí)還未收到客戶(hù)端的確認(rèn)包(ACK),則往服務(wù)器發(fā)送RST包,以使服務(wù)器從隊(duì)列中刪去該半連接。值得注意的是,網(wǎng)關(guān)超時(shí)參數(shù)設(shè)置不宜過(guò)小也不宜過(guò)大,超時(shí)參數(shù)設(shè)置過(guò)小會(huì)影響正常的通訊,設(shè)置太大,又會(huì)影響防范SYN攻擊的效果,必須根據(jù)所處的網(wǎng)絡(luò)應(yīng)用環(huán)境來(lái)設(shè)置此參數(shù)。

  ■SYN網(wǎng)關(guān):SYN網(wǎng)關(guān)收到客戶(hù)端的SYN包時(shí),直接轉(zhuǎn)發(fā)給服務(wù)器;SYN網(wǎng)關(guān)收到服務(wù)器的SYN/ACK包后,將該包轉(zhuǎn)發(fā)給客戶(hù)端,同時(shí)以客戶(hù)端的名義給服務(wù)器發(fā)ACK確認(rèn)包。此時(shí)服務(wù)器由半連接狀態(tài)進(jìn)入連接狀態(tài)。當(dāng)客戶(hù)端確認(rèn)包到達(dá)時(shí),如果有數(shù)據(jù)則轉(zhuǎn)發(fā),否則丟棄。事實(shí)上,服務(wù)器除了維持半連接隊(duì)列外,還要有一個(gè)連接隊(duì)列,如果發(fā)生SYN攻擊時(shí),將使連接隊(duì)列數(shù)目增加,但一般服務(wù)器所能承受的連接數(shù)量比半連接數(shù)量大得多,所以這種方法能有效地減輕對(duì)服務(wù)器的攻擊。

  ■SYN代理:當(dāng)客戶(hù)端SYN包到達(dá)過(guò)濾網(wǎng)關(guān)時(shí),SYN代理并不轉(zhuǎn)發(fā)SYN包,而是以服務(wù)器的名義主動(dòng)回復(fù)SYN/ACK包給客戶(hù),如果收到客戶(hù)的ACK包,表明這是正常的訪問(wèn),此時(shí)防火墻向服務(wù)器發(fā)送ACK包并完成三次握手。SYN代理事實(shí)上代替了服務(wù)器去處理SYN攻擊,此時(shí)要求過(guò)濾網(wǎng)關(guān)自身具有很強(qiáng)的防范SYN攻擊能力。
 
  2、加固tcp/ip協(xié)議棧

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

  ■SynAttackProtect機(jī)制

  為防范SYN攻擊,win2000系統(tǒng)的tcp/ip協(xié)議棧內(nèi)嵌了SynAttackProtect機(jī)制,Win2003系統(tǒng)也采用此機(jī)制。SynAttackProtect機(jī)制是通過(guò)關(guān)閉某些socket選項(xiàng),增加額外的連接指示和減少超時(shí)時(shí)間,使系統(tǒng)能處理更多的SYN連接,以達(dá)到防范SYN攻擊的目的。默認(rèn)情況下,Win2000操作系統(tǒng)并不支持SynAttackProtect保護(hù)機(jī)制,需要在注冊(cè)表以下位置增加SynAttackProtect鍵值:

  HKLMSYSTEMCurrentControlSetServicesTcpipParameters

  當(dāng)SynAttackProtect值(如無(wú)特別說(shuō)明,本文提到的注冊(cè)表鍵值都為十六進(jìn)制)為0或不設(shè)置時(shí),系統(tǒng)不受SynAttackProtect保護(hù)。

  當(dāng)SynAttackProtect值為1時(shí),系統(tǒng)通過(guò)減少重傳次數(shù)和延遲未連接時(shí)路由緩沖項(xiàng)(route cache entry)防范SYN攻擊。

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


  我們應(yīng)該知道,平時(shí),系統(tǒng)是不啟用SynAttackProtect機(jī)制的,僅在檢測(cè)到SYN攻擊時(shí),才啟用,并調(diào)整tcp/ip協(xié)議棧。那么系統(tǒng)是如何檢測(cè)SYN攻擊發(fā)生的呢?事實(shí)上,系統(tǒng)根據(jù)TcpMaxHalfOpen,TcpMaxHalfOpenRetried 和TcpMaxPortsExhausted三個(gè)參數(shù)判斷是否遭受SYN攻擊。

  TcpMaxHalfOpen 表示能同時(shí)處理的最大半連接數(shù),如果超過(guò)此值,系統(tǒng)認(rèn)為正處于SYN攻擊中。Win2000 server默認(rèn)值為100,Win2000 Advanced server為500。

  TcpMaxHalfOpenRetried定義了保存在backlog隊(duì)列且重傳過(guò)的半連接數(shù),如果超過(guò)此值,系統(tǒng)自動(dòng)啟動(dòng)SynAttackProtect機(jī)制。Win2000 server默認(rèn)值為80,Win2000 Advanced server為400。

  TcpMaxPortsExhausted 是指系統(tǒng)拒絕的SYN請(qǐng)求包的數(shù)量,默認(rèn)是5。

  如果想調(diào)整以上參數(shù)的默認(rèn)值,可以在注冊(cè)表里修改(位置與SynAttackProtect相同)

  ■ SYN cookies技術(shù)

  我們知道,TCP協(xié)議開(kāi)辟了一個(gè)比較大的內(nèi)存空間backlog隊(duì)列來(lái)存儲(chǔ)半連接條目,當(dāng)SYN請(qǐng)求不斷增加,并這個(gè)空間,致使系統(tǒng)丟棄SYN連接。為使半連接隊(duì)列被塞滿(mǎn)的情況下,服務(wù)器仍能處理新到的SYN請(qǐng)求,SYN cookies技術(shù)被設(shè)計(jì)出來(lái)。

  SYN cookies應(yīng)用于linux、FreeBSD等操作系統(tǒng),當(dāng)半連接隊(duì)列滿(mǎn)時(shí),SYN cookies并不丟棄SYN請(qǐng)求,而是通過(guò)加密技術(shù)來(lái)標(biāo)識(shí)半連接狀態(tài)。

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

  在RedHat linux中,啟用SYN cookies是通過(guò)在啟動(dòng)環(huán)境中設(shè)置以下命令來(lái)完成:

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

  ■ 增加最大半連接數(shù)

  大量的SYN請(qǐng)求導(dǎo)致未連接隊(duì)列被塞滿(mǎn),使正常的TCP連接無(wú)法順利完成三次握手,通過(guò)增大未連接隊(duì)列空間可以緩解這種壓力。當(dāng)然backlog隊(duì)列需要占用大量的內(nèi)存資源,不能被無(wú)限的擴(kuò)大。

  WIN2000:除了上面介紹的TcpMaxHalfOpen, TcpMaxHalfOpenRetried參數(shù)外,WIN2000操作系統(tǒng)可以通過(guò)設(shè)置動(dòng)態(tài)backlog(dynamic backlog)來(lái)增大系統(tǒng)所能容納的最大半連接數(shù),配置動(dòng)態(tài)backlog由AFD.SYS驅(qū)動(dòng)完成,AFD.SYS是一種內(nèi)核級(jí)的驅(qū)動(dòng),用于支持基于window socket的應(yīng)用程序,比如ftp、telnet等。AFD.SYS在注冊(cè)表的位置:
HKLMSystemCurrentControlSetServicesAFDParametersEnableDynamicBacklog值為1時(shí),表示啟用動(dòng)態(tài)backlog,可以修改最大半連接數(shù)。 

MinimumDynamicBacklog表示半連接隊(duì)列為單個(gè)TCP端囗分配的最小空閑連接數(shù),當(dāng)該TCP端囗在backlog隊(duì)列的空閑連接小于此臨界值時(shí),系統(tǒng)為此端囗自動(dòng)啟用擴(kuò)展的空閑連接(DynamicBacklogGrowthDelta),Microsoft推薦該值為20。


  MaximumDynamicBacklog是當(dāng)前活動(dòng)的半連接和空閑連接的和,當(dāng)此和超過(guò)某個(gè)臨界值時(shí),系統(tǒng)拒絕SYN包,Microsoft推薦MaximumDynamicBacklog值不得超過(guò)2000。

  DynamicBacklogGrowthDelta值是指擴(kuò)展的空閑連接數(shù),此連接數(shù)并不計(jì)算在MaximumDynamicBacklog內(nèi),當(dāng)半連接隊(duì)列為某個(gè)TCP端囗分配的空閑連接小于MinimumDynamicBacklog時(shí),系統(tǒng)自動(dòng)分配DynamicBacklogGrowthDelta所定義的空閑連接空間,以使該TCP端囗能處理更多的半連接。Microsoft推薦該值為10。

  LINUX:Linux用變量tcp_max_syn_backlog定義backlog隊(duì)列容納的最大半連接數(shù)。在Redhat 7.3中,該變量的值默認(rèn)為256,這個(gè)值是遠(yuǎn)遠(yuǎn)不夠的,一次強(qiáng)度不大的SYN攻擊就能使半連接隊(duì)列占滿(mǎn)。我們可以通過(guò)以下命令修改此變量的值:

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

  Sun Solaris Sun Solaris用變量tcp_conn_req_max_q0來(lái)定義最大半連接數(shù),在Sun Solaris 8中,該值默認(rèn)為1024,可以通過(guò)add命令改變這個(gè)值:

  # ndd -set /dev/tcp tcp_conn_req_max_q0 2048

  HP-UX:HP-UX用變量tcp_syn_rcvd_max來(lái)定義最大半連接數(shù),在HP-UX 11.00中,該值默認(rèn)為500,可以通過(guò)ndd命令改變默認(rèn)值:

  #ndd -set /dev/tcp tcp_syn_rcvd_max 2048

  ■縮短超時(shí)時(shí)間

  上文提到,通過(guò)增大backlog隊(duì)列能防范SYN攻擊;另外減少超時(shí)時(shí)間也使系統(tǒng)能處理更多的SYN請(qǐng)求。我們知道,timeout超時(shí)時(shí)間,也即半連接存活時(shí)間,是系統(tǒng)所有重傳次數(shù)等待的超時(shí)時(shí)間總和,這個(gè)值越大,半連接數(shù)占用backlog隊(duì)列的時(shí)間就越長(zhǎng),系統(tǒng)能處理的SYN請(qǐng)求就越少。為縮短超時(shí)時(shí)間,可以通過(guò)縮短重傳超時(shí)時(shí)間(一般是第一次重傳超時(shí)時(shí)間)和減少重傳次數(shù)來(lái)實(shí)現(xiàn)。

  Win2000第一次重傳之前等待時(shí)間默認(rèn)為3秒,為改變此默認(rèn)值,可以通過(guò)修改網(wǎng)絡(luò)接囗在注冊(cè)表里的TcpInitialRtt注冊(cè)值來(lái)完成。重傳次數(shù)由TcpMaxConnectResponseRetransmissions 來(lái)定義,注冊(cè)表的位置是:HKLMSYSTEMCurrentControlSetServicesTcpipParameters registry key。

  當(dāng)然我們也可以把重傳次數(shù)設(shè)置為0次,這樣服務(wù)器如果在3秒內(nèi)還未收到ack確認(rèn)包就自動(dòng)從backlog隊(duì)列中刪除該連接條目。

  LINUX:Redhat使用變量tcp_synack_retries定義重傳次數(shù),其默認(rèn)值是5次,總超時(shí)時(shí)間需要3分鐘。

  Sun Solaris Solaris 默認(rèn)的重傳次數(shù)是3次,總超時(shí)時(shí)間為3分鐘,可以通過(guò)ndd命令修改這些默認(rèn)值。



網(wǎng)絡(luò)的神奇作用吸引著越來(lái)越多的用戶(hù)加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來(lái)越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 德清县| 昌宁县| 化州市| 凤翔县| 高唐县| 九台市| 安福县| 永清县| 樟树市| 南皮县| 沂南县| 合水县| 即墨市| 宣恩县| 溧水县| 桃园市| 会理县| 耒阳市| 昔阳县| 莱州市| 常熟市| 垦利县| 三穗县| 伊宁市| 隆化县| 齐河县| 林芝县| 宜章县| 余姚市| 溧水县| 秀山| 福贡县| 迁安市| 枣庄市| 县级市| 西昌市| 张北县| 西峡县| 定州市| 交口县| 鹤岗市|