|
網(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í)資源、專家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 現(xiàn)在網(wǎng)上流傳一種方法,就是利用額外訪問(wèn)量來(lái)進(jìn)行拒絕服務(wù)式攻擊,這種攻擊,只需要一個(gè)文件,短短的幾行代碼,就可以通過(guò)訪問(wèn)該文件的用戶,在他們不知不覺(jué)的情況下給你的目標(biāo)帶來(lái)數(shù)十倍,甚至上百倍的訪問(wèn)量,當(dāng)該文件的訪問(wèn)量達(dá)到一定數(shù)目時(shí),給對(duì)方帶來(lái)的壓力將是非常可怕的。而且,這種攻擊由于攻擊源都是普通用戶,無(wú)法在放火墻上面做任何設(shè)置,可以說(shuō)是防不勝防。但是道高一尺,魔高一丈,有矛必有盾,這樣的攻擊方式很難維護(hù),但是也絕對(duì)不是不能防護(hù)。下面討論一下防御辦法。 1:利用參數(shù)變換保護(hù)數(shù)據(jù)庫(kù)訪問(wèn)率:對(duì)于使用到數(shù)據(jù)庫(kù)或者其它文件資源的動(dòng)態(tài)頁(yè)面可以使用參數(shù)變換,比如我們?cè)O(shè)定函數(shù)Encrypt(id)把id轉(zhuǎn)化成String的參數(shù),我們的頁(yè)面news.asp?id=acehj.我們可以通過(guò)Decrypt(string)進(jìn)行解碼,把它們解回id這樣一來(lái),客戶很難偽造一個(gè)合法的參數(shù)訪問(wèn)頁(yè)面,頁(yè)面在解碼的過(guò)程中利用驗(yàn)證碼就拒絕了非法客戶的訪問(wèn),避免了惡意客戶的數(shù)據(jù)庫(kù)訪問(wèn),通過(guò)犧牲一點(diǎn)點(diǎn)的CPU計(jì)算時(shí)間獲得了數(shù)據(jù)庫(kù)訪問(wèn)的安全。大家先看幾個(gè)例子看能不能猜出里面的函數(shù)變換139<=>adkl.110<=>abba.80<=>hag.11234567890<=>abdfhjlnprjs。 看出來(lái)了嗎?Encrypt和Decrypt的代碼如下: <% Function Encrypt (id) StrR="" Chk=0 For x=1 to len(id) StrR=StrR&chr(95+x+cint(mid(id,x,1))) Chk=Chk+Cint(mid(id,x,1)) Next Chk=Chk mod 26 StrR=StrR&chr(95+chk) Encrypt=StrR End Function Function Decrypt(str) StrR="" For x=1 to len(str)-1 u=(asc(mid(str,x,1))-x-95) StrR="" For x=1 to len(str,x,1))-x-95 u=(asc(mid(str,x,1))-x-95) StrR=StrR&u Next Chk=Chk mod 26 if right(str,1)<>chr(95+chk) then response.write "驗(yàn)證錯(cuò)誤" response.end end if Decrypt=StrR End Function %> 調(diào)用Encrypt(1235)得到acehj("aech?")時(shí),只有?為j時(shí)能得到正確結(jié)果1234,除此之外的任何字符都將返回"現(xiàn)驗(yàn)證錯(cuò)誤"。 通過(guò)這樣的保護(hù)變化,客戶訪問(wèn)的就是news.asp?id=acehj.無(wú)法看到實(shí)際id為1235,隨機(jī)生成的id又無(wú)法通過(guò)驗(yàn)證過(guò)程,就無(wú)法通過(guò)軟件模擬來(lái)制造多線程的合法訪問(wèn),避免因?yàn)榉欠ㄔL問(wèn)使得數(shù)據(jù)庫(kù)資源耗盡而拒絕服務(wù)。另外,在這樣的保護(hù)下,SQL lnjection漏洞也得到了很好的防御。 這僅僅是個(gè)示范代碼,這個(gè)函數(shù)還有許多可以改進(jìn)的地方: 1)可以增加函數(shù)變化的強(qiáng)度,降低函數(shù)被猜測(cè)出具體過(guò)程的概率。 2)可以把函數(shù)運(yùn)用到Cookie中,對(duì)于Cookie做相應(yīng)的變化,增加防御手段的隱蔽性。 3)可以把客戶IP加入函數(shù)運(yùn)算,不光節(jié)約增強(qiáng)了函數(shù)強(qiáng)度,還達(dá)到防止盜鏈的功能。一旦用戶改變IP或偽造COOKIE及ID,馬上就發(fā)現(xiàn) 4)可以把時(shí)間加入函數(shù)運(yùn)算,不光節(jié)約服務(wù)器的存儲(chǔ)空間,而且服務(wù)器只要通過(guò)對(duì)客戶發(fā)送的字符串進(jìn)行解碼就能判斷出客戶信息。 程序可以改進(jìn)的地方還有好多每雖然能從多方面保護(hù)服務(wù)器,但也要注意使用方法,比如第四點(diǎn)提到的對(duì)空間的節(jié)約,就需要考慮空間和時(shí)間綜合因素。 2:在代碼層提高程序運(yùn)行效率,增加服務(wù)器運(yùn)行能力,減少被拒絕服務(wù)的可能。程序代碼非常關(guān)鍵,實(shí)現(xiàn)同樣的功能,代碼的好壞,效率差別極大,這里有兩個(gè)添加數(shù)據(jù)的代碼大家比較下: 代碼一 <% sql="select * from users" rs.open sql,conn.1.3 rs.addnew rs("username")="TEST" rs("password"="123456" rs.updatw rs.close %> 代碼二 <% sql="insert into users (username,password) values ('TEST','!23456')" rs.open sql,conn,1,3 %> 明顯的代碼二的效率比一要高的多,特別是當(dāng)數(shù)據(jù)庫(kù)體積較大或者進(jìn)行對(duì)次的重復(fù)操作時(shí)效率的提升是相當(dāng)可觀的,代碼的好壞決定了程序的優(yōu)劣,決定了服務(wù)器所能支持的客戶數(shù),進(jìn)而決定了服務(wù)器的抗擊DDOS的能力。 3:限制代理用戶的訪問(wèn):對(duì)代理用戶訪問(wèn)的限制可以有效的防止黑客利用CC之類的工具進(jìn)行攻擊,限制黑客對(duì)代理的使用,增加他暴露的可能,所以禁止代理訪問(wèn)能夠降低被攻擊的可能。這個(gè)代碼能夠識(shí)別出大部分的代理訪問(wèn)。這段代碼可以按用戶自己的要求修改后寫在Conn.asp里面,就能起作用拉,當(dāng)然,代理是個(gè)雙刃劍,對(duì)代理的限制也一樣,禁止代理訪問(wèn)會(huì)給一部分用戶的正常訪問(wèn)帶來(lái)不變,所以要考慮后使用。 4:使用HTTPS協(xié)議,使用HTTPS協(xié)議可以說(shuō)好處多多,可以多傳輸數(shù)據(jù)的安全性給予充分的保障,由于HTTPS協(xié)議的復(fù)雜性,能對(duì)HTTPS協(xié)議進(jìn)行攻擊也相對(duì)少的多,HTTPS協(xié)議如果使用的非標(biāo)準(zhǔn)端口,基本可以杜絕所有的代理攻擊,還避免了多線程的下載,降低服務(wù)器壓力,但是由于HTTPS協(xié)議的復(fù)雜性,服務(wù)器新跟能夠相對(duì)HTTPS協(xié)議來(lái)說(shuō)會(huì)低些,對(duì)客戶電腦性能的要器樂(lè)也就有所提高。 5:減少動(dòng)態(tài)文件的使用,增加景泰文件使用,動(dòng)態(tài)文件可以帶來(lái)豐富的頁(yè)面,實(shí)現(xiàn)很多功能,節(jié)省開發(fā)時(shí)間,但是方便的同時(shí)就是服務(wù)器資源消耗的提升,所以許多大論壇都把訪問(wèn)大的帖子做成靜態(tài)的,還有許多文章系統(tǒng)也事用的靜態(tài)頁(yè)面[比如Wwww.Cnhacks.CoM]以增加服務(wù)器的抗攻擊能力。 6:合理設(shè)置防火墻,防火墻能夠有效地檢測(cè)出功能,并對(duì)攻擊進(jìn)行積極的防御,但是如果對(duì)防火搶的設(shè)置不合理,發(fā)有可能出現(xiàn)防火墻負(fù)擔(dān)能力比服務(wù)器還差的情況,拒絕服務(wù)器攻擊產(chǎn)生的根源變成防火墻 7:有條件的服務(wù)器可以使用端口重定向功能,80端口只負(fù)責(zé)做頁(yè)面轉(zhuǎn)向,具體提供服務(wù)的端口由系統(tǒng)動(dòng)態(tài)決定,通過(guò)80端口的轉(zhuǎn)往。 8:對(duì)于已經(jīng)遭受攻擊的服務(wù)器,可以在使用以上手段防御的同時(shí),考慮增加服務(wù)器集群增加服務(wù)器的服務(wù)能力。
網(wǎng)絡(luò)的神奇作用吸引著越來(lái)越多的用戶加入其中,正因如此,網(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)步的催化劑。
|