直接卸载 inetd 或 xinetd 是精简系统的最彻底方式,可消除 rlogin、telnet 等明文服务及其端口监听,并需验证进程、端口、配置及残留二进制文件。

直接卸载 inetd 或 xinetd 是精简系统最彻底的方式之一,尤其适用于不需要传统“按需启动”类服务(如 rlogin、rsh、telnet、chargen 等)的现代 Linux 环境。这类守护进程本身不直接提供业务功能,而是作为“服务分发器”,一旦被移除,所有由它托管的明文协议服务将无法触发,对应端口(如 513、514、23、7、13)自然不再监听。
确认 inetd/xinetd 是否正在运行并托管服务
先别急着删,得看它是否真在干活:
- 查进程状态:
systemctl is-active inetd xinetd,任一返回active表示已启用 - 查监听端口:
ss -tuln | grep -E ':(23|7|13|513|514)',若输出非空,说明有服务正通过它们响应连接 - 查配置文件:检查
/etc/inetd.conf(inetd)或/etc/xinetd.d/下所有.conf文件(xinetd),重点关注disable = no或未注释的service块 - 查软件包安装:
dpkg -l | grep -i 'inetd\|xinetd'(Debian/Ubuntu)或rpm -qa | grep -i 'inetd\|xinetd'(RHEL/CentOS/Fedora)
根据发行版选择对应卸载方式
卸载必须带 --purge(Debian系)或 --nodeps --force(RHEL系,慎用),否则残留配置可能被其他服务意外调用:
-
Ubuntu/Debian:执行
sudo apt-get remove --purge inetd xinetd;若只装了其中一个,可单独卸载,但建议一并清除 -
RHEL/CentOS/Fedora:执行
sudo yum remove inetd xinetd(旧版)或sudo dnf remove inetd xinetd(新版);注意某些最小化安装可能默认未装,此时命令无输出即正常 - 卸载后务必验证:
systemctl list-unit-files | grep -i 'inetd\|xinetd'应无启用项;ps aux | grep -i 'inetd\|xinetd'应无进程
清理残留监听与依赖服务
卸载只是第一步,还需确保没有“孤儿端口”或替代服务悄悄补位:
- 重启后再次运行
ss -tuln,确认 23、7、13、513、514 等端口不再出现在 LISTEN 列表中 - 检查是否有独立运行的
telnetd、in.rlogind等二进制程序残留:which telnetd in.rlogind in.rshd;若有,手动rm或用包管理器清理对应软件包(如rsh-server、openbsd-inetd) - 若系统曾用
tcpwrappers(/etc/hosts.allow//etc/hosts.deny)控制访问,可一并清空相关规则,避免误判干扰 - 防火墙无需额外封端口——服务已不存在,封只是冗余操作;但若为合规审计需要,可用
sudo ufw deny 23,7,13,513,514补一层策略
替代方案:禁用比卸载更轻量?不推荐
仅停用 xinetd 服务(systemctl disable --now xinetd)或注释配置,看似安全,实则隐患仍在:
- 配置文件仍存在,未来误启服务或他人修改后立即生效
- 软件包未卸载,系统更新时可能自动重装或触发依赖修复
- 部分发行版(如某些 CentOS 镜像)会将
xinetd作为rsyslog或rpcbind的间接依赖,不清除易引发冲突 - 真正精简的目标是“无代码、无配置、无监听”,卸载是唯一达成该目标的可靠路径











