DNSSEC是為解決DNS欺騙和快取Wu染而設計的安全機制,英文名稱叫Domain Name System Security Extensions,利用密碼技術,使得網域解析伺服器可以驗證它所收到的應答(包括網域不存在的應答)是否來自於真實的伺服器,或是否在傳輸過程中被竄改。

簡單地說DNSSEC可以防止DNS劫持,確保用戶在DNS解析的過程中要求的網域名稱與對應的IP位址一致性。之前在京東雲端DNS免費網域解析就有朋友建議DNSSEC+CAA來組合使用,這樣可以最大限度確保DNS解析的安全,這篇文章就以Google Cloud DNS設定DNSSEC來作為示範。

啟用DNSSEC需要網域註冊商、DNS網域解析商還有本地DNS支援DNSSEC技術三方的共同努力才行。國內的阿里雲、騰訊雲、百度雲等網域註冊商暫不了解是否支援DNSSEC,從我使用的GodaddyNameNameCheapNamesilo等常見的國外網域註冊商都是支援DNSSEC了。

DNS網域名稱解析啟用DNSSEC防止DNS劫持-Google Cloud DNS設定DNSSEC

為了讓網域DNS解析更準確,最穩健的方法就是瀏覽器用戶端啟用HSTS+DNS CAA和DNSSEC+DNS over HTTPS或DNS-Crypt,目前挖站否wzfou.com已經採用了Https、CAA、HSTS、DNSSEC等技術,相關的教學有:

  1. 免費SSL憑證收集整理匯總-免費給網站添加Https安全加密訪問
  2. 啟用HSTS並加入HSTS Preload List讓網站Https存取更加安全-附刪除HSTS方法
  3. 京東雲DNS免費域名解析-支援線路地域細分 可新增CAA解析記錄

PS:2018年7月22日更新,Google Cloud DNS雖然支援DNSSEC,但不支援從屬/備份DNS,有需要Secondary DNS的朋友可以試試:He.net DNS網域名稱解析申請使用-免費DDNS、IPv6 位址和Slave DNS。

一、哪些DNS域名解析服務支援DNSSEC?

國內的dns盾(dnsdun.com)似乎目前唯一支援CAA和DNSSEC解析記錄的DNS解析服務商,其它的如DNSPOD、阿里雲DNS、Cloudxns等都不支援DNSSEC。不過dns盾太小眾了,雖然好幾年我就已經知道它了,但穩定性還要考慮。

國外的DNS域名解析支援DNSSEC的也是屈指可數,目前僅有Cloudflare、Google Cloud DNS、Rage4這三家支援DNSSEC,另外Cloudflare不支援設定那些DNSSEC 特有的紀錄,例如不支援IPSECKEY、SSHFP、TLSA、DNSKEY、 DS 記錄。建議用Google Cloud DNS、Rage4。

二、DNSSEC普及情況如何?國內?

  1. HTTPS://stats.labs.APN IC.net/

以下是stats.labs.apnic.net全世界不同地方的DNSSEC普及情況,從圖表中可以看出全世界支援DNSSEC的DNS伺服器還是相當少的,總量不超過15%。而國內的情況更加糟糕,低於1%。 (點擊放大)

三、Google Cloud DNS價格及使用教學課程

  1. HTTPS://cloud.Google.com/DNS/

Google Cloud DNS、Rage4都支援使用DNSSEC,但Rage4每個網域€2/月 起,依功能而非使用量定價,而Google Cloud DNS每個網域$0.2/月$0.4/百萬個請求。所以wzfou.com選擇了Google Cloud DNS。

Google Cloud DNS詳細的使用方法之前在放棄免費DNS改用付費DNS-Google cloud DNS申請使用與解析效果已經分享過了,這裡再簡單地說一下Google Cloud DNS使用方法。首先是登入Google Cloud 雲端平台,找到DNS解析。

然後點選建立DNS名稱。

地區名稱可以隨便選擇,只要不重複就可以。 DNS名稱就是你要解析的域名,例如wzfou.com,是否開啟DNSSEC,選擇開啟。確定。

Google Cloud DNS新增DNS解析記錄比較簡單,如果是@這樣的記錄,直接空著即可,如下圖:

Google Cloud DNS支援 A、AAAA、CNAME、NS、MX、TXT、SRV、SPF、LOC、NAPTR、PTR、CAA 以及 DNSSEC 相關記錄。目前來說是最齊全的。

要注意的是,Google Cloud DNS新增DNS記錄是集的形式,例如MX有兩筆記錄,那麼你只需要再點擊新增另一項。

Google Cloud DNS新增CAA記錄如下圖所示,關於產生CAA記錄的方法參考:京東雲DNS設定CAA。

四、域名註冊商Name啟用DNSSEC

在Google Cloud DNS找到「註冊機構設定」。

然後點選會顯示Google Cloud DNS的NS伺服器還有DS記錄。

到網域名稱註冊商Name(PS:如你使用的其它的網域商方法類似)修改NS伺服器為Google Cloud DNS。

ns-cloud-d1.googledomains.com
ns-cloud-d2.googledomains.com
ns-cloud-d3.googledomains.com
ns-cloud-d4.googledomains.com

如下圖:

然後在Name的DNSSEC管理介面填入DS記錄,主要是Key Tag、Algorithm、Digest Type和Digest。

五、偵測DNSSEC是否成功啟用及效果

  1. HTTPS://DNS Sec-analyzer.VE日霜IGN labs.com/

到verisignlabs網站輸入自己的域名,如果你的DS配置正確的話你會看到綠色的「鉤」。

用站長工具測試啟用了Google Cloud DNS的wzfou.com,各地的連線情況都沒有問題。

用百度站長平台的搜尋引擎抓取測試,都提示抓取成功,說明Google Cloud DNS在國內運作正常。

另外,Google Cloud DNS的收費真的是相當便宜。

六、總結

理論上講啟用DNSSEC還有CAA基本上是可以防止DNS劫持了,但由於目前DNSSEC普及率非常地低,尤其是國內的DNS基本上不支持DNSSEC,所以在國內使用DNSSEC的效果不一定會好,但“聊勝於無”,畢竟DNSSEC是發展的大趨勢。

Google Cloud DNS的四組NS伺服器第一組在國內Ping不通,但從監控來看DNS不影響。另外,需要說明的話已經Wu染的網域使用DNSSEC也是沒有用的,倒是可以使用DNS over HTTPS或DNS-Crypt的方法來對DNS解析全程加密。

發表評論