哪些服务属于历史遗留
有一批服务在设计时就没有考虑加密与认证,此后被更安全的方案取代,但默认安装或旧镜像里仍可能开着。典型的包括明文远程登录、无认证的文件传输、老式目录服务与超级守护进程。它们的特点是:一旦运行,就等于在网络上提供一个不需要凭据或凭据可被旁听的入口,服务器上非必要一律关闭或直接卸载。
基本信息
| 加固项 | 危险与冗余服务清理 |
|---|---|
| 适用平台 | Linux(RHEL/CentOS/Debian/Ubuntu) |
| 风险等级 | 高 |
| 基线 | 危险服务不存在或未运行、未自启 |
| 处置顺序 | 先停用,再禁用自启,确认无影响后卸载 |
典型使用场景
- 交付核查:确认设备上未运行任何明文或未知证服务
- 老系统治理:长期未升级的机器常残留多类历史服务
- 等保最小服务:条款要求关闭非必要服务与端口
- 入侵排查:攻击者可能自行启动简单服务做隧道或横向
- 镜像与模板收敛:把清理结果固化进标准镜像,避免新机重复出现
扫描与处置
扫描与处置
systemctl list-units --all --type=service | grep -Ei 'telnet|rsh|rlogin|rexec|tftp|rpcbind|nfs|ypserv|xinetd|vsftpd'
ss -tulnp | grep -E ':(21|23|69|111|2049|512|513|514)([^0-9]|$)'
systemctl disable --now telnet.socket rsh.socket rlogin.socket tftp.socket 2>/dev/null
rpm -qa | grep -Ei 'telnet|rsh|tftp' # 或 dpkg -l | grep -Ei 'telnet|rsh|tftp'
grep -rE 'disable' /etc/xinetd.d/ 2>/dev/null # xinetd 托管服务需逐文件确认服务与风险对照
| 服务 | 风险点 | 处置建议 |
|---|---|---|
| telnet | 全程明文,凭据可被旁听 | 用 SSH 替代,服务停用并禁用自启 |
| rsh 系列 | 基于主机信任关系,几乎无认证 | 一律停用,确认为历史遗留后卸载 |
| tftp | 无认证的文件传输,常被用于加载配置与样本 | 仅在有明确业务需求时启用,并限制来源 |
| rpcbind | 为老式远程过程调用与 NFS 提供端口映射 | 无 NFS 需求时停用 |
| ypserv | 老式目录服务,认证机制弱 | 改用现代目录服务后停用 |
| xinetd | 超级守护进程,可托管多个老服务 | 确认托管清单后逐项收敛,最后停用本体 |
卸载前确认无业务依赖:工业控制软件、老备份系统与部分监控工具会依赖明文文件传输或老式远程执行机制。处置顺序建议是先停用并观察一个业务周期,确认无影响后再卸载,同时保留处置记录以便回溯。
只停止服务不取消自启是最常见的复查失败项:机器重启后服务会复活。由超级守护进程托管的服务要逐个查看其配置文件里的开关状态,只在服务管理器层面停用是不够的。
把清理结果固化下来
一次性清理多个主机后,剩下的价值在于让结果保持住:把服务清单与启停状态写进基线模板,纳入周期核查;新装机器从收敛后的镜像部署;按端口定期复查,出现新的监听端口立即核实来源。这样治理成本才从「每次都重新排查」变成「只在差异出现时处理」。