Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

BIND 共用 Sinkhole Zone 實作與 DNSSEC 管理要點

Posted on 2025-11-052025-11-05 by Rico

作者:Rico Wu | 主題:DNS 防護實務


一、為什麼要建立 Sinkhole Zone?

在日常 DNS 維運中,我們經常會看到一些可疑查詢:

wpad.nuface.tw  IN  A
ns1.nuface.tw   IN  AAAA
blog.nuface.tw  IN  A

這些請求有些來自網際網路掃描,有些則是自動化偵測或 Bot 行為。
其中 wpad(Web Proxy Auto Discovery)甚至可能被用於安全攻擊(WPAD 攻擊)。

若我們希望:

  • 將這些可疑子域「沉沒」至 0.0.0.0(避免外部惡意利用)
  • 不必為每個子域建立獨立的 zone 檔

就可以透過「共用 Sinkhole Zone」的方式實作。


二、共用 Sinkhole Zone 設定範例

1️⃣ 建立共用區檔

檔名:

/etc/bind/zones/ext/db.sinkhole.common

內容:

$TTL 300
@   IN  SOA ns1.nuface.tw. dns-admin.nuface.tw. (
        2025090301 ; serial
        3600       ; refresh
        900        ; retry
        1209600    ; expire
        300 )      ; minimum
    IN  NS  ns1.nuface.tw.

; === 黑洞指向 ===
@   IN  A    0.0.0.0
; 視需求決定是否回應 AAAA
; @   IN  AAAA ::

*   IN  A    0.0.0.0
; *   IN  AAAA ::
  • TTL 300 秒:方便快速調整。
  • A = 0.0.0.0:讓查詢直接導向無效位址。
  • AAAA 可選:
    • 若想讓 IPv6 查詢直接得到 NODATA,不要寫 AAAA。
    • 若希望明確黑洞 IPv6-only 客戶端,則可加上 AAAA ::。

2️⃣ 在 named.conf 中引用

多個 zone 可共用同一個檔案:

zone "wpad.nuface.tw" {
    type master;
    file "/etc/bind/zones/ext/db.sinkhole.common";
    allow-transfer { none; };
    allow-update { none; };
};

zone "bad.attacker.com" {
    type master;
    file "/etc/bind/zones/ext/db.sinkhole.common";
    allow-transfer { none; };
    allow-update { none; };
};

這樣不論你要沉沒幾個子域,都可共用一份檔案,維護最簡單。


三、DNSSEC 的關聯與注意事項

DNSSEC 採用「信任鏈」的驗證機制。
每一層的關係是:

. (root) → .tw → nuface.tw → wpad.nuface.tw

這條鏈由 DS record(Delegation Signer)串起。

✅ 若主域有 DNSSEC(如 nuface.tw)

你在 ISP / Registry 放的 DS,是讓 .tw 能驗證 nuface.tw 的簽章。
但當你把 wpad.nuface.tw 切成獨立 zone 後,只要:

不在 nuface.tw 的 zone file 裡加入 DS for wpad.nuface.tw

那麼:

  • nuface.tw 的 DNSSEC 驗證仍然有效。
  • wpad.nuface.tw 會被視為「unsigned zone」。
  • 不會破壞整體 DNSSEC 信任鏈。

🛑 若誤加 DS 紀錄

那 DNS 解析器會期望 wpad.nuface.tw 提供對應簽章。
若沒有簽名檔,解析器就會判為「bogus」,導致查詢失敗。

⚙ 建議作法

  • Sinkhole zone 不簽名
  • Parent zone 只宣告 NS,不加 DS

四、IPv6 AAAA 回應策略說明

狀況查詢結果使用者體驗建議
不寫 AAAANOERROR / NODATA直接 fallback 到 IPv4,連線最快✅ 推薦
AAAA = ::IPv6 客戶端嘗試無效位址,快速失敗明確黑洞可選
AAAA = ::1連回自己本機,快速失敗有時造成誤判不建議

若你的目標只是「讓外部快速 fallback 到 IPv4」,只需回應 A=0.0.0.0。


五、建議的防護策略

  1. 建立共用 sinkhole 檔案
    • /etc/bind/zones/ext/db.sinkhole.common
  2. 新增可疑子域 zone 指向同檔案
    • zone "wpad.nuface.tw" { file "db.sinkhole.common"; };
  3. 啟用 Response Rate Limiting (RRL)
    降低被 DNS Flood 攻擊的風險。
  4. 保持 DNSSEC 簽名只在主域 (nuface.tw)
    子域黑洞不簽名、不上傳 DS。
  5. 監控 query.log
    若有大量重複查詢,即時新增至 sinkhole zone。

六、結語

透過共用 Sinkhole Zone 的設計,我們可以:

  • 快速封鎖惡意查詢(wpad / bad domain)
  • 保持設定簡潔一致
  • 不破壞主域名的 DNSSEC 簽名鏈
  • 在 IPv6 與 IPv4 環境中均可安全回應

這是一種輕量、可擴充、符合安全原則的 DNS 防護手法。
當公司域名流量愈來愈多、暴露面愈大時,這樣的防護策略能讓 DNS 管理更主動、更穩健。


✍️ 延伸閱讀

  • BIND9 Administrator Reference Manual – Response Rate Limiting (RRL)
  • [RFC 4035 – DNSSEC Protocol Modifications]
  • [Microsoft WPAD vulnerability reference (CVE-2016-3213)]

Recent Posts

  • Postfix + Let’s Encrypt + BIND9 + DANE Fully Automated TLSA Update Guide
  • Postfix + Let’s Encrypt + BIND9 + DANE TLSA 指紋自動更新完整教學
  • Deploying DANE in Postfix
  • 如何在 Postfix 中部署 DANE
  • DANE: DNSSEC-Based TLS Protection

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme