現(xiàn)在網(wǎng)絡(luò)技術(shù)日新月異
,不斷有新技術(shù)被不同類型軟件所使用。在提高開發(fā)軟件各個方面性能同時,也增加了系統(tǒng)安全隱患。例如:云技術(shù)能夠為我們帶來了一個更加有效地利用網(wǎng)絡(luò)資源和整合網(wǎng)絡(luò)數(shù)據(jù)模式;不過,這個新技術(shù)引出了安全的擔(dān)心。
網(wǎng)絡(luò)安全是涉及到網(wǎng)絡(luò)各個方面內(nèi)容,現(xiàn)在最為突出問題就是網(wǎng)絡(luò)攻擊。根據(jù)近年來接觸到問題,總結(jié)了下面幾個現(xiàn)在比較常用網(wǎng)絡(luò)攻擊手法和一些防御測試。
DDos--分布式拒絕服務(wù)攻擊
DDos 是 Distributed Denial of service , 這種攻擊起源于1996年;此攻擊主要利用合理的服務(wù)請求來占用過多的服務(wù)資源,從而使服務(wù)器無法處理合法用戶的指令。有以下主要幾種具體攻擊手段:
(1)SYN 洪水攻擊
原理:SYN 洪水攻擊主要是利用TCP協(xié)議缺陷,通過“肉雞”偽造地址和發(fā)送大量的半連接請求,使得主機一直等待半連接請求的回復(fù)。通過此方法不斷耗費主機有限的CPU資源和內(nèi)存資源。
攻擊手段:一般都是開發(fā)專門制造洪水攻擊程序;程序核心主要是偽造一個TCP協(xié)議信息頭和IP協(xié)議的信息頭
- TCP_HEADER tcpheader;
- IP_HEADER ipheader;
-
- ipheader.h_verlen=(4<<4 | sizeof(IP_HEADER)/sizeof(unsigned long));
- ipheader.total_len = htons(sizeof(IP_HEADER)+sizeof(TCP_HEADER));
- ipheader.ident = 1;
- ipheader.frag_and_flags = 0;
- ipheader.ttl = 128;
- ipheader.proto = IPPROTO_TCP;
- ipheader.checksum =0;
- ipheader.sourceIP = htonl(FakeIpHost+SendSEQ);
- ipheader.destIP = inet_addr(DestIP);
-
- tcpheader.th_dport=htons(port);
- tcpheader.th_sport = htons(8080);
- tcpheader.th_seq = htonl(SEQ+SendSEQ);
- tcpheader.th_ack = 0;
- tcpheader.th_lenres =(sizeof(TCP_HEADER)/4<<4|0);
- tcpheader.th_flag = 2;
- tcpheader.th_win = htons(16384);
- tcpheader.th_urp = 0;
- tcpheader.th_sum =
防御手段:
1)使用硬防火墻過濾;硬件防火墻明顯提高防御性能,基本能攔截95%~99%的攻擊信息包;服務(wù)器依然會接受到攻擊的信息包。缺點:只能被動提高防御性能
2)使用門戶代理過濾;防御效果非常明顯,曾經(jīng)試過被20G數(shù)據(jù)攻擊。經(jīng)過美國某防御門戶過濾后,大概只有幾十K有效數(shù)據(jù)發(fā)送到服務(wù)器上。缺點:在使用了防御門戶后,服務(wù)端與客戶端之交互延時非常嚴(yán)重(>1000MS)。
3)修改服務(wù)器一些網(wǎng)絡(luò)安全參數(shù)設(shè)定;如:Window
可以修改下面一些配置SynAttackProtect,TcpMaxPortsExhausted,TcpMaxHalfOpen和
TcpMaxHalfOpenRetried等;更加詳細(xì)相關(guān)配置設(shè)定介紹可以到網(wǎng)上搜索一下,應(yīng)該不少。系統(tǒng)的防御性能提高有限,但無需要任何投入。
4)機器群集均衡負(fù)載;這個方法是一個最有效和成本最高的方法。這里我就不多講最后這個方法啦。
總結(jié):SYN洪水攻擊主要是攻擊方與防御方比拼硬件資源和防御策略。
(2)流量攻擊
原理:流量攻擊主要是“肉雞”通過對目的主機的服務(wù)端口發(fā)送大量的垃圾數(shù)據(jù),導(dǎo)致目的主機的網(wǎng)絡(luò)堵塞。在網(wǎng)絡(luò)上很多文章都會將SYN洪水攻擊和流量攻擊視
作為相同手段。從監(jiān)控軟件來看,被這兩種攻擊時候都會表現(xiàn)為網(wǎng)絡(luò)流量暴漲導(dǎo)致網(wǎng)絡(luò)堵塞。其實,這兩種攻擊的網(wǎng)絡(luò)堵塞原因是有本質(zhì)上區(qū)別的。流量攻擊導(dǎo)致網(wǎng)
絡(luò)堵塞是某些IP機器實際發(fā)送大量垃圾信息去耗盡主機帶寬;SYN洪水攻擊導(dǎo)致網(wǎng)絡(luò)堵塞是目標(biāo)主機本身所有資源被偽造半連接請求耗盡了,使得機器根本不能
繼續(xù)接受新連接。
攻擊手段:最簡單流量攻擊程序都是將簡單Socket 程序中的sendBuf 修改為大于64K數(shù)據(jù)塊就可以了。
-
- sendto(sock,sendBuf,dataSize,0,(struct sockaddr*) &sockAddr,sizeof(sockAddr));
防御手段:
1)使用硬防火墻過濾;根據(jù)服務(wù)程序現(xiàn)狀設(shè)定合適策略,基本攔截95~99%的垃圾信息;流量攻擊攔截非常依靠硬件防火墻設(shè)定策略,有效策略會大大提高系統(tǒng)防御性能。
2)使用門戶代理過濾;參照【SYN洪水攻擊】相應(yīng)描述.
3)優(yōu)化服務(wù)端程序解密算法
現(xiàn)在一般網(wǎng)絡(luò)上C/S 或者B/S
架構(gòu)模式的程序,在系統(tǒng)互相通信指令上基本都是密文。當(dāng)系統(tǒng)服務(wù)端程序受到攻擊時候,服務(wù)的解密算法就會受到巨大壓力,很容易導(dǎo)致服務(wù)器資源耗盡。所以,
為了提高系統(tǒng)在高壓力下生存率,選擇高效解密方法是很有必要。
4)增加服務(wù)端程序網(wǎng)絡(luò)異常處理
在一定高壓力情況下,除了需要確保服務(wù)端的”穩(wěn)定性“;還需要確保系統(tǒng)的”準(zhǔn)確性“。對一些網(wǎng)絡(luò)異常中斷的情況,制定一些補救性措施和機制。特別是一些實時性系統(tǒng)特別重要,按過往經(jīng)驗在一定壓力情況下會出現(xiàn)非常離譜錯誤。
5)增加服務(wù)端程序防御策略
由于DDos
攻擊往往都使用IP地址”欺騙“技術(shù),在行業(yè)里面暫時沒有比較有效的反擊方法。所以,現(xiàn)在最流行防御策略就是服務(wù)端” 裝死 “。身邊其他人稱為”
信息忽略回饋機制“,主要思想就是當(dāng)系統(tǒng)收到一個不能識別的指令時候,立即掉棄連接和不對連接作出任何反饋信息。除了”
信息忽略回饋機制“外,還有一些商業(yè)上和業(yè)務(wù)上防御策略。如: 賬戶鎖定策略,IP鎖定策略和服務(wù)器認(rèn)證策略等。
總結(jié):流量攻擊是檢驗防御方網(wǎng)絡(luò)流量,系統(tǒng)安全策略,系統(tǒng)異常處理和系統(tǒng)性能。在項目時間允許情況下,這個測試是必不可少的。
(3)HTTP洪水攻擊
原理:HTTP洪水是利用【應(yīng)用層】中HTTP協(xié)議缺陷;不斷發(fā)送沒有完成的HTTP頭,直到你的服務(wù)器耗盡所有的資源。
攻擊手段:
1)首先向服務(wù)器發(fā)出如下HTTP頭部:
GET / HTTP/1.1\r\n
Host: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0;
Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET
CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n
Content-Length: 42\r\n
2)然后每隔一定時間繼續(xù)發(fā)出一個自定義的頭部:
X-a: b\r\n
須知根據(jù)HTTP協(xié)議,HTTP請求頭部與請求主體的分隔是多一個\r\n。也就是說上述的HTTP頭部一直沒有發(fā)送完成,HTTP服務(wù)器會等在那里準(zhǔn)備
接受余下的內(nèi)容,一直到接受超時,然后關(guān)閉連接。默認(rèn)的apache讀取頭部的超時據(jù)說是3000秒。Apache的情況是,每接受一個連接新開一個進程
或線程,這樣新接受一個連接的資源消耗很大,我測試的過結(jié)果是,一般apache只需在超時時間內(nèi),持續(xù)發(fā)送500個以上的包,apache就不會再接收
新的連接了。
防御手段:
1)減少HTTP頭部連接超時的時間,尤其是HTTP請求中GET、HEAD方法的超時時間。注意一般POST方法的頭部包含了上傳的內(nèi)容,所以傳輸時間會很長,要避免將合法的請求提前關(guān)閉。
2)限定單個IP的連接數(shù)。缺點是,有些學(xué)校、大公司都通過NAT方式連接互聯(lián)網(wǎng),所以同一個IP的連接數(shù)會很多。
3)特別針對Apache,將Nginx此類反向服務(wù)器放在apache前面,用來撐連接,代理合法的請求。
4)使用硬防火墻過濾;
5)使用門戶代理過濾;
總結(jié):HTTP協(xié)議的缺陷其實是TCP/IP協(xié)議缺陷的一個延伸,只是表現(xiàn)在應(yīng)用層網(wǎng)絡(luò)協(xié)議面上。
本人水平有限,若有不準(zhǔn)確地方歡迎提出。
MK-TIANYI