Linux

阻止 BIND DNS 記憶體上配置錯誤的 DNS 條目

  • December 30, 2015

我正在執行一個帶有自己的 BIND DNS 記憶體的網路爬蟲。我們的程式碼使用我們的 DNS 記憶體解析並使用 Python 的請求庫發出 GET 請求。

問題是許多 FQDN 配置錯誤,它們指向 RFC1918 IP 地址或環回 IP,例如127.0.0.110.0.0.0/8. 結果,我們的爬蟲試圖連接這些 IP,並以來自我們數據中心的掃描報告結束。

我們對爬蟲進行了更改,現在它首先為 FQDN 解析 ip,如果 IP 在私有/環回/保留範圍內,則跳過它。

在用 tcpdump 嗅探後,我發現仍有流量流向私有 IP 地址。我想它們是由於 HTTP 重定向而發生的,因為我們檢查了原始的 FQDN,但我們不檢查重定向的主機,因為這部分發生在 Python 的請求庫中。

BIND 是否有任何選項可以阻止解析私有、環回或保留的 IP 地址?我可以將其設置為返回某種“未解決”錯誤嗎?

**編輯:**我試圖將 BIND 記憶體轉儲到文件並檢查它,現在我確定它是由於 HTTP 重定向而發生的,但更改程式碼並不容易,我正在尋找配置 BIND 之類的快捷方式,否則我將在防火牆上阻止它們.

使用 BIND,您可以使用響應策略區 (RPZ)功能來阻止解析引用某些地址的地址記錄 ( A/ )。AAAA

具體而言,RPZ-IP類型的條目是相關的:

RPZ-IP

IP 觸發器是響應的 ANSWER 部分中 A 或 AAAA 記錄中的 IP 地址。除了作為rpz-ip的子域之外,它們被編碼為客戶端 IP 觸發器。

作為範例案例,手冊使用了這個:

; IP policy records that rewrite all responses containing A records in 127/8
;       except 127.0.0.1
8.0.0.0.127.rpz-ip      CNAME   .
32.1.0.0.127.rpz-ip     CNAME   rpz-passthru.

關於配置內容的總體構想在手冊中總結為:

例如,您可以使用此選項語句

response-policy { zone "badlist"; };

和這個區域聲明

zone "badlist" {type master; file "master/badlist"; allow-query {none;}; };

使用此區域文件

$TTL 1H 
@                       SOA LOCALHOST. named-mgr.example.com    (1 1h 15m 30d 2h)
                        NS  LOCALHOST.
; [snip]

; IP policy records that rewrite all responses containing A records in 127/8
;       except 127.0.0.1
8.0.0.0.127.rpz-ip      CNAME   .
32.1.0.0.127.rpz-ip     CNAME   rpz-passthru.

; [snip]

請閱讀詳細資訊以了解整體設置以及 RPZ 區域內相當具體的語義!(它具有正常的區域語法,但您可以看到一些特殊名稱具有非常特定的含義。)

引用自:https://serverfault.com/questions/745870