UDP是一種無連接協議,且可用腳本輕松生成大量UDP數據包而常被用于海量帶寬的DDoS攻擊,也就是UDP泛洪攻擊。
由于DNS主要采用的是UDP協議,某些情況下采用TCP協議, 而UDP/DNS協議也常被DDoS工具利用。
DNS協議是一個十分重要的網絡協議,所以這個協議的可用性就異常重要。為了讓DNS拒絕服務,惡意攻擊者向允許遞歸的開放DNS解析器發送大量偽造的查詢請求。如果查詢請求的數量巨大,DNS服務器很有可能會發送大量的DNS響應信息。這也就是我們常說的放大攻擊,這種方法利用的是DNS解析器中的錯誤配置。由于DNS服務器配置錯誤,那么DNS解析器很可能會在接收到一個非常小的DNS查詢請求之后,向目標主機返回大量的攻擊流量。在另一種類型的攻擊中,是向DNS服務器發送未經許可或不符合規則的查詢請求來進行攻擊。
有10種簡單而實用的方法來緩解DNS泛洪攻擊所帶來的影響,更好地保護DNS基礎設施。
第一,不允許未經過請求的DNS響應。一個典型的DNS交換信息是由解析器到服務器的請求,以及從服務器到解析器再到服務器的響應信息組成。沒有未經過請求的回應,同樣也沒有回應信息,也不會被回應信息響應。當一個回應已經到達,但如果相應的請求沒有通過,回應就被丟棄。這種機制能夠有效地緩解DDos攻擊影響。
第二,丟棄快速重傳數據包。即便是在數據包丟失的情況下,任何合法的DNS客戶端均不會以較短的時間間隔向同一DNS服務器發送相同的查詢請求。每個RFC均需遵守查詢重傳數據包的規則。因此,如果從相同IP地址發送至同一目標地址的相同查詢請求發送頻率過高,那么數據包可丟棄。
第三,如果DNS服務器已經發送了響應信息,應禁止服務器在較短時間間隔內對相同的查詢請求信息進行響應――啟用TTL 。一個合法的DNS客戶端如果已經接收到了響應信息,就不會再次發送相同的查詢請求。每一個響應信息都應進行緩存處理直到TTL過期。當DNS遭遇請求泛洪時,可以啟動阻斷無關的請求。
第四,丟棄異常來源的DNS請求和響應。通常情況下,攻擊者會利用腳本來對目標進行分布式拒絕服務攻擊(DDoS攻擊),而且這些腳本是有漏洞的,不符合與DNS報頭有關的RFC。在服務器中部署簡單的匿名檢測機制,在某種程度上可以限制泛洪中的數據包數量。
第五,果斷丟棄未經請求或突發的DNS請求。這類請求信息很可能是由偽造的代理服務器所發送的,或者由于調試需要客戶端配置錯誤或者是攻擊流量。以上任何一種情況下果斷丟棄數據包。非泛洪攻擊 (Non-Flood) 時段,創建一個白名單,添加允許服務器處理的合法請求信息。白名單可以阻斷非法的查詢請求信息以及非常見數據包。這種方法可以有效地保護您的服務器不受泛洪攻擊、影子域名 (Phantom-Domain),以及影子子域名(Phantom-Subdomain)的威脅。除此之外,還也可以保證認證服務器只處理合法的域名服務器只對合法的DNS查詢請求進行處理和響應。
第六,啟動DNS客戶端驗證。偽造是DNS攻擊中常用的一種技術。如果設備可以啟動客戶端驗證信任狀,便可以用于從偽造泛洪數據中篩選出非泛洪數據包。
通過反偽造技術,強制TCP傳輸或重傳。
第七,響應緩存避免DNS服務器過載宕機。采用高性能DNS緩存工具,使用硬件線路每秒處理百萬DNS請求。遇到泛洪攻擊時,如果響應數據在緩存中,DNS查詢通過上述所有檢測后,緩存便能夠響應。從而有效地防止服務器因過載而宕機。
第八,使用ACL的權限。許多請求中包含了服務器不具有或不支持的信息,那么可以進行簡單的阻斷設置,例如外部IP地址請求區域轉換或碎片化數據包,直接丟棄即可。
第九,定位ACL、BCP38、IP信譽功能的使用。托管DNS服務器的任何企業都有用戶軌跡的限制。當攻擊數據包被偽造,偽造請求來自世界各地的源地址。設置一個簡單的過濾器可阻斷不需要的地理位置的IP地址請求或只允許在地理位置白名單內的IP請求。同樣,偽造是隨機的。有時,某些偽造的數據包可能來自與內部網絡地址。
第十,余量帶寬。如果日常DNS流量假設是 X Gbps,確保流量通道不止是日常的量,有一定的帶寬余量可以有利于處理大規模攻擊。