所謂的"放大"效果, 本來是正常的需求與回應,
但這個本意善良的效果被拿來刻意加工/偽造發揮了,
並不是攻擊程式有"放大"的能力.
打個比方, 你這篇發問, 我若很熱心回答兩三頁內容, 即是"放大"效果(似 DNS recursive answer)
若我設限只做簡單回答, 不要雞婆, 只回應記錄良好的發問, 就可避免"放大"效果, 避免浪費我的資源.(似 DNS non-recursive, allow-recursion, rate limiting)
但攻擊方不可能由單一主機達成, 而是聯合世界各地許多僵屍一起發動的. (Distributed)
以下是雞婆的部份:
所以, 避免被僵屍化, 集合僵屍清單....等,
其實以國家資安而言, 應是最基礎而必要的監控.
很可惜, 台灣這方面, 即使提醒過高層單位, 但....@#$!?
畢竟ISP都劣化了, 很基礎的東西沒作好, 能期待資安多好呢?
(永遠要發生重大事故才會有感, 再用極高的代價病急亂投醫)
至於有些官方講的"清洗流量", 是否有助DDos存活?
請參考 mytiny 大的問答/回應.
補充:
舉個例子來看好了:
15-Feb-2017 10:18:07.122 info: client 185.188.204.2#39248: query (cache) 'leth.cc/ANY/IN' denied
以下數據會有些變動, 僅供參考
$ dig leth.cc ns | grep rcvd
;; MSG SIZE rcvd: 433
$ dig +dnssec leth.cc ns | grep rcvd
;; MSG SIZE rcvd: 1329
$ dig leth.cc any | grep rcvd
;; MSG SIZE rcvd: 12400
$ dig +dnssec leth.cc any | grep rcvd
;; MSG SIZE rcvd: 13296
因此有些DNS服務會故意把外來的 ANY query 拒絕或time-out, 例如 Cloudflare
$ dig @zod.ns.cloudflare.com cloudflare.com any
cloudflare.com. 3789 IN HINFO "Please stop asking for ANY" "See draft-ietf-dnsop-refuse-any"
將"DDOS DNS反射放大"分三個部份說明:
(1)DNS放大:
一般DNS回應封包並不大, 例如:
$ dig MX ithelp.ithome.com.tw |grep "MSG SIZE"
;; MSG SIZE rcvd: 200
$ dig ANY ithelp.ithome.com.tw |grep "MSG SIZE"
;; MSG SIZE rcvd: 116
上例才這才200bytes和116bytes. 很小.
那要如何放大? 通常是利用EDNS0 DNS協定或DNSSEC來"加大"DNS回應的封包大小, 差不多數千Bytes, 這樣就"放大"幾十倍.
(2) DNS反射:
這是IP Spoofing, 也就是偽造DNS查詢封包中的來源IP, 讓DNS傳送回應給偽造的IP.
(3) 在DDoS DNS反射放大攻擊中的D:
攻擊者偽裝為被害主機IP-->大量殭屍電腦大量查詢DNS-->[被害者使用的DNS主機加上遞迴的=====>擁有被偽造的IP的被害者主機]
如上, 大量殭屍電的大量DNS查詢是D, 被害者使用的DNS主機是非不分, 將大量的放大的DNS的回應反射給被害者.
請注意, 這攻擊是兩個層次的, 首先DNS伺服器受DDoS的UDP flood攻擊, 導致DNS伺服器再對被反射到擁有被偽造IP的電腦/伺服器進行反射放大攻擊, 攻擊者如同披著羊皮的狼, 因此, 要保護好自己的DNS伺服器和慎選可信任的DNS主機, 沒有第一層的攻擊, 就不會有第二層的攻擊.