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