核心是先识别再关停:用ss/netstat查监听端口及服务,重点停用rpcbind、vsftpd、telnetd、cups等高危服务,再通过ufw/firewalld或windows防火墙封堵445、135、23等端口,并验证本地无输出、外部连接拒绝。

关闭不必要的危险系统服务与端口,核心就两点:先看清哪些在运行,再精准关停或拦截。不盲目关、不漏掉高危项,才能真正缩小攻击面。
一、快速识别正在监听的端口和服务
端口是攻击入口,服务是后台支撑——必须先摸清现状。
- Linux 系统:运行 ss -tuln 或 netstat -tuln,重点关注 Local Address 列后的端口号和 State 为 LISTEN 的行;加 -p 参数(需 root)可看到对应进程名和 PID。
- Windows 系统:命令提示符中执行 netstat -ano,对照 PID 查任务管理器或用 tasklist | findstr "PID号" 定位服务名称。
- 进一步验证是否对外暴露:从外部用 nmap -sT 目标IP 扫描,确认真实开放情况,避免仅看本地监听而忽略防火墙放行规则。
二、重点关停高危服务(按系统区分)
以下服务在服务器环境中极少必要,且历史漏洞多、协议不安全,应优先处理。
-
Linux 常见可禁服务:
• rpcbind(端口 111):暴露全部 RPC 服务拓扑,非 NFS 环境直接停用:
systemctl stop rpcbind && systemctl disable rpcbind
• vsftpd / pure-ftpd(端口 21):明文传输,改用 SFTP(基于 SSH)后即可禁用;
• telnetd(端口 23):绝对禁用,无加密,替代方案只有 SSH;
• cups、avahi-daemon:打印与零配置网络服务,服务器场景无业务需求,直接禁用。 -
Windows 常见可禁服务:
• Server(影响 445 端口):若无需文件/打印机共享,services.msc → Server → 属性 → 启动类型设为“禁用” → 停止;
• Workstation(配合 Server 使用):禁用 Server 后建议一并禁用;
• Remote Registry、SSDP Discovery、Print Spooler:非域控或打印服务器场景,全部设为禁用;
• Telnet 服务:PowerShell 中执行 Set-Service Telnet -StartupType Disabled; Stop-Service Telnet。
三、封堵高危端口(不止于停服务)
仅停服务可能不够——有些端口由内核模块或第三方程序监听,或服务重启后自动恢复。必须结合防火墙做双重保障。
-
Linux(推荐 ufw 或 firewalld):
• 关闭特定端口(如禁用所有对 445 的访问):
ufw deny 445/tcp && ufw deny 445/udp
• 或更严格地,默认拒绝入站,只放行业务端口:
ufw default deny incoming && ufw allow 22/tcp && ufw enable -
Windows(用高级安全防火墙):
• 打开 wf.msc → 左侧“入站规则” → 右侧“新建规则” → 类型选“端口” → 协议和端口填 TCP 445 → 操作选“阻止连接” → 配置作用域(建议全选)→ 完成;
• 同样方法处理 135、137-139、3389(若非必需远程桌面);
• 对必须保留的 RDP(3389),务必启用“仅允许网络级身份验证(NLA)”,并在规则中限制源 IP 范围。
四、验证是否真正关闭
操作完不验证等于没做。别跳过这步。
- 本地检查:
Linux 执行 ss -tuln | grep ':445\|:111\|:23',无输出即成功;
Windows 执行 netstat -ano | findstr ":445",同样应无结果。 - 外部验证:
换一台外部机器,用 telnet 服务器IP 445 或 nc -zv 服务器IP 135 测试连通性;
若显示 Connection refused 或超时,说明端口已不可达。 - 注意:某些端口(如 135)可能被系统组件动态占用,即使服务已禁用,仍需靠防火墙最终拦截。











