Python 如何查看域是否使用DNSSEC
我正在试图找到一种方法来查看域是否正在使用DNSSEC。从这条线索中:我学到了这一点Python 如何查看域是否使用DNSSEC,python,security,dns,Python,Security,Dns,我正在试图找到一种方法来查看域是否正在使用DNSSEC。从这条线索中:我学到了这一点 dig +dnssec <domain> dnskey dig+dnssec dnskey 可以揭示很多事情。但是经过一些实验,我意识到它只显示名称服务器是否使用DNSSEC设置。我需要弄清楚的是,域是否标记为在NIC上使用DNSSEC 我试着看一下dnssec for python,但它们似乎都是看名称服务器,而不是原来的NICzone 在深入研究之后,我注意到一些NIC(如sidnl.nl)
dig +dnssec <domain> dnskey
dig+dnssec dnskey
可以揭示很多事情。但是经过一些实验,我意识到它只显示名称服务器是否使用DNSSEC设置。我需要弄清楚的是,域是否标记为在NIC上使用DNSSEC
我试着看一下dnssec for python,但它们似乎都是看名称服务器,而不是原来的NICzone
在深入研究之后,我注意到一些NIC(如sidnl.nl)在WHOIS数据中对其进行了记录,但由于这并不可靠(并非所有NIC都这样做),我正在寻找更好的方法
ANSER不必是编程的/使用代码片段,但如果是的话,如果是python/C#/java或其他一些语法简单易懂的语言,我会很高兴的;博士 诊断起来非常困难,不要自己做,不要认为一个DNS查询或whois输出就能真正完全回答这个问题,它更复杂 如果您信任他们,以下工具将非常有用,使生活更简单:
- 正如很久以前在另一份答复中所报道的那样
- 基于特定查询的DNS层次结构的非常好的显示,带有
- 通用区域检查器
dig
,或DNSSEC的后续版本delv
(见下文),并且unbound
为等效功能集提供了drill
实用程序
“我需要弄清楚域是否在NIC上标记为使用DNSSEC。”
这与你的问题无关,或者基于以下问题措辞不当
whois输出中所写的内容并不有用:它有时确实可以显示DNSSEC:Yes
或其他等效内容,但whois和DNS是两个独立的东西,如果您想解决DNS问题,您应该留在DNS领域,所以现在让我们忽略whois
回到dig+dnssec dnskey
,这是一个很好的方向,但从两个大问题开始:
dig
,而没有使用@
指定查询的名称服务器。因此,您将得到的答复将来自某个递归名称服务器,您可以控制它,也可以不控制它,它可能对您撒谎,它通向您的路径可能受控制,也可能不受控制,在后一种情况下,答案可以在传输过程中修改;要解决这一点,实际上您需要查询域的一个权威名称服务器,因此您首先需要找到它们;这可能会变得复杂,因为您需要使用DNSSEC来确保在所有查询中获得有效的答复,同时DNSSEC中的任何错误都会将SERVFAIL
作为答复+nocdflag
而不是+dnssec
(触发签名的显示,即RRSIG
记录)+cdflag
实际上是一个禁用验证的标志,因此您需要将其反转(因为默认情况下解析程序可能会进行验证,在这种情况下,比较dig
与dig+cd
结果可以帮助解释观察到的错误是否与DNSSEC相关)(所有DNSSEC故障当前仅返回SERVFAIL
,这是一种通用错误代码,在与DNSSEC无关的无数其他情况下可能会出现此错误代码;)DNSKEY
这一事实并不意味着它启用了DNSSEC,因为要使其工作,它必须有一个DS
记录匹配该特定项,但已发布在父权威名称服务器(即注册表的名称服务器)上ut这样的记录(其签名本身带有一个已发布的密钥,并且它本身与另一个DS
相对应,记录更高一级,以此类推,直到DNS根),即使发布了DNSKEY
,它也永远不会被信任,因此域实际上没有DNSSECunbound
),或者使用一个库(如getdns
),它将为您解决所有这些问题,或者您使用一个远程递归名称服务器为您验证DNSSEC,前提是您完全信任相关的名称服务器和所有e您和it之间的网络路径(或者您现在使用DoH或DoT将DNS交换打包成TLS流)。
因为如果您使用的远程服务器不可信,它可能会在DNSSEC验证结果方面对您撒谎,如果您信任名称服务器而不信任网络路径,那么活动攻击者可以在结果从递归名称服务器传来之前对其进行修改
请注意,bind的最新版本提供了delv
,它是dig
的后续版本,专门用于DNSSEC相关的故障排除:
Bind9.10包含一个新的调试工具,它是dig的继承者