DNS <-> IP 身份驗證是否有任何標準?
我正在尋求實現一種身份驗證機制,該機制允許根據客戶端的域名強制執行訪問策略。身份驗證伺服器使用 DNS 中可用的資訊來驗證客戶端授權。
更多細節:
訪問策略 資源所有者限制對資源的訪問僅限於特定的子域(例如 my-x-service.clientexample.com)。要訪問資源,客戶端必須證明它擁有子域或者它是授權代表域所有者訪問該資源的第 3 方。
身份驗證 為了證明它代表域所有者行事,客戶端必須在域名的 TXT 記錄中將其 IP 地址列入白名單。身份驗證伺服器將客戶端請求的 IP 地址與提供的聲明域的 TXT 記錄上發布的列表相匹配。如果兩者都匹配,則授予對資源的訪問權限。
http://maps.serverexample.com/getLocationByname?params Content-Type: application/JSON Claim-Domain: my-x-service.clientexample.com
有沒有這樣的標準已經到位?我只知道 SPF,但由於它用於電子郵件,我認為規範需要一些修整。
編輯 -
SPF 不是安全憑證
我認為這裡最大的誤解是 SPF 記錄提供了可信的憑證。事實上,SPF並不是一種安全的憑證,至少在現實的安全世界中是這樣。
DNS 本質上是一種不安全的協議。它基於 UDP(無傳輸層握手),協議本身不實現握手,並且沒有加密保證您收到的“回复”數據包沒有被欺騙。如果你做一些研究,你可以到處找到這個。
房間裡的大像在這裡很明顯:如果 DNS 如此不安全,為什麼 SPF 可以做它所做的事情?因為風險很低。SPF 可能發生的最壞情況是零增益情況:如果您沒有 SPF 記錄,您就會回到原來的位置。SPF 是一個醜陋的妥協,郵件管理員在面對更大的問題時被迫達成,這就是它的程度。
為了進一步研究,我建議您研究一種鮮為人知的 DNS 記錄類型,稱為
SSHFP
它所面臨的有用挑戰。SSHFP
是將伺服器的 SSH 公鑰放入 DNS 的標準。您的 SSH 客戶端永遠不會要求您最初信任密鑰。那太棒了。但是,如果您查看 SSH 客戶端信任記錄的先決條件SSHFP
,就會發現這裡描述的問題類型完全相同。這應該消除關於 DNS 是否可用於在沒有某種形式的根名稱伺服器信任的情況下提供安全憑證的任何疑慮。(DNSSEC)DNS安全不是唯一的挑戰
好的,現在你知道為什麼你所描述的以前沒有做過。不過,DNSSEC 指日可待,對吧?讓我們假設每個人都可以使用驗證 DNSSEC 解析器,並且 DNSSEC 不會像 IPv6 那樣面臨同樣的慣性。
這個標準可能不會發生。
我知道 Mark 的回答附帶的評論執行緒不是您想听到的,但是當涉及到發布受信任 IP 列表是一個壞主意時,他們已經把釘子釘在了頭上。大公司將非常不願意實施三步信任,您將在網際網路上發布可用於訪問其係統的 IP 列表。這對他們來說是一個荒謬的前景,特別是當公鑰加密存在並且是管理委託信任系統的首選方式時。
在這個答案中,我提到了兩種解決更大問題的技術,這些問題在全球範圍內影響 IT 中的每個人,這兩種技術都面臨著很大的惰性。與讓這隻鳥飛起來相比,這種慣性將微不足道。這就是該死的真相。