我运行的服务器除其他外还使用 tinydns 作为 DNS,使用 axfrdns 处理来自我们的辅助 DNS(另一个系统)的传输请求。我知道 tinydns 使用 UDP 上的端口 53,而 axfrdns 使用 TCP 上的端口 53。
我已将 axfrdns 配置为仅允许来自我同意的辅助主机的连接。我运行 logcheck 来监控我的日志,每天都会看到来自看似随机的主机的端口 53 (TCP) 上的虚假连接。它们通常来自 ADSL 连接。
我的问题是:这些请求是无辜的还是存在安全风险?我很乐意使用 iptables 来阻止屡教不改的用户,但不想阻止我托管的网站之一的无辜用户。
谢谢,达伦。
答案1
我假设您将服务器用作域名的权威 DNS 服务器。如果是这样,则任何需要解析您的服务器有权解析的名称的客户端都只需要使用 UDP。TCP 将用于区域传输。
我还假设您不希望全世界都能够进行区域传输。虽然区域传输本身并不构成安全风险,但通常只允许次要/备份 DNS 服务器进行区域传输。大多数 DNS 软件还具有 ACL 来控制允许哪个服务器进行区域传输,因此您还有第二种限制方法。但由于我认为安全性意味着只允许需要的内容,因此我建议您阻止不需要从您那里进行区域传输的主机在端口 53 上的 TCP。
附注:来自 TCP 端口 53 上的随机 adsl 主机的 TCP 连接具有恶意意图。这是因为没有合法客户端需要从您那里进行区域传输。他们可能试图访问与您的网络相关的机密信息,或利用某些 DNS 软件的漏洞。
虽然这并不是什么需要担心的事情,但是你应该意识到这一点。
答案2
TCP 是不是仅用于区域传输。
如果您的 DNS 服务器发回截断的 (TC=1) UDP 响应,则 DNS 客户端会使用 TCP 作为默认回退。如果您在单个数据包中提供超过 512 字节的数据,就会发生这种情况。
如果你正在运行 DNS 服务器,那么应该接受来自 DNS 客户端的 TCP 连接,这样做不存在任何固有的安全风险。DNS 服务器存在极小的 DoS 攻击风险,但任何面向公众的服务都是如此。
看草案-ietf-dnsext-dns-tcp-要求它将会在下个月以 RFC 的形式发布。
看RFC 5966更多细节。
Ob 免责声明 - 我编写了该 RFC。
答案3
唯一应该使用你的主机作为 DNS 服务器的是
- 本地主机
- 您将该主机设置为 DNS 服务器的网络上
阻止“其他一切”的最简单方法是禁用服务监听该地址。如果您自己的设备在“您的网络”之外,请使用防火墙规则(iptables
或其他规则)仅接受来自外部网络地址的连接。如果它们没有修复,您可能需要 VPN 或其他安全隧道将外部主机带入“您的网络内部”。
请记住,针对内部名称服务器的任意 DNS 查询可能会将您的整个网络映射到外部方,并且要么提供攻击媒介,要么泄露您不希望其他人知道的信息。“随机 ADSL 连接”很容易成为僵尸网络机器,用于策划针对您的恶意行为。
答案4
向名称服务器开放传入 TCP 会带来许多安全风险 - 任何不承认这一点的人都是不理智的。只要看看根入侵历史 - 大多数都是通过结合使用 TCP 和 UDP 来完成的。旧的 MUST 和 SHOULD RFC 是由了解安全性的人制定的。如果您的 DNS 区域不使用 TC=1 位(或超过 512 字节) - 不要启用传入 TCP,让那些白痴将来这样做吧。