Linux最小化安装后需精准关停冗余服务:先用ss和lsof识别监听0.0.0.0或[::]的端口,重点停用avahi、cups、rpcbind、postfix等高风险服务并disable,重启后验证端口关闭及远程不可达,防火墙仅作补充防护。

Linux最小化安装后,系统虽已精简,但默认仍可能运行若干监听网络端口的服务——它们多数与服务器用途无关,却会暴露攻击面、消耗资源。关闭冗余端口和服务的关键,不是盲目删减,而是“先看清、再关停、最后验证”:停服务是根本,封端口是补漏,不查进程就动防火墙,等于掩耳盗铃。
一、先摸清哪些端口正在对外监听
别只信“最小化”三个字,实际运行状态得自己确认。重点看绑定在 0.0.0.0 或 [::](IPv6通配)上的端口,这些才真正对外暴露:
- 执行 sudo ss -tuln,快速列出所有监听中的 TCP/UDP 端口
- 配合 sudo lsof -i :端口号(如
lsof -i :5353)精准定位占用进程 - 对照 /etc/services 查端口常见用途(例如
5353/tcp是 avahi 的 mDNS 端口) - 特别注意:22(SSH)、25(postfix)、631(cups)、111(rpcbind)、5353(avahi)这些是服务器环境最常误开的非必要端口
二、停用并禁用高频冗余服务
以下服务在纯命令行服务器场景中几乎无用,且历史上存在高危漏洞。确认未使用相关功能后,可安全关停:
-
avahi-daemon:局域网自动发现服务,监听 5353/udp,直接停+禁启:
sudo systemctl stop avahi-daemon avahi-daemon.socketsudo systemctl disable avahi-daemon avahi-daemon.socket -
cups:打印服务,监听 631/tcp,服务器无需打印:
sudo systemctl stop cups cups-browsedsudo systemctl disable cups cups-browsed -
rpcbind:NFS 依赖项,若未部署 NFS,务必关闭(端口 111):
sudo systemctl stop rpcbind rpcbind.socketsudo systemctl disable rpcbind rpcbind.socket -
postfix:邮件传输代理,除非你发系统告警邮件,否则关掉(端口 25):
sudo systemctl stop postfixsudo systemctl disable postfix
三、验证端口是否真正关闭
重启服务或系统后,必须验证效果,不能只看命令有没有报错:
- 再次运行 sudo ss -tuln,确认目标端口(如 5353、631)不再出现在输出中
- 本地测试连通性:
nc -zv 127.0.0.1 5353应返回Connection refused - 从另一台机器远程扫描:
nc -zv 你的服务器IP 631,应超时或拒绝,而非 open - 检查日志有无残留启动记录:
journalctl -u avahi-daemon --since "1 hour ago"
四、防火墙仅作第二道防线,不替代关停服务
firewalld 或 ufw 封端口只是丢包,服务仍在后台运行、占内存、打日志、可能泄露 banner。仅在以下情况用防火墙控制:
- 临时应急:发现异常连接正打某个端口,而服务不能立刻下线
- 限制访问来源:比如只允许内网访问数据库端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.1.0/24" port port="5432" protocol="tcp" accept' - 云服务器必须同步检查安全组——防火墙开了,云平台没放行,照样不通;反之亦然











