CentOS系统下如何关闭被默认DNS服务占用的53端口?

在 CentOS 系统管理中,关闭不必要的端口是提升服务器安全性的重要步骤,53 端口是 DNS(域名系统)服务的专用端口,通常由 BIND (named) 或 systemd-resolved 等服务占用,如果您的服务器不提供 DNS 服务,关闭此端口可以有效减少潜在的攻击面,以下将详细介绍如何在 CentOS 中安全、彻底地关闭 53 端口。

CentOS系统下如何关闭被默认DNS服务占用的53端口?

第一步:诊断,找出占用端口的服务

在采取任何行动之前,首先需要确定是哪个进程正在监听 53 端口,我们可以使用 ssnetstat 命令来查看,现代 CentOS 系统推荐使用 ss 命令,因为它比 netstat 更高效。

打开终端,执行以下命令:

sudo ss -tulnp | grep :53

此命令的含义如下:

  • -t:显示 TCP 端口
  • -u:显示 UDP 端口
  • -l:显示处于监听状态的端口
  • -n:以数字形式显示端口号和地址,不进行解析
  • -p:显示监听端口的进程名称和 PID

命令的输出可能如下所示:

UDP   UNCONN 0      0      127.0.0.53:53       0.0.0.0:*    users:(("systemd-resolve",pid=540,fd=12))
TCP   LISTEN 0      4096   127.0.0.53:53       0.0.0.0:*    users:(("systemd-resolve",pid=540,fd=13))

从输出中,我们可以清晰地看到是 systemd-resolve 进程(即 systemd-resolved 服务)占用了 53 端口,在另一些情况下,您可能会看到 named 进程,这代表 BIND DNS 服务器。

第二步:关闭并禁用相关服务

根据上一步的诊断结果,我们需要停止并禁用相应的服务,以确保它在系统重启后不会自动启动。

关闭 systemd-resolved 服务

这是在现代 CentOS 版本中最常见的情况,执行以下命令:

CentOS系统下如何关闭被默认DNS服务占用的53端口?

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

重要提示systemd-resolved 服务管理着系统的 DNS 解析,停止它后,系统可能会失去域名解析能力,您需要手动配置 /etc/resolv.conf 文件,以指向一个可用的 DNS 服务器,例如公共 DNS。

  1. 备份原文件(它可能是一个指向 systemd-resolved 的软链接):
    sudo mv /etc/resolv.conf /etc/resolv.conf.bak
  2. 创建新的 /etc/resolv.conf 文件:
    sudo nano /etc/resolv.conf
  3. 在文件中添加以下内容(以使用谷歌和 Cloudflare 的公共 DNS 为例):
    nameserver 8.8.8.8
    nameserver 1.1.1.1
  4. 保存并退出,现在您的系统将使用这些公共 DNS 服务器进行解析。

关闭 BIND (named) 服务

如果您看到的是 named 进程,说明您安装了 BIND DNS 服务器,关闭它的命令如下:

sudo systemctl stop named
sudo systemctl disable named

为了方便查阅,以下是 systemctl 服务管理命令的小编总结:

操作 命令 说明
停止服务 sudo systemctl stop <service_name> 立即终止正在运行的服务
禁用服务 sudo systemctl disable <service_name> 阻止服务在系统启动时自动运行
启动服务 sudo systemctl start <service_name> 手动启动一个已停止的服务
启用服务 sudo systemctl enable <service_name> 允许服务在系统启动时自动运行

第三步:配置防火墙(可选但推荐)

即使服务已经停止,作为防御深化的最佳实践,也应确保防火墙规则中没有明确允许 53 端口的流量,CentOS 默认使用 firewalld

  1. 检查当前防火墙允许的服务:

    sudo firewall-cmd --list-services

    如果输出中包含 dns,说明防火墙允许 DNS 服务通过。

  2. 永久移除 DNS 服务规则:

    CentOS系统下如何关闭被默认DNS服务占用的53端口?

    sudo firewall-cmd --permanent --remove-service=dns

    --permanent 参数表示该规则在防火墙重启后依然生效。

  3. 重新加载防火墙配置:

    sudo firewall-cmd --reload

第四步:验证

完成以上所有步骤后,再次运行诊断命令,确认 53 端口已不再被任何进程监听。

sudo ss -tulnp | grep :53

如果此命令没有任何输出,恭喜您,您已成功关闭了 CentOS 上的 53 端口。


相关问答 (FAQs)

为什么我已经停止了服务,但 53 端口仍然显示为开放状态?
解答: 这种情况通常由以下几个原因造成:

  1. 服务未完全停止:进程可能仍在后台运行,可以尝试使用 sudo pkill -f <service_name> 强制结束相关进程。
  2. 存在其他 DNS 服务:除了 namedsystemd-resolved,系统中可能还运行着 dnsmasq 或其他自定义的 DNS 程序,请再次使用 ssnetstat 命令仔细检查输出中的进程名。
  3. 缓存问题:极少数情况下,网络状态缓存可能导致显示延迟,可以稍等片刻后再次检查。

关闭 53 端口有什么潜在风险或影响?
解答: 关闭 53 端口的主要影响与 DNS 功能直接相关:

  1. 本机无法解析域名:如果您关闭的是 systemd-resolved 且未正确配置 /etc/resolv.conf,服务器本身将无法将域名(如 www.google.com)解析为 IP 地址,导致几乎所有需要联网的操作(如 yum update, curl 等)失败。
  2. 对外提供 DNS 服务中断:如果您的服务器的角色是 DNS 服务器,为其他客户端或网络设备提供域名解析服务,那么关闭该端口将导致所有依赖它的下游设备解析失败,在进行操作前,请务必确认该服务确实未被使用。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-23 12:41
下一篇 2024-12-07 03:50

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信