網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 當(dāng)SynAttackProtect值為2時(shí)(Microsoft推薦使用此值),系統(tǒng)不僅使用backlog隊(duì)列,還使用附加的半連接指示,以此來處理更多的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ù),如果超過此值,系統(tǒng)認(rèn)為正處于SYN攻擊中。Win2000 server默認(rèn)值為100,Win2000 Advanced server為500。 TcpMaxHalfOpenRetried定義了保存在backlog隊(duì)列且重傳過的半連接數(shù),如果超過此值,系統(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é)議開辟了一個(gè)比較大的內(nèi)存空間backlog隊(duì)列來存儲(chǔ)半連接條目,當(dāng)SYN請(qǐng)求不斷增加,并這個(gè)空間,致使系統(tǒng)丟棄SYN連接。為使半連接隊(duì)列被塞滿的情況下,服務(wù)器仍能處理新到的SYN請(qǐng)求,SYN cookies技術(shù)被設(shè)計(jì)出來。 SYN cookies應(yīng)用于linux、FreeBSD等操作系統(tǒng),當(dāng)半連接隊(duì)列滿時(shí),SYN cookies并不丟棄SYN請(qǐng)求,而是通過加密技術(shù)來標(biāo)識(shí)半連接狀態(tài)。 在TCP實(shí)現(xiàn)中,當(dāng)收到客戶端的SYN請(qǐng)求時(shí),服務(wù)器需要回復(fù)SYN+ACK包給客戶端,客戶端也要發(fā)送確認(rèn)包給服務(wù)器。通常,服務(wù)器的初始序列號(hào)由服務(wù)器按照一定的規(guī)律計(jì)算得到或采用隨機(jī)數(shù),但在SYN cookies中,服務(wù)器的初始序列號(hào)是通過對(duì)客戶端IP地址、客戶端端囗、服務(wù)器IP地址和服務(wù)器端囗以及其他一些安全數(shù)值等要素進(jìn)行hash運(yùn)算,加密得到的,稱之為cookie。當(dāng)服務(wù)器遭受SYN攻擊使得backlog隊(duì)列滿時(shí),服務(wù)器并不拒絕新的SYN請(qǐng)求,而是回復(fù)cookie(回復(fù)包的SYN序列號(hào))給客戶端, 如果收到客戶端的ACK包,服務(wù)器將客戶端的ACK序列號(hào)減去1得到cookie比較值,并將上述要素進(jìn)行一次hash運(yùn)算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此時(shí)并不用查看此連接是否屬于backlog隊(duì)列)。 在RedHat linux中,啟用SYN cookies是通過在啟動(dòng)環(huán)境中設(shè)置以下命令來完成: # echo 1 > /proc/sys/net/ipv4/tcp_syncookies ■ 增加最大半連接數(shù) 大量的SYN請(qǐng)求導(dǎo)致未連接隊(duì)列被塞滿,使正常的TCP連接無法順利完成三次握手,通過增大未連接隊(duì)列空間可以緩解這種壓力。當(dāng)然backlog隊(duì)列需要占用大量的內(nèi)存資源,不能被無限的擴(kuò)大。 WIN2000:除了上面介紹的TcpMaxHalfOpen, TcpMaxHalfOpenRetried參數(shù)外,WIN2000操作系統(tǒng)可以通過設(shè)置動(dòng)態(tài)backlog(dynamic backlog)來增大系統(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è)表的位置: 網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!