【知識分享】伺服器遭受攻擊的方式,如何抵禦攻擊?

CHIBOHANDONG發表於2023-02-28

分散式拒絕服務(DDoS: Distributed Denial of Service)攻擊指藉助於客戶/伺服器技術,將多個計算機聯合起來作為攻擊平臺,對一個或多個目標發動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。

如何理解DDoS攻擊

一群惡霸試圖讓對面那家有著競爭關係的商鋪無法正常營業,他們會採取什麼手段呢?(只為舉例,切勿模仿)

惡霸們扮作普通客戶一直擁擠在對手的商鋪,賴著不走,真正的購物者卻無法進入;或者總是和營業員有一搭沒一搭的東扯西扯,讓工作人員不能正常服務客戶;也可以為商鋪的經營者提供虛假資訊,商鋪的上上下下忙成一團之後卻發現都是一場空,最終跑了真正的大客戶,損失慘重。

此外惡霸們完成這些壞事有時憑單幹難以完成,需要叫上很多人一起。嗯,網路安全領域中DoS和 DDoS攻擊就遵循著這些思路。

攻擊方式

DDoS攻擊透過大量合法的請求佔用大量網路資源,以達到癱瘓網路的目的。

這種攻擊方式可分為以下幾種:

透過使網路過載來干擾甚至阻斷正常的網路通訊;

透過向伺服器提交大量請求,使伺服器超負荷;

阻斷某一使用者訪問伺服器;

阻斷某服務與特定系統或個人的通訊。

IP Spoofing

IP欺騙攻擊是一種駭客透過向服務端傳送虛假的包以欺騙伺服器的

DDOS攻擊示意圖做法。

具體說,就是將包中的源IP地址設定為不存在或不合法的值。伺服器一旦接受到該包便會返回接受請求包,但實際上這個包永遠返回不到來源處的計算機。

這種做法使伺服器必需開啟自己的監聽埠不斷等待,也就浪費了系統各方面的資源。

LAND attack

這種攻擊方式與SYN floods類似,不過在LAND attack攻擊包中的原地址和目標地址都是攻擊物件的IP。

這種攻擊會導致被攻擊的機器死迴圈,最終耗盡資源而當機。

ICMP floods

ICMPfloods是透過向未良好設定的路由器傳送廣播資訊佔用系統資源的做法。

Application

與前面敘說的攻擊方式不同,Application level floods主要是針對應用軟體層的,也就是高於OSI的。

它同樣是以大量消耗系統資源為目的,透過向IIS這樣的網路服務程式提出無節制的資源申請來迫害正常的網路服務。

攻擊原理

拒絕服務攻擊即攻擊者想辦法讓目標機器停止提供服務或資源訪問。這些資源包括磁碟空間、記憶體、程式甚至網路頻寬,從而阻止正常使用者的訪問。

其實對網路頻寬進行的消耗性攻擊只是拒絕服務攻擊的一小部分,只要能夠對目標造成麻煩,使某些服務被暫停甚至主機當機,都屬於拒絕服務攻擊。

拒絕服務攻擊問題也一直得不到合理的解決,究其原因是因為這是由於網路協議本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。

攻擊者進行拒絕服務攻擊,實際上讓伺服器實現兩種效果:

一是迫使伺服器的緩衝區滿,不接收新的請求;

二是使用IP欺騙,迫使伺服器把合法使用者的連線復位,影響合法使用者的連線。

雖然同樣是拒絕服務攻擊,但是DDOS 和DOS 還是有所不同

DDOS的攻擊策略側重於透過很多“殭屍主機”(被攻擊者入侵過或可間接利用的主機)向受害主機傳送大量看似合法的網路包, 從而造成網路阻塞或伺服器資源耗盡而導致拒絕服務。

分散式拒絕服務攻擊一旦被實施, 攻擊網路包就會猶如洪水般湧向受害主機, 從而把合法使用者的網路包淹沒, 導致合法使用者無法正常訪問伺服器的網路資源, 因此, 拒絕服務攻擊又被稱之為 “洪水式攻擊” 。

常見的 DDOS 攻擊手段有 SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、 Flood、Proxy Flood 等。

而 DOS 則側重於透過對主機特定漏洞的利用攻擊導致網路棧失效、系統崩潰、 主機當機而無法提供正常的網路服務功能, 從而造成拒絕服務。

常見的 DOS 攻擊手段有 T earDrop、 Land、 Jolt、 IGMP Nuker、 Boink、 Smurf、 Bonk、OOB 等。

就這兩種拒絕服務攻擊而言,危害較大的主要是 DDOS 攻擊,原因是很難防範,至於 DOS 攻擊,透過給主機伺服器打補丁或安裝防火牆軟體就可以很好地防範。

DDOS 的表現形式主要有兩種:

一種為流量攻擊,主要是針對網路頻寬的攻擊,即大量攻擊包導致網路頻寬被阻塞, 合法網路包被虛假的攻擊包淹沒而無法到達主機;

另一種為資源耗盡攻擊,主要是針對伺服器主機的攻擊,即透過大量攻擊包導致主機的記憶體被耗盡或CPU 被核心及應用程式佔完,造成的無法提供網路服務。

如何判斷網站是否遭受了流量攻擊?

如何判斷網站是否遭受了流量攻擊可透過 Ping 命令來測試,若發現 Ping 超時或丟包嚴重(假定平時是正常的),則可能遭受了流量攻擊,此時若發現和你的主機接在同一交換機上的伺服器也訪問不了, 基本可以確定是遭受了流量攻擊。

當然, 這樣測試的前提是你到伺服器主機之間的 ICMP 協議沒有被路由器和防火牆等裝置遮蔽, 否則可採取 T elnet 主機伺服器的網路服務埠來測試,效果是一樣的。

不過有一點可以肯定,假如平時 Ping 你的主機伺服器和接在同一交換機上的主機伺服器都是正常的,突然都Ping 不通了或者是嚴重丟包,那麼假如可以排除網路故障因素的話則肯定是遭受了流量攻擊,再一個流量攻擊的典型現象是,一旦遭受流量攻擊,會發現用遠端終端連線網站伺服器會失敗。

如何判斷網站是否遭受了資源耗盡攻擊?

相對於流量攻擊而言, 資源耗盡攻擊要容易判斷一些, 假如平時 Ping 網站主機和訪問網站都是正常的,發現突然網站訪問非常緩慢或無法訪問了,而 Ping 還可以 Ping 通,則很可能遭受了資源耗盡攻擊 。

此時若在伺服器上用Nistat -na命令觀察到有大量的SYN_RECEIVED、TIME_W AIT、FIN_W AIT_1 等狀態存在,而EST BLISHED 很少,則可判定肯定是遭受了資源耗盡攻擊。

還有一種屬於資源耗盡攻擊的現象是,Ping 自己的網站主機 Ping 不通或者是丟包嚴重,而 Ping 與自己的主機在同一交換機上的伺服器則正常,造成這種原因是網站主機遭受攻擊後導致系統核心或某些應用程式 CPU 利用率達到 100%無法回應 Ping 命令,其實頻寬還是有的,否則就 Ping 不通接在同一交換機上的主機了。

當前主要有三種流行的 DDOS

1、SYN/ACK Flood 攻擊:

這種攻擊方法是經典最有效的 DDOS 方法, 可通殺各種系統的網路服務, 主要是透過向受害主機傳送大量偽造源 IP 和源埠的 SYN 或 ACK 包,導致主機的快取資源被耗盡或忙於傳送回應包而造成拒絕服務。

由於源都是偽造的故追蹤起來比較困難, 缺點是實施起來有一定難度, 需要高頻寬的殭屍主機支援。

少量的這種攻擊會導致主機伺服器無法訪問, 但卻可以 Ping 的通, 在伺服器上用 Netstat -na 命令會觀察到存在大量的 SYN_RECEIVED 狀態,大量的這種攻擊會導致 Ping 失敗、TCP/IP 棧失效,並會出現系統凝固現象,即不響應鍵盤和滑鼠。普通防火牆大多無法抵禦此種攻擊。

2、TCP 全連線攻擊:

這種攻擊是為了繞過常規防火牆的檢查而設計的,一般情況下,常規防火牆大多具備過濾 T earDrop、Land 等DOS 攻擊的能力。

但對於正常的 TCP 連線是放過的,殊不知很多網路服務程式(如:IIS、Apache 等 W eb 伺服器)能接受的 TCP連線數是有限的,一旦有大量的 TCP 連線,即便是正常的,也會導致網站訪問非常緩慢甚至無法訪問。

TCP 全連線攻擊就是透過許多殭屍主機不斷地與受害伺服器建立大量的 TCP 連線,直到伺服器的記憶體等資源被耗盡而被拖跨, 從而造成拒絕服務, 這種攻擊的特點是可繞過一般防火牆的防護而達到攻擊目的,缺點是需要找很多殭屍主機,並且由於殭屍主機的 IP 是暴露的,因此容易被追蹤。

3、刷 指令碼攻擊:

這種攻擊主要是針對存在 ASP、JSP、PHP、CGI 等指令碼程式,並呼叫 MSSQLServer、MySQLServer、Oracle 等資料庫的網站系統而設計的,特徵是和伺服器建立正常的 TCP 連線, 並不斷的向指令碼程式提交查詢、 列表等大量耗費資料庫資源的呼叫。

一般來說, 提交一個 GET 或 POST 指令對客戶端的耗費和頻寬的佔用是幾乎可以忽略的,而伺服器為處理此請求卻可能要從上萬條記錄中去查出某個記錄, 這種處理過程對資源的耗費是很大的, 常見的資料庫伺服器很少能支援數百個查詢指令同時執行。

而這對於客戶端來說卻是輕而易舉的, 因此攻擊者只需透過 Proxy 代理向主機伺服器大量遞交查詢指令, 只需數分鐘就會把伺服器資源消耗掉而導致拒絕服務。

常見的現象就是網站慢如蝸牛、ASP 程式失效、PHP 連線資料庫失敗、資料庫主程式佔用 CPU 偏高。

這種攻擊的特點是可以完全繞過普通的防火牆防護, 輕鬆找一些 Proxy 代理就可實施攻擊, 缺點是對付只有靜態頁面的網站效果會大打折扣,並且有些 Proxy 會暴露攻擊者的 IP 地址。

怎麼抵禦 DDOS

僅僅依靠某種系統或產品防住 DDOS 是不現實的, 可以肯定的是, 完全杜絕 DDOS是不可能的,但透過適當的措施抵禦 90%的 DDOS 攻擊是可以做到的。

基於攻擊和防禦都有成本開銷的緣故,若透過適當的辦法增強了抵禦 DDOS 的能力,也就意味著加大了攻擊者的攻擊成本,那麼絕大多數攻擊者將無法繼續下去而放棄,也就相當於成功的抵禦了DDOS 攻擊。

1、採用高效能的網路裝置引

首先要保證網路裝置不能成為瓶頸,因此選擇路由器、交換機、硬體防火牆等裝置的時候要儘量選用知名度高、 口碑好的產品。

再就是假如和網路提供商有特殊關係或協議的話就更好了,當大量攻擊發生的時候請他們在網路接點處做一下流量限制來對抗某些種類的DDOS 攻擊是非常有效的。

2、儘量避免 NAT 的使用

無論是路由器還是硬體防護牆裝置要儘量避免採用網路地址轉換 NAT 的使用, 因為採用此技術會較大降低網路通訊能力。

其實原因很簡單,因為 NA T 需要對地址來回轉換,轉換過程中需要對網路包的校驗和進行計算,因此浪費了很多 CPU 的時間,但有些時候必須使用 NA T,那就沒有好辦法了。

3、充足的網路頻寬保證

網路頻寬直接決定了能抗受攻擊的能力, 假若僅僅有 10M 頻寬的話, 無論採取什麼措施都很難對抗當今的SYNFlood 攻擊, 至少要選擇 100M 的共享頻寬,最好的當然是掛在1000M 的主幹上了。

但需要注意的是,主機上的網路卡是 1000M 的並不意味著它的網路頻寬就是千兆的, 若把它接在 100M 的交換機上, 它的實際頻寬不會超過 100M, 再就是接在 100M的頻寬上也不等於就有了百兆的頻寬, 因為網路服務商很可能會在交換機上限制實際頻寬為10M,這點一定要搞清楚。

4、升級主機伺服器硬體

在有網路頻寬保證的前提下,請儘量提升硬體配置,要有效對抗每秒 10 萬個 SYN 攻擊包,伺服器的配置至少應該為:P4 2.4G/DDR512M/SCSI-HD。

起關鍵作用的主要是 CPU 和記憶體, 若有志強雙 CPU 的話就用它吧, 記憶體一定要選擇 DDR 的高速記憶體, 硬碟要儘量選擇SCSI 的,別隻貪 IDE 價格不貴量還足的便宜,否則會付出高昂的效能代價,再就是網路卡一定要選用 3COM 或 Intel 等名牌的,若是 Realtek 的還是用在自己的 PC 上吧。

5、把網站做成靜態頁面

大量事實證明,把網站儘可能做成靜態頁面,不僅能大大提高抗攻擊能力,而且還給駭客入侵帶來不少麻煩,至少到為止關於 HTML 的溢位還沒出現,新浪、搜狐、網易等入口網站主要都是靜態頁面。

若你非需要動態指令碼呼叫, 那就把它弄到另外一臺單獨主機去,免的遭受攻擊時連累主伺服器, 當然, 適當放一些不做資料庫呼叫指令碼還是可以的。

此外,最好在需要呼叫資料庫的指令碼中拒絕使用代理的訪問, 因為經驗表明使用代理訪問你網站的80%屬於惡意行為。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026609/viewspace-2937382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章