服务器测评网
我们一直在努力

Linux系统如何关闭445端口,关闭445端口有什么用

在 Linux 服务器运维与安全加固中,关闭 445 端口是防御勒索病毒(如 WannaCry)、SMB 漏洞利用以及未授权文件访问的最关键手段,对于绝大多数非文件共享服务的业务场景,必须通过防火墙策略阻断或直接停止相关服务来彻底封禁该端口。

Linux系统如何关闭445端口,关闭445端口有什么用

在 Linux 系统中,445 端口通常与 Server Message Block (SMB) 协议相关联,主要用于 Windows 环境下的文件和打印机共享,在 Linux 上,这一功能通常由 Samba 服务提供,虽然 Samba 为跨平台文件共享提供了便利,但开放的 445 端口也是黑客眼中的“黄金后门”,一旦该端口暴露在公网,攻击者可利用永恒之蓝等高危漏洞直接获取系统最高权限,或通过暴力破解窃取敏感数据。除非业务有极其严格的跨平台文件共享需求且已部署高级安全防护,否则必须无条件关闭 445 端口。

风险评估:为什么必须关闭 445 端口

在执行操作前,必须明确该端口开放带来的潜在风险,这有助于理解安全加固的必要性。

  1. 勒索病毒的首选攻击向量:历史上著名的 WannaCry 勒索病毒正是利用了 Windows SMB 协议的漏洞(MS17-010)通过 445 端口进行传播,虽然 Linux 对该漏洞的免疫机制与 Windows 不同,但运行 Samba 服务的 Linux 同样存在远程代码执行漏洞(如 2017 年的 Samba “SambaCry”)。
  2. 暴力破解与信息泄露:445 端口承载着文件共享服务,如果配置不当,攻击者无需复杂的漏洞利用,仅需通过简单的口令爆破或匿名访问,即可窃取服务器上的企业核心数据、源代码或客户信息。
  3. 内网横向移动的跳板:即使服务器位于内网,一旦边界防护被突破,开放的 445 端口极易成为攻击者进行横向渗透、控制更多内网主权的通道。

精准诊断:检测 445 端口状态

在关闭端口之前,首先需要确认当前系统中 445 端口是否处于监听状态,以及是哪个进程占用了该端口。

使用以下命令进行深度检测:

使用 netstatss 命令查看端口监听情况

netstat -antlp | grep :445
# 或者使用更现代的 ss 命令
ss -antlp | grep :445

如果输出结果中包含 LISTEN 状态,且对应的进程名称为 smbdnmbd,则说明 Samba 服务正在运行且 445 端口已开放。

确认服务安装情况

rpm -qa | grep samba
# 或者对于 Debian/Ubuntu 系统
dpkg -l | grep samba

这一步是为了确认系统是否安装了 Samba 软件包,以便后续彻底卸载或禁用。

Linux系统如何关闭445端口,关闭445端口有什么用

专业解决方案:关闭 445 端口的两种层级

为了确保安全加固的有效性,建议采取“服务层停止”与“网络层阻断”双重防护的策略。

停止并禁用 Samba 服务(治本)

这是最彻底的方法,直接从系统服务层面终止 445 端口的监听程序。

临时停止服务
执行以下命令立即停止 Samba 相关服务:

systemctl stop smb
systemctl stop nmb

注:smb 服务负责处理 445 端口的 SMB 请求,nmb 服务负责 NetBIOS 名称解析(通常使用 137/138/139 端口),建议一并停止。

永久禁用服务(防止开机自启)
为了防止服务器重启后服务自动恢复,必须执行:

systemctl disable smb
systemctl disable nmb

彻底卸载 Samba(可选)
如果业务确认完全不需要文件共享功能,建议直接卸载软件包,以消除潜在的风险组件:

# CentOS/RHEL 系统
yum remove samba samba-common -y
# Ubuntu/Debian 系统
apt-get remove samba samba-common -y

配置防火墙策略(治标+边界防护)

即使停止了服务,为了应对未来可能误安装或启动服务的情况,配置防火墙规则是必不可少的防线,这里分别介绍 firewalld(CentOS 7+ 默认)和 iptables 的配置方法。

使用 firewalld 封禁 445 端口

Linux系统如何关闭445端口,关闭445端口有什么用

# 查询当前活跃的区域
firewall-cmd --get-active-zones
# 永久移除 445 端口的放行规则(如果之前添加过)
firewall-cmd --permanent --remove-port=445/tcp
# 显式拒绝 445 端口流量(推荐,即使服务开启也无法被访问)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="445" protocol="tcp" reject'
# 重载防火墙使规则生效
firewall-cmd --reload

使用 iptables 封禁 445 端口
对于使用传统 iptables 的服务器,添加拒绝规则:

# 拒绝入站 TCP 445 端口流量
iptables -A INPUT -p tcp --dport 445 -j DROP
# 保存规则(根据系统不同,命令可能不同,如 service iptables save)

验证与运维建议

效果验证
操作完成后,再次使用 ss -antlp | grep :445 确认无输出,建议从服务器外部使用 nmaptelnet 进行扫描验证:

nmap -p 445 <服务器IP>

如果显示 State: filteredclosed,说明阻断成功。

独立见解:最小化原则与业务妥协
在网络安全领域,没有绝对的安全,只有权衡,如果业务必须使用 Samba 服务,请务必遵循以下专业建议,而不是直接开放 445 端口:

  • IP 访问控制列表 (ACL):在 smb.conf 配置文件中,利用 hosts allow 参数,仅允许特定的内网 IP 或管理主机访问,拒绝所有其他连接。
  • VPN 隧道传输:绝对不要将 445 端口直接暴露在公网,应要求用户先通过 VPN 拨入内网,再访问 Samba 服务。
  • 版本升级与补丁:保持 Samba 版本最新,及时修补 CVE 漏洞。
  • 禁用 SMBv1:在 smb.conf 中设置 server min protocol = SMB2 或更高,彻底抛弃存在严重缺陷的 SMBv1 协议。

相关问答

Q1:关闭 Linux 的 445 端口会影响正常的 Web 服务(如 Nginx/Apache)或数据库服务吗?
A:不会。 445 端口专门用于 SMB 文件共享协议,Web 服务通常使用 80/443 端口,数据库如 MySQL 使用 3306 端口,Redis 使用 6379 端口,它们在协议层面完全独立,关闭 445 端口仅影响文件共享功能,对网站访问和数据库读写无任何干扰。

Q2:如何确认服务器遭受了针对 445 端口的扫描或攻击?
A:可以通过分析系统日志进行确认。 检查 /var/log/secure(RedHat/CentOS 系)或 /var/log/auth.log(Debian/Ubuntu 系)中是否存在大量的 Samba 认证失败记录,使用 last 命令查看异常登录记录,或通过 tcpdump -i eth0 port 445 抓包分析,若发现大量来自陌生 IP 的 SYN 包请求,即表明正在被扫描或攻击。


互动话题:
您的服务器目前是否开启了不必要的端口?在进行安全加固时,您是否遇到过因关闭端口导致业务中断的“惊魂时刻”?欢迎在评论区分享您的运维经验与避坑指南。

赞(0)
未经允许不得转载:好主机测评网 » Linux系统如何关闭445端口,关闭445端口有什么用