
作為 DOOS 攻擊(基本上無效)的一部分,我目前看到以下形式的日誌訊息:
<DATE> client <EXTERNAL-IP>#3074 (<NAME>): query: <SAME-NAME> IN RRSIG + (<ONE-OF-MY-IPs>)
我對 DNS 日誌的讀取表明這是來自 <EXTERNAL-IP > 的查詢,結果將發送到 <ONE-OF-MY-IPs >。那是對的嗎?
我們正在運行一個舊的 BIND,很快就會升級,但我希望了解這個查詢實際上在做什麼(許多都被發送)。
編輯:另外,很高興知道他們如何建立它以將結果發送到另一個 IP。
答案1
BIND 查詢日誌格式
您關注艾倫·克萊格 (ISC) 了嗎?BIND 日誌記錄幻燈片?第 16 頁指出不正確地:
回應發送到的地址(在括號中)
BIND 9 管理員參考手冊告訴我們,它其實是詢問已發送,即您的 DNS 伺服器的 IP 位址。手冊結構不是最容易閱讀或參考的,因此這裡是相關文件的完整路徑:
- 從參考手冊版本 9.14.11 開始,
- 第 5 章 BIND 9 配置參考,
- 設定檔語法,
logging
語句定義和用法,category
詞組,queries
- 設定檔語法,
- 第 5 章 BIND 9 配置參考,
更清晰的格式和重點是我的:
- 查詢日誌條目首先以
@0x<hexadecimal-number>
格式報告客戶端物件識別碼。- 接下來,它會報告客戶端的 IP 位址和連接埠號,以及
- 查詢名稱、類別和類型。
- 接下來,報道
- 是否設置了 Recursion Desired 標誌(
+
如果設置,-
如果未設置),- 查詢是否已簽署 (
S
),- EDNS 是否正在使用以及 EDNS 版本號 (
E(#)
),- 是否使用 TCP (
T
),- 是否設定了 DO (DNSSEC Ok) (
D
),- 是否設定了 CD(檢查停用)(
C
),- 是否收到有效的 DNS 伺服器 COOKIE (
V
),以及- 是否存在沒有有效伺服器 COOKIE 的 DNS COOKIE 選項 (
K
)。
- 此後,將報告查詢發送到的目標位址。
- 最後,如果用戶端查詢中存在任何 CLIENT-SUBNET 選項,則會將其包含在格式為 的方括號中
[ECS address/source/scope]
。
所以在:
info: client @0xf00 203.0.113.88#3074 (example.com): query: example.com IN RRSIG + (192.0.2.1)
203.0.113.88#3074
是客戶端的IP位址和連接埠example.com
是查詢名稱、IN
類別和RRSIG
類型 (RFC 4034, 3)+
告訴客戶要求遞迴192.0.2.1
是查詢發送到的 DNS 伺服器的 IP 位址
DNS 放大攻擊以及如何緩解這些攻擊
此日誌條目中沒有 DDoS 攻擊的跡象本身,並將回應傳送回客戶端203.0.113.88#3074
。如果客戶端IP位址被欺騙,那麼放大攻擊是關於對查詢的回應RRSIG
比原始查詢大得多。
……攻擊者導致 UDP DNS 查詢傳送到反射解析器,並將查詢的來源 IP 位址設定為目標(受害者)的位址。 。由於欺騙性來源,回復實際上被發送到目標。 - -
如果/當未請求的 DNS 回應到達目標電腦時,它們將被丟棄,但當它們到達目標電腦時,它們已經消耗了網路資源和目標電腦上的一小部分 CPU 時間。
為了緩解這種情況,請根據您的情況:
- 如果這是一個權威性伺服器,不允許開放遞歸。這直接來自 IANA權威名稱伺服器的技術要求:
沒有開放的遞迴名稱服務
權威名稱伺服器不得提供遞歸名稱服務。透過在權威機構管轄範圍之外發送設定了「RD」位的查詢來測試此要求。
如果這是一個遞迴的名稱伺服器,僅限制對應允許使用此服務的您自己的網路的存取。這可以透過allow-query
或 來完成allow-recursion
。
allow-recursion
指定允許哪些主機透過此伺服器進行遞迴查詢。如果
allow-recursion
未設置,則allow-query-cache
如果設定則使用,否則allow-query
如果設定則使用,否則localnets; localhost;
使用預設值 ( )。
- 您可以使用回應率限制:
若要讓 RRL 能夠防禦這種情況,請編輯
named.conf
下列rate-limit
子句並將其新增至全域選項:options { … rate-limit { responses-per-second 10; }; };
官方文件中對此進行了更徹底的解釋options
語句定義和用法:回應率限制。在那裡你可以找到
- why and how to use `slip` to truncate responses (done by default with value `2`)
- use `qps-scale` to tighten defenses during attacks.