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