代码之家  ›  专栏  ›  技术社区  ›  Daniel F

没有发送相关查询时,名称服务器的正确响应?

  •  0
  • Daniel F  · 技术社区  · 6 年前

    我有一个用Python编写的非常初级的名称服务器,它只使用 socket dnslib ,主要用于加密DNS-01挑战响应,以及一些实验目的的记录。

    我的问题是当查询到达服务器时,名称服务器应该响应什么,但是它不包含服务器想要响应的相关数据?

    我问是因为我一直在接受 ANY leth.cc

    我改变了

    data, addr = sock_dns.recvfrom(1024)
    q = dnslib.DNSRecord.parse(data)
    a = q.reply()
    # add an answer if query is relevant
    # a.add_answer(*dnslib.RR.fromZone(qname + " 30 IN TXT " + verification_code))
    sock_dns.sendto(a.pack(), addr)
    

    data, addr = sock_dns.recvfrom(1024)
    q = dnslib.DNSRecord.parse(data)
    a = q.reply()
    # add an answer if query is relevant
    # a.add_answer(*dnslib.RR.fromZone(qname + " 30 IN TXT " + verification_code))
    if len(a.rr) > 0:
     sock_dns.sendto(a.pack(), addr)
    

    这种行为可以接受吗?


    考虑到答案,我现在把它改成

    data, addr = sock_dns.recvfrom(1024)
    q = dnslib.DNSRecord.parse(data)
    a = q.reply()
    # add an answer if query is relevant
    # a.add_answer(*dnslib.RR.fromZone(qname + " 30 IN TXT " + verification_code))
    if not a.rr:
      a.header.rcode = dnslib.RCODE.REFUSED
    sock_dns.sendto(a.pack(), addr)
    

    虽然这可能是有效客户机的正确响应,但在正常操作下,没有查询 leth.cc 应该一直到达服务器,因为除了在注册器DNS联机配置界面中配置的NS记录之外,没有任何东西指向我的名称服务器。这是他们的名称服务器指示客户机应该去问我的名称服务器,以获得他们无法回答的更具体的查询的答案。

    但在查询 下铺 RCODE.REFUSED ,或者请求可能是以这样的方式被欺骗的 addr

    此外,这不是一个解析名称服务器,如果找不到信息,它不会出去查询其他名称服务器。我不认为不回应 qnames

    1 回复  |  直到 6 年前
        1
  •  1
  •   Patrick Mevzek James Dean    6 年前

    忽略查询绝对不是您想要做的事情

    可能的返回码定义在 https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6 大部分定义见RFC1035。

    对于你的情况,我认为你有你所需要的:

    定义如下:

    名称服务器拒绝 执行指定的操作 服务器可能不希望提供 给特定请求者的信息, 传输)对于特定数据。

    现在,您的名称服务器对某些域名具有权威性。如果它接收到其他的查询,它应该说它对它们没有权威性,这是 NXDOMAIN公司

    名称错误-仅对 来自权威名称的响应 服务器,此代码表示 不存在。

    这是一个很小的答案,因此你没有放大任何东西。您的服务器仍然可能会受到许多这样的查询的影响,您可能会决定实现速率限制(见下文)。诚然,UDP的流量您的服务器可能会回答一个受害者不是真正的查询源,但没有放大,就像世界上任何其他名称服务器也会这样做,因为这是所有基于UDP的协议的悲惨命运。

    ANY ,即使是您授权的名称),因为在这里,受害者可能会收到大量流量,而攻击者只需要很少的发送给您。

    也, 任何 https://blog.cloudflare.com/what-happened-next-the-deprecation-of-any/

    现在您似乎更多地谈到操作问题和DDOS攻击。这是另一个连答复都可能代价高昂的情况。当前的名称服务器实现了一种RRL机制,用于“响应速率限制”,基本上是通过降低响应速率来实现的。 请看这篇文章的Bind,它展示了以下特性: https://kb.isc.org/article/AA-01000/0/A-Quick-Introduction-to-Response-Rate-Limiting.html

    推荐文章