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