我们在防火墙后面有一个仅限 SMTP 的邮件服务器,该服务器将有一个公共的 A 邮件记录。. 访问此邮件服务器的唯一方法是从同一防火墙后面的另一台服务器。我们不运行我们自己的私有 DNS 服务器。
将私有 IP 地址用作公共 DNS 服务器中的 A 记录是个好主意 - 还是最好将这些服务器记录保存在每个服务器的本地主机文件中?
我们在防火墙后面有一个仅限 SMTP 的邮件服务器,该服务器将有一个公共的 A 邮件记录。. 访问此邮件服务器的唯一方法是从同一防火墙后面的另一台服务器。我们不运行我们自己的私有 DNS 服务器。
将私有 IP 地址用作公共 DNS 服务器中的 A 记录是个好主意 - 还是最好将这些服务器记录保存在每个服务器的本地主机文件中?
有些人会说,任何公共 DNS 记录都不应该公开私有 IP 地址……他们的想法是,您正在为潜在的攻击者提供一些信息,这些信息可能需要利用私有系统。
就个人而言,我认为混淆是一种糟糕的安全形式,尤其是当我们谈论 IP 地址时,因为通常它们很容易被猜到,所以我不认为这是一种现实的安全妥协。
这里更大的考虑是确保您的公共用户不会将此 DNS 记录作为托管应用程序的正常公共服务的一部分。即:外部 DNS 查找以某种方式开始解析到他们无法到达的地址。
除此之外,我认为将私有地址 A 记录放入公共空间是一个问题的根本原因……尤其是当您没有备用 DNS 服务器来托管它们时。
如果您决定将此记录放入公共 DNS 空间,您可能会考虑在同一台服务器上创建一个单独的区域来保存所有“私人”记录。这将更清楚地表明它们是私有的....但是对于一个 A 记录,我可能不会打扰。
不久前,我在 NANOG 列表中就这个话题进行了长时间的讨论。虽然我一直认为这是一个坏主意,但事实证明这在实践中并不是一个坏主意。困难主要来自 rDNS 查找(对于私有地址在外部世界中不起作用),当您通过 VPN 或类似方式提供对地址的访问时,确保 VPN 客户端受到适当保护非常重要VPN关闭时“泄漏”流量。
我说去吧。如果攻击者能够通过将名称解析为内部地址而获得任何有意义的东西,那么您就会遇到更大的安全问题。
一般来说,将 RFC1918 地址引入公共 DNS 会在未来的某个时候引起混淆,如果不是真正的问题的话。使用您区域的 IP、主机记录或私有 DNS 视图来使用防火墙后面的 RFC1918 地址,但不要将它们包含在公共视图中。
为了根据其他提交的回复澄清我的回复,我认为将 RFC1918 地址引入公共 DNS 是失礼,而不是安全问题。如果有人打电话给我解决问题,而我在他们的 DNS 中偶然发现了 RFC1918 地址,我会开始非常缓慢地说话,并询问他们最近是否重新启动。也许这对我来说是势利的,我不知道。但就像我说的那样,这不是必须做的事情,并且在某些时候可能会导致混乱和误解(人为,而不是计算机)。为什么要冒险?
尽管可能性很小,但我认为您可能正在为某些 MITM 攻击做好准备。
我担心的是这个。假设您的一个用户使用配置为指向该邮件服务器的邮件客户端将他们的笔记本电脑带到其他网络。如果其他网络也恰好使用相同的 RFC1918,会发生什么情况。该笔记本电脑可能会尝试登录到 smtp 服务器并将用户的凭据提供给不应该拥有它的服务器。尤其如此,因为您说 SMTP 并且没有提到您需要 SSL。
您的两个选项是 /etc/hosts 并在您的公共区域中放置一个私有 IP 地址。我推荐前者。如果这代表大量主机,您应该考虑在内部运行自己的解析器,这并不难。
不,不要将您的私有 IP 地址放在公共 DNS 中。
首先,它会泄露信息,尽管这是一个相对较小的问题。
如果您的 MX 记录指向该特定主机条目,则更严重的问题是,任何尝试向其发送邮件的人充其量只能获得邮件传递超时。
根据发件人的邮件软件,他们可能会被退回。
更糟糕的是,如果您使用的是 RFC1918 地址空间(您应该在您的网络内部)并且发件人也是,那么他们很有可能会尝试将邮件传递到他们自己的网络。
例如:
是的,这是一个损坏的配置,但我已经看到了这种情况(甚至更糟)。
不,这不是 DNS 的错,它只是按照它的指示行事。
它可能存在一些微妙的问题。一种是 DNS Rebind 攻击的常见解决方案会过滤从公共 DNS 服务器解析的本地 DNS 条目。所以你要么打开自己重新绑定攻击,要么本地地址不起作用,或者需要更复杂的配置(如果你的软件/路由器甚至允许的话)。
如果私有是指 10.0.0.0/8、192.168.0.0/16 或 172.16.0.0/12,则不要。大多数互联网路由器都认清了它的本质——一个永远不能以直接方式路由到公共互联网的私有地址,这有助于 NAT 的普及。任何试图联系您的公共 DNS 服务器的人都会从 DNS 中检索私有 IP 地址,只是将数据包发送到……无处可去。当他们的连接尝试通过互联网到达您的私人地址时,沿途的一些(配置合理的)路由器只会活着吃掉数据包。
如果您想从“外部”获取电子邮件到“内部”,在某些时候,数据包必须穿过您的防火墙。我建议设置一个 DMZ 地址来处理这个问题 - 一个由您现有的任何路由器/防火墙严格控制的单个公共 IP 地址。您描述的现有设置听起来确实如此。
编辑:澄清意图......(见下面的评论)。如果这没有意义,我会投票删除我自己的帖子。
最好将其保存在 hosts 文件中。如果无论如何都应该只有一台机器连接到它,那么将它放入公共 DNS 有什么好处?
我来到这里是因为我正在寻找类似的信息,并且很惊讶许多人说泄露你的私人 IP 地址是可以的。我想就被黑客入侵而言,如果您在安全的网络上,这并没有太大的区别。然而,DigitalOcean 在完全相同的电缆上拥有所有本地网络流量,每个人都可以真正访问其他人的流量(可能可以通过中间人攻击来实现。)如果你只是想在同一个数据中心获得一台计算机,拥有那个信息无疑让您离破解我的流量更近了一步。(现在每个客户端都有自己的预留私有网络,就像 AWS 等其他云服务一样。)
话虽如此,使用您自己的 BIND9 服务,您可以轻松定义您的公共和私有 IP。这是使用该
view
功能完成的,其中包括一个条件。这允许您查询一个 DNS 并仅在您从自己的内部 IP 地址之一询问时获得有关内部 IP 的答案。该设置需要两个区域。选择使用
match-clients
. 以下是使用 BIND9 从二合一 DNS 服务器进行设置的示例:这是外部区域,我们可以看到 IP 不是私有的
至于内部区域,我们首先包括外部区域,它是如何工作的。即,如果您是内部计算机,则只能访问内部区域,因此您仍然需要外部区域定义,因此
$include
命令:最后,您必须确保您的所有计算机现在都使用该 DNS 及其从属服务器。假设是一个静态网络,这意味着编辑您的文件并在选项
/etc/network/interfaces
中使用您的 DNS IP 。nameserver
像这样的东西:现在你应该准备好了。