题 我什么时候打开DNS 53端口?


锁定应用程序服务器。服务器托管通过http提供的Web应用程序。还有一些其他端口也可以打开。

端口53对DNS开放。我为什么需要这个? 

额外:(不需要回答这个问题,但是......)这个命令会在Linux中使用iptables打开该端口

#  iptables -A INPUT -m tcp -p tcp --dport 53 -j ACCEPT

5
2018-02-21 01:12






答案:


端口53对DNS开放。我为什么需要这个?

您需要允许UDP 53响应服务器发送的DNS查询,因为UDP是无状态协议。如果您想要任何类型的出站连接,软件更新等,请不要阻止它。

请注意,对于使用DNS源端口随机化修补的大多数现代操作系统中的名称解析软件,查询的源端口(以及响应的目标端口)不一定是53;在这些情况下,它可能是安全的(但不必要,除非你有一个流氓DNS解析器监听)来阻止UDP端口53。

这个命令会在Linux中使用iptables保护该端口吗?

除非您的服务器实际上是DNS服务器,否则您不需要允许TCP 53入站。你的第二个命令了 -m udp -p tcp,这没有多大意义..错字?


8
2018-02-21 01:19



谢谢。 DNS托管在其他地方 - 例如Amazon Route53或Network Solutions或其他地方。这意味着即使使用子域和虚拟主机指令,我也可以保持INBOUND关闭? - csi
@ChristopherIckes否。您的服务器仍需要进行出站DNS查询 - 入站端口53必须允许UDP流量(对您的查询的响应)才能正常运行。 - Shane Madden♦
即使UDP是无状态协议,conntrack仍然可以维持UDP对话的状态。如果允许新的连接,你有一个 iptables -A INPUT -m conntrack --ctsate ESTABLISHED,RELATED -j ACCEPT 像大多数规则一样,UDP也将在此管理。当您发送UDP请求时,它将保持状态并允许在同一端口/ IP上进行回复。如果收到该数据包的回复,则“连接”将变为ASSURED并保持状态以进行更大的超时。 - Matt
@mindthemonkey感谢您提及 - 在规则上面对udp / 53的拒绝仍会阻止回复,所以我想特别反对这一点 - 但当然重要的是要注意这是打开udp / 53的首选替代方案明确。 - Shane Madden♦
相信出站DNS查询使用端口53是不正确的。 - venzen


如果仅使用本地网络,请使用本地名称服务器并且无法连接到Internet上的随机站点,则无需将端口53保持打开状态。但是,如果您确实想使用Internet,则需要能够将主机名转换为IP地址。为此你需要DNS。


3
2018-02-21 01:20





你什么时候开53口?当你托管DNS区域时我会假设。您是在内部运行DNS还是将其解压缩?如果你运行比你更好,如果你想让任何人获得记录,你最好打开53。正如你所说,你在其他地方托管了你的DNS,没有理由让这些端口保持打开,即使使用Vhosts等等。

就IPtables规则而言,我不确定你的意思是什么,但是这会为你打开端口。


2
2018-02-21 01:18



谢谢。 DNS托管在其他地方 - 例如Amazon Route53或Network Solutions或其他地方。这意味着即使使用子域和虚拟主机指令,我也可以保持关闭状态? - csi
哎呀。我的意思是“打开端口”而不是“保护端口”。 Editted - csi


DNS使用UDP端口53

我为什么需要这个?

如果要将服务器用作DNS服务器(例如,您托管自己的域)


1
2018-02-21 01:18





如果有问题的应用程序服务器不是DNS服务器,则不需要打开端口53。 “开放端口”表示该端口在网络中(或可能在互联网上)的客户端外部可见。与流行的看法相反,服务器或主机不需要打开端口53来进行传出的DNS查询 - 这不是TCP / IP模型的工作方式。您可以在主机上运行tcpdump,然后从另一个终端或浏览器发出DNS查找以确认:

'tcpdump -n -s 1500 -i eth0 udp port 53'

所以回答你的问题:你只能在为网络提供DNS服务的主机上打开端口53。

不是您的问题的一部分,但建议在任何和所有网络服务器主机上安装防火墙。这可以防止来自网络外部的攻击以及网络内的病毒/木马和“非常聪明”(但恶性)用户的攻击。防火墙还可以简化打开和关闭端口的任务,并根据需要设置访问策略,从而避免手动创建(并记住)复杂的需要 iptables规则。


1
2018-02-21 05:18



通过UDP进行DNS查找,您似乎混淆了TCP上的DNS查找(在少数情况下会发生,并且不应该用于大多数查询)。一些防火墙软件(包括iptables,如我在回答的评论中提到的那样)将跟踪虚假连接并允许流量作为已建立的连接,但不要搞错:UDP是无状态的,除非你的防火墙明智地允许响应对于最近的查询,您需要打开UDP端口53以获取数据包以响应您的查询。 - Shane Madden♦
我礼貌但完全不同意端口53对外部主机开放的要求,以便localhost解析DNS。我正在从端口53关闭的机器上写这条消息。 (localhost)防火墙上的TCP连接跟踪管理从端口1023上方的随机端口发出的DNS查询的真实性。 - venzen
need for port 53 to be open to external hosts  - 不阻止数据包并不意味着响应未经请求的流量或入站连接。 iptables中的显式块可能优先于已建立的流量,具体取决于规则顺序。 TCP connection tracking on the firewall  - 在大多数情况下,DNS查询是UDP流量,您的操作系统防火墙正在对假连接做出有根据的猜测 - 这取决于操作系统/防火墙。 random ports above port 1023  - DNS源端口随机化是一种防止缓存中毒的安全机制;它是否再次到位取决于操作系统。 - Shane Madden♦
看看伙计,你说的很多,但问题的答案仍然是你只需要在为网络提供DNS服务的主机上打开端口53。执行'tcpdump -n -s 1500 -i eth0 udp port 53'以确认客户端DNS请求从不使用localhost上的端口53 - venzen
同样,这是由于DNS源端口随机化。在不知道问题中引用的服务器的操作系统和补丁级别的情况下,您不能假设您的计算机的行为适用于他们的。你是绝对正确的,大多数现代系统不会发送53个源的DNS查询,因为它们已被修补为随机化 - 我将在我的答案中添加一个注释。 - Shane Madden♦