常見的網(wǎng)絡(luò)攻擊方式及相關(guān)防御原理
網(wǎng)站上線后,后期維護(hù)是相當(dāng)重要的,在這個(gè)工程中我們最該注意的就是網(wǎng)站安全。很對(duì)企業(yè)的網(wǎng)站都是非常不安全的,要是站被攻擊了該如何辦呢?下面我就舉出幾個(gè)常見的網(wǎng)絡(luò)攻擊方式以及個(gè)人的處理建議。
* syn flood:
一個(gè)用戶向服務(wù)器發(fā)送syn報(bào)文后,如果服務(wù)器在發(fā)出sys+ack報(bào)文后無法收到客戶端ack報(bào)文,這種情況下服務(wù)器端一般會(huì)重試(再次發(fā)送syn+ack給客戶端),并等待一段時(shí)間后丟棄這個(gè)未完成的連接,這段時(shí)間的長度我們稱為syn timeout,一般來說這個(gè)時(shí)間是分鐘的數(shù)量級(jí)(大約為30秒-2分)。
一個(gè)用戶出現(xiàn)異常導(dǎo)致服務(wù)器的一個(gè)線程等待1分鐘并不是什么很大的問題,但如果有一個(gè)惡意的攻擊者大量的模擬這種情況,服務(wù)器端將為了維護(hù)一個(gè)非常大的半連接列表而消耗非常多的資源。即使是簡單的保存并遍歷也會(huì)消耗非常多的CPU時(shí)間和內(nèi)存,何況還要不斷對(duì)這個(gè)列表中的IP進(jìn)行syn+ack的重試。
防御原理:默認(rèn)情況下,系統(tǒng)會(huì)對(duì)新客戶的訪問進(jìn)行syn代理,直到客戶端與抗拒絕設(shè)備建立TCP連接成功,抗拒絕設(shè)備才會(huì)再代理客戶端與防護(hù)主機(jī)進(jìn)行TCP連接,后續(xù)通信則不再代理。
* ACK flood:
1、端系統(tǒng)對(duì)ACK報(bào)文的處理
端系統(tǒng)在收到一個(gè)ACK報(bào)文時(shí),如果目的端口未開放,那么端系統(tǒng)會(huì)直接向源IP發(fā)送RST報(bào)文。如果端系統(tǒng)的相關(guān)端口是對(duì)外開放的,那么其在收到ACK報(bào)文時(shí),首先會(huì)檢查這個(gè)ACK報(bào)文是否屬于TCP連接表中的一個(gè)已有連接(這個(gè)過程會(huì)對(duì)端系統(tǒng)主機(jī)CPU資源造成一定的消耗),如果是的話,則正常處理,如果不屬于任何一個(gè)已有連接,那么端系統(tǒng)會(huì)向源IP發(fā)送RST報(bào)文。
2、中間系統(tǒng)對(duì)ACK flood報(bào)文的處理
路由器:只根據(jù)網(wǎng)絡(luò)層信息(目的IP、源IP等),因此路由器在處理ACK報(bào)文的時(shí)候,其并不關(guān)系它是不是ACK報(bào)文,它主要關(guān)心其目的地址。如果ACK flood攻擊的目的主機(jī)是固定的,那么路由器其實(shí)只需要在收到第一個(gè)ACK flood攻擊報(bào)文時(shí),調(diào)用CPU資源實(shí)現(xiàn)路由和轉(zhuǎn)發(fā),后續(xù)的ACK flood國內(nèi)國際報(bào)文由于目的主機(jī)是固定的,其甚至不需要調(diào)用CPU資源,直接使用快速轉(zhuǎn)發(fā)表就可實(shí)現(xiàn)對(duì)ACK flood報(bào)文的轉(zhuǎn)發(fā)。
防火墻:對(duì)ACK報(bào)文是否屬于連接狀態(tài)表中的已有連接,如果是,防火墻轉(zhuǎn)發(fā)該ACK報(bào)文,如果未命中任何一個(gè)已有連接,防火墻會(huì)將該ACK報(bào)文丟棄。
防御原理:跟蹤IP的TCP會(huì)話,形成一個(gè)連接跟蹤表,TCP連接建立好之后,對(duì)后續(xù)的ACK報(bào)文,查找連接跟蹤表,匹配相應(yīng)的TCP會(huì)話流,如果沒有匹配,就是異常的或之前沒有連接的ACK報(bào)文。這種報(bào)文達(dá)到出發(fā)參數(shù),就會(huì)進(jìn)入ACK flood防御模式,此時(shí)抗拒絕設(shè)備只放行正確的ACK,比如,設(shè)置閥值10000報(bào)文/秒。
* UDP flood攻擊:
利用大量UDP小包沖擊DNS服務(wù)器或Radius認(rèn)證服務(wù)器、流媒體視頻服務(wù)器。攻擊者發(fā)送大量的偽造源IP地址的小UDP包,因?yàn)槭菬o連接性的協(xié)議,所以只要開了一個(gè)UDP的端口提供相關(guān)服務(wù)的話,那么就可以針對(duì)相關(guān)的服務(wù)進(jìn)行攻擊。
防御原理:當(dāng)防御主機(jī)每秒收到的UDP報(bào)文達(dá)到設(shè)置閥值時(shí),則進(jìn)入U(xiǎn)DP flood防御狀態(tài),此時(shí)抗拒絕設(shè)備會(huì)丟棄所有后續(xù)對(duì)防護(hù)主機(jī)IP的UDP報(bào)文,除非此UDP端口在規(guī)則或者UDP端口中設(shè)置了放行,設(shè)置閥值,比如1000報(bào)文/秒。
UDP端口防護(hù)中可以針對(duì)相應(yīng)的端口進(jìn)行防護(hù)設(shè)置。
a、開放端口:選擇后開放此端口,如果不選擇,則關(guān)閉此端口;
b、同步連接:選擇此項(xiàng)后,此端口建立UDP連接時(shí),必須已經(jīng)存在TCP連接,否則拒絕連接;
c、延遲提交:主要針對(duì)DNS,抗拒絕系統(tǒng)會(huì)延時(shí)回應(yīng)客戶端的查詢;
d、驗(yàn)證TTL:檢測UDP包中的TTL值,如果某個(gè)數(shù)值的TTL頻率過高,則進(jìn)行屏蔽。
* DNS Query flood:
向被攻擊的服務(wù)器發(fā)送大量的域名解析請(qǐng)求,攻擊者所請(qǐng)求解析的域名是隨機(jī)生成或者是網(wǎng)絡(luò)世界上根本不存在的域名,被攻擊者的DNS服務(wù)器就需要進(jìn)行頻繁的字符串匹配,由于在本地?zé)o法查到對(duì)應(yīng)的結(jié)果,服務(wù)器必須使用遞歸查詢向上層域名服務(wù)器提交解析請(qǐng)求,引起連鎖反應(yīng),從而給DNS服務(wù)器帶來更大的負(fù)載。
防御原理:
1、強(qiáng)制開啟插件
2、自動(dòng)開啟
3、延時(shí)提交、驗(yàn)證TTL
* ICMP flood:
DDOS攻擊的一種,通過向目標(biāo)發(fā)送大量的大包,windows可以發(fā)送包最大是65500,Linux是65007。
防御原理:設(shè)置閥值,比如100報(bào)文/秒
* frag flood:
鏈路層MTU限制了數(shù)據(jù)幀的最大長度,不同網(wǎng)絡(luò)類型都有一個(gè)上限值。以太網(wǎng)MTU是1500,可以用netstat -i命令查看。如果IP層有數(shù)據(jù)包要傳,而且數(shù)據(jù)包的長度超過了MTU,那么IP層就會(huì)對(duì)數(shù)據(jù)包進(jìn)行分片,使每一片長度小于或等于MTU。
IP首部有兩個(gè)字節(jié)表示數(shù)據(jù)包的大小,所以IP數(shù)據(jù)包最長只能為0xFFFF,就是65535字節(jié)。如果發(fā)送總長度超過65535字節(jié)的IP碎片,一些老的系統(tǒng)內(nèi)核在處理的時(shí)候就會(huì)出現(xiàn)問題,導(dǎo)致崩潰或拒絕服務(wù)。如果分片之間偏移量經(jīng)過精心構(gòu)造,一些系統(tǒng)就無法處理。
防御原理:設(shè)置閥值,比如100報(bào)文/秒
* 連接型攻擊:
使用大量的傀儡機(jī),頻繁的連接服務(wù)器,形成虛假的客戶請(qǐng)求,耗盡服務(wù)器資源,使其拒絕服務(wù)。常見攻擊:CC攻擊、HTTP攻擊、Get flood攻擊、游戲假人攻擊等。
HTTP攻擊:http get flood、http post flood,get和post只是服務(wù)器接受查詢的方式不同而已,單客戶機(jī)攻擊危害不大,但是利用大量代理或者肉雞來攻擊,就會(huì)造成服務(wù)器資源耗盡,就是CC攻擊。
防御原理:web plugin
總結(jié),以上是個(gè)人的一些經(jīng)驗(yàn)和觀點(diǎn),這幾種應(yīng)該是我們常見的網(wǎng)絡(luò)攻擊方式,總體而言,仍然是安全問題,所以建議大家一定要有安全意識(shí),并且不要貪便宜,一定要選擇一個(gè)有實(shí)力和規(guī)模的空間服務(wù)商。