自從2000年全球駭客串連於中國農曆新年期間發動「拒絕服務攻擊」(Denial of Service,DoS)的「中國新年攻擊」事件一舉癱瘓各大著名的商務網站如eBay,Yahoo等發生後,拒絕服務攻擊手法即一戰成名。
由於DoS此類攻擊技術的門檻較低,僅需足夠的硬體及網路上隨手可得的攻擊程式,因此相關的攻擊事件層出不窮,也常使網管人員頭痛不已。本期筆者將使用netfilter架構中的recent模組來偵測並阻斷拒絕服務攻擊,以防止此類的攻擊。希望能達到下列的功能,而本解決方案所需的套件如下表所示:
●可記錄嘗試拒絕服務攻擊或暴力攻擊的惡意來源IP。
●可即時阻斷正在攻擊的來源。
●提供一個網頁介面的管理,可方便管理者查看惡意來源IP。
DoS攻擊主要是利用TCP/IP通訊協定的漏洞來發動洪水封包,就像組成一支Call In部隊,不斷地Call In被攻擊公司的客服專線,而使得客服專線無法正常的服務,來癱瘓受害者主機或利用服務主機程式的漏洞實施緩衝器溢位的攻擊(Buffer Overflow)讓服務主機程式當掉,進而停止服務。以TCP/IP通訊協定的漏洞來實施DoS攻擊,可分為下列幾種攻擊型式:
當封包資料在網路上傳輸時,會據MTU(Maximum Transmission Unit)來設定最大的切割長度並記錄被切割封包的位移值(Offset),當封包到達目地端後,目的主機即利用位移值來重組封包以復原資料。
TearDrop攻擊則是利用IP封包重組的漏洞。假造含有不正確位移值的封包,當這些封包到達目的主機後,可能會在重組的過程,因為無法處理不正確的位移值,而可能造成一些系統當機。如下圖示,在Linux系統下可利用ifconfig指令來查詢MTU資訊,而每個片段會是1500。
在TCP/IP協定的定義中,IP封包的來源位址可自行定義,不一定為有效位址。Land攻擊即是利用此種特性,透過IP Spoofing(IP欺騙)技術將SYN封包的來源位址與目的位址設定為相同位址。當目的位址接收到此類封包後,根據三向式握手(Three-way Handshake)動作回應SYN-ACK封包給來源位址,由於來源位址與目的位址相同,所以會回應ack封包,而建立空連接。在大量的Land攻擊下,即會建立大量的空連接,藉以消耗光受害端主機的資源。
ARP(Address Resolution Protocol)協定是用來取得網卡的MAC位址的協定,例如10.4.1.2(以下稱為來源端)欲連線到10.4.1.10(以下稱目的端),來源端會先查詢本機的arp表格,以Windows為例,可利用「arp -a」指令查詢本機的arp表格,即IP與MAC的對應表,如右上圖示。
倘若arp表格中沒有10.4.1.10相關的紀錄,則會發出arp廣播,詢問是否有10.4.1.10主機,如果10.4.1.10存在,則會回應arp Response封包,內含IP與MAC對應的資料,告知本身的MAC位址。而後,來源端會將10.4.1.10及所屬的MAC位址寫入arp表格,流程如下圖示。
而ARP攻擊(ARP Spoofing)即是由一個攻擊主機不斷的發出偽造的ARP Response封包,內含被攻擊者主機IP及攻擊者主機的MAC位址,如下圖示。
若上圖中其他主機欲連線至被攻擊端主機時接收ARP Response,如果接收到攻擊端所發出的ARP Response封包,便會將該錯誤的ARP資訊寫入自己的ARP Table內,之後若要連線到被攻擊端主機,即會將封包送往攻擊端的主機,因為ARP Table記錄被攻擊端主機的MAC為攻擊端主機的MAC,此種攻擊方式稱為ARP欺騙,其可能會造成下列的後果:
假如攻擊者所發出的ARP Response封包,IP位址為被攻擊端的主機,而MAC卻是一個不存在的主機。那接收到此ARP Response封包的主機,會因此無法連線到這個被攻擊主機上,因為MAC位址不正確。
以上例而言,假如攻擊者所發出的ARP Response封包,IP位址為被攻擊端的主機,而MAC卻是一個卻是攻擊者主機的MAC。假如攻擊成功的話,其他主機要連往被攻擊端主機時,會將封包送往攻擊者主機上,因為被攻擊端主機的MAC填的是攻擊者主機的MAC,而攻擊者可在處理完封包後,再將封包轉發到真正的主機,如此使用者並不會察覺到任何的異樣,但封包已經過攻擊者主機(中間人)處理過(如側錄),所以此種攻擊法又稱為中間人攻擊。
由上述說明得知,如果正牌之被攻擊主機回應的ARP Response速度比攻擊者所發出的ARP Response速度還要快,則其他主機所接收到的ARP Response封包是正確的(此種攻擊則未必能成功)。
此外,利用設定靜態ARP表格(將重要的主機如Gateway以靜態設定方式設定ARP)也可使ARP攻擊失效。
在Windows系統下,使用「arp -s [ip] [MAC]」指令即可在ARP表格中新建一筆紀錄,因此一般的資安建議,均會要求使用者用靜態的ARP設定來設定重要主機的MAC紀錄,以避免此類的攻擊。
TCP採三向式握手以建立連線,如下圖示。SYN Flood攻擊即利用上述第三步驟,在接受目的端的SYN-ACK封包後卻不回應ACK封包。如此可迫使受害者主機端須維護一份非常大的半連接列表,而被害主機將會因須耗費大量的主機資源來維護此份半連接列表,而可能造成受害者主機因資源耗盡而中止服務。
(更多精采文章詳見網管人第54期)