rpcbind 该关就关
rpcbind 为 NFS 与 NIS 提供端口映射服务,监听 111 端口。如果这台机器根本不需要 NFS,最彻底的做法是直接关闭并禁用它;确实需要时,也要限制访问来源,避免 RPC 端口对整个网络可探测。NFSv4 相比 v3 简化了很多,不少场景只需要保留 2049,可以从根上减少对 rpcbind 的依赖。
基本信息
| 适用平台 | Linux |
|---|---|
| 相关端口 | 111 rpcbind、2049 NFS、rpc.statd 辅助端口 |
| 风险等级 | 中 |
| 基线要求 | 无 NFS 需求时关闭 rpcbind |
| 相关服务 | rpcbind.socket、rpcbind、nfs-server |
典型使用场景
- 服务器加固时清理不需要的 RPC 服务
- 排查 111 端口的暴露面
- NFS 服务器的端口最小化开放
- 评估从 NFSv3 迁移到 NFSv4
- 排查挂载点异常消失的原因
- 为 NFS 配置来源白名单
核查与关闭
核查与关闭
ss -tulnp | grep -E ':111 |rpcbind' # 确认 111 端口与所属进程
systemctl status rpcbind --no-pager 2>/dev/null | head -5 # 查看服务状态
sudo systemctl disable --now rpcbind.socket rpcbind # 不需要 NFS 时关闭并禁用
systemctl status nfs-server --no-pager 2>/dev/null | head -5 # 确认 NFS 服务是否也在运行保留 NFS 时限制来源
保留 NFS 时限制来源
sudo iptables -A INPUT -p tcp --dport 111 -s 10.0.0.0/8 -j ACCEPT # 只允许内网段访问 rpcbind
sudo iptables -A INPUT -p tcp --dport 111 -j DROP # 其余来源全部丢弃
sudo iptables -A INPUT -p tcp --dport 2049 -s 10.0.0.0/8 -j ACCEPT # NFSv4 主要使用 2049
sudo iptables -A INPUT -p tcp --dport 2049 -j DROP复核必查项
| 检查项 | 含义 | 注意点 |
|---|---|---|
| 111 端口 | rpcbind 端口映射服务 | 无 NFS 需求时应关闭 |
| 2049 端口 | NFS 服务端口 | NFSv4 通常只需这一个 |
| rpc.statd | NFSv3 的状态服务 | 使用动态端口,需固定或改用 v4 |
| 挂载依赖 | autofs 与 fstab 中的挂载 | 关闭前必须确认 |
| 服务启动方式 | socket 或 service 单元 | 两者都要处理 |
NFSv4 可以只保留 2049:评估能否全量迁移到 v4,从根上砍掉对 rpcbind 的依赖。
NFSv3 的辅助端口是动态的:只封 111 不能完全挡住,需要给 rpc.statd 配置固定端口,或者升级到 v4。
关闭 rpcbind 之前务必确认没有 autofs 或挂载依赖:服务停掉之后业务盘符会直接消失。
如果暂时无法关闭,最低限度也要把它限制在运维网段:rpcbind 本身没有任何认证,只要来源可达,任何人都能查出本机注册的 RPC 服务与端口,等于把内部服务清单公开出去。
容器镜像里也可能带着 rpcbind:宿主机清理干净不代表镜像干净,基础镜像的组件清单要一并核对。