資安基礎惡補 - 網路篇 - SRV Record 的愛恨情仇

SRV 紀錄

不知道讀者們是否還記得我們在 上一篇 文章提到的 SRV 紀錄呢?


先來複習一下我在 GoDaddy 截圖的 DNS SRV Record 設定~也就是上面這張圖 XD

仔細看會看到幾個關鍵設定,如:

1. 服務(Service):

指定提供的服務名稱,如 _sip(SIP 通訊協議)或 _xmpp(XMPP 即時通訊)等。

2. 協議(Protocol):

指定使用的協議,如 _tcp_udp 等。

3. 姓名(Name):

為此 SRV 記錄所對應的 主機名稱(子域名),通常是 @(代表根域)或 email。

4. 值(目標,Target):

提供該服務的「伺服器主機名」,如 host.domain.com。

5. 優先級(Priority):

數字越小,優先級越高,伺服器會被優先使用。

6. 粗細(官方的翻譯有夠怪,應該是指「權數」,Weight):

「權數」越高的伺服器,分配到的流量就越多,讓負載更均衡。

7. 端口(Port):

表示該服務運行的 TCP / UDP 埠號,如 5060(SIP)、5222(XMPP)等。

8. TTL:

表示 DNS 快取時間,單位為秒,影響記錄多久才會刷新(例如 3600 = 1 小時)。

在大致了解其基礎後,我們一起來看看實際的 SRV 記錄範例: 

_xmpp._tcp.kikasecures.com.86400 IN SRV 10 5 5223 chat.kikasecures.com.


而上述紀錄其實就是對應到如下(以下為 Chatgpt 幫忙整理的表格):











唯一比較沒有特別說明到的是類別 Class,此處代表的是 Internet 類型的 DNS 紀錄,而 Internet 類型也是目前很廣泛使用的一種。


在了解其紀錄個別代表的涵義後,此時應該會有讀者心想:「有了這個 SRV 紀錄,那具體會怎麽運行啊?」


筆者就根據上述提到的「_xmpp._tcp.kikasecures.com.86400 IN SRV 10 5 5223 chat.kikasecures.com.」範例做講解:

1. 連線:

當 XMPP 客戶端(如 Pidgin、Gajim 等)連線 kikasecures.com 時,會查詢這條 SRV 記錄,並連線到 chat.kikasecures.com

2. 使用協議:

連線時使用 TCP 協議,Port 為 5223。

3. 優先順序 10:

如果有多台伺服器,會「優先選擇數值較小」的。

4. 權重 5:

當多台伺服器的優先順序相同時,這個值影響流量分配。


如何查閱 SRV 紀錄?

如果你是使用 macOS / Linux,使用 nslookup 就可以了~

nslookup -q=SRV kikasecures.com



不過,這時候你可能會踩到一個坑...








有可能會遇到「No Answer」的情況 XD 會遇到這樣的情況可能的原因是「該網域沒有設置 SRV 紀錄」。


這時候就需要觀察,你的這個 Domain 是否有對應的 A 、 AAAA record~


以 A 紀錄為例,我們可以使用以下的指令:

nslookup -q=A kikasecures.com


這時候,你可能會看到我們的網站有兩個 IP ~





但是實際上不能真的用該 IP 直接去訪問(因為伺服器後面有 CDN),如下圖:





那麼,這時候可能讀者會有疑問:「我要怎麼確定有用 CDN ?」

很簡單,萬用 nslookup 大法,加上剛剛查到的 IP 就行了!




這邊表示有用到 AWS 的 CDN,如果想要進階查詢 AWS CDN 的 NetRange 則可以使用 whois + ip ,如:




就會得到以下的結果(13.244.0.0 - 13.251.255.255)






好的,廢話這麼多@@ 讓我們回到正題「找到 A、AAAA Record 可以幹嘛?」


在找到紀錄後,我們基本上可以確認幾點:

1. A 記錄可確認該域名是否已啟用 DNS

在查詢過程中,如果 A 記錄也不存在,那就代表「這個網域還沒有對應到任何伺服器」,自然也不可能有 SRV 記錄。

2. 若 A 記錄查詢成功,再進一步確認 SRV 記錄

如果 A 記錄存在,但 SRV 記錄查不到,那可能只是「服務沒有設定 SRV 記錄」,而是透過其他方式運作(例如 A 記錄 + 特定 port)。


那依照先前的結果我們可以知道 DNS 是有正確被啟用的,只是查不到 SRV 紀錄。


如果想要排查錯誤,可以往這幾個方向看,如:

1. SRV 記錄沒有正確設定

2. SRV 記錄未公開或受到限制 

有些 DNS 提供商(如 Cloudflare)可能不支援 SRV 記錄解析,或預設不會對外提供這些記錄

3. 本機 DNS 伺服器未更新


參考資源

Cloudfare SRV 紀錄:

https://www.cloudflare.com/zh-tw/learning/dns/dns-records/dns-srv-record/


延伸閱讀

在大致了解 SRV Record 之後,應該就可以嘗試研究看看最近(2024)的 LDAPNightmare 攻擊,或許就能了解其中的 SRV 查詢到底是在幹嘛了 XD

相關新聞:https://www.ithome.com.tw/news/166868


留言

這個網誌中的熱門文章

資安基礎惡補 - 網路篇 - DNS

SSL/TLS 協定知多少 - 基礎篇

About Me - 關於我的一切