关闭高危端口的核心是停服务而非仅封流量:需定位进程、停止服务、禁用自启、验证关闭效果,并辅以防火墙兜底和残留监控。

关高危端口,核心不是“封流量”,而是“停服务”。只靠防火墙丢包,服务还在监听、占内存、回 banner,攻击面没真正缩小。重点是定位服务、停止运行、禁用自启、验证关闭效果。
先查清楚哪些端口在开、谁在用
别只看 netstat,用更准的组合命令:
- 查所有监听端口:sudo ss -tuln | grep -E ':21|:22|:23|:111|:6379|:27017|:25|:53'
- 查某端口归属进程:sudo lsof -i :6379(比 ss -tulpn 更可靠,尤其对非 root 进程)
- 确认是否对外暴露:nc -zv 0.0.0.0 6379(能连通说明 bind 了 0.0.0.0;连 127.0.0.1 通但 0.0.0.0 不通,说明已限制本地)
- 检查是否被启用:systemctl list-unit-files --state=enabled | grep -i "redis\|telnet\|rpcbind\|vsftpd"
按服务类型精准关停
不同服务关闭逻辑不同,不能一概 kill 或 firewall-cmd 封了事:
-
Telnet(23端口):属淘汰协议,直接卸载。Ubuntu/Debian 执行
sudo apt remove inetutils-telnetd;CentOS/RHEL 执行sudo yum remove telnet-server,再sudo systemctl disable telnet.socket -
Redis(6379)或 MongoDB(27017):改配置,不改服务名。Redis 编辑
/etc/redis/redis.conf,设bind 127.0.0.1并开启requirepass;MongoDB 编辑/etc/mongod.conf,在net:下加bindIp: 127.0.0.1,然后sudo systemctl restart mongod -
RPCbind(111端口):若不用 NFS,直接停用:
sudo systemctl stop rpcbind && sudo systemctl disable rpcbind;再检查/etc/exports是否为空,避免误启导出 -
FTP(21端口):停 vsftpd 或 proftpd 服务:
sudo systemctl stop vsftpd && sudo systemctl disable vsftpd;如用 xinetd 托管,改/etc/xinetd.d/vsftpd中disable = yes后重启 xinetd
防火墙只作兜底,不替代服务配置
ufw 或 firewalld 封端口是临时补漏,不是加固主干:
- Ubuntu 用 ufw:
sudo ufw deny 6379,再sudo ufw reload - CentOS/RHEL 用 firewalld:
sudo firewall-cmd --permanent --remove-port=27017/tcp && sudo firewall-cmd --reload -
注意:封完必须验证——
ss -tuln | grep :6379应无输出;nc -zv 公网IP 6379应超时或拒绝;本地curl http://localhost:6379也应失败(说明服务已停或绑定受限)
关完还要盯残留和反弹
有些服务会自动拉起,或有隐藏监听:
- 重启后检查:
sudo reboot后立刻跑一遍ss -tuln,确认端口未复活 - 查异常连接:
sudo ss -tunp | grep -E 'ESTAB|SYN-RECV',发现可疑外连及时溯源 - 云服务器额外检查:安全组规则(阿里云/AWS 控制台)、SELinux 状态(
sestatus)、iptables/nftables 是否存在重定向规则











