首页/安全/漏洞与攻击面速查/NFS 导出与权限配置风险
主机与服务风险面53 条

NFS 导出与权限配置风险

NFS 默认 2049(及 rpcbind 111),/etc/exports 控制导出范围;配置不当(对全网段导出、no_root_squash、读写放开)会造成任意挂载与提权风险。

漏洞与攻击面速查安全更新于 2026-10-13

NFS 导出配置的风险点

NFS 是类 Unix 系统间共享目录的常用方式,服务端默认监听 2049(通常还依赖 rpcbind 的 111),导出范围由 /etc/exports 控制。配置不当时风险很直接:对全网段导出、使用 no_root_squash、读写权限放开,任何可达主机都能挂载共享目录,客户端 root 还能在服务端保持 root 身份,形成提权路径。

基本信息

端口2049(NFS),111(rpcbind)
配置文件/etc/exports
关键选项rw/ro、sync、root_squash、no_subtree_check、sec
核查命令showmount -e 目标地址
主要风险任意挂载、越权读写、no_root_squash 提权

典型使用场景

  • 共享盘评估:确认哪些目录被导出、授权给哪些主机
  • 配置审计:逐条核对 /etc/exports 的授权范围与选项
  • 快照与备份:确认备份主机是否有必要使用读写权限
  • 容器与虚拟化:宿主向容器挂载 NFS 时的权限传递
  • 迁移核查:老系统下线时确认导出关系已清理,不留悬空挂载点

加固示例(/etc/exports)

加固示例(/etc/exports)
/data/share 10.0.0.12(rw,sync,root_squash,no_subtree_check)
# 仅授权特定主机;root_squash 将客户端 root 映射为匿名用户
# 只读场景使用 ro;避免使用 no_root_squash
/data/backup 10.0.0.20(ro,sync,root_squash)
# 导出后重载:exportfs -ra   (先 exportfs -v 查看生效结果)

核查命令

核查命令
showmount -e 10.0.0.12          # 列出导出目录(仅限本方授权目标)
cat /proc/fs/nfs/exports        # 本机当前导出情况
exportfs -v                     # 查看实际生效的选项
rpcinfo -p 10.0.0.12            # 查询注册的 RPC 服务与端口

常用导出选项

选项含义安全取值建议
rw / ro读写或只读按最小需要,优先 ro
sync同步写入后再返回保持 sync 避免数据丢失
root_squash客户端 root 映射为匿名默认保持开启
no_root_squash客户端 root 保持 root避免使用
subtree_check子目录检查性能考虑可关闭,无安全收益
no_root_squash 会让客户端 root 在服务端保持 root 身份:一旦导出的是系统目录或可写目录,等于把服务端的一部分交给了客户端,涉及系统目录导出时风险尤其明显。
导出范围写通配(如 0.0.0.0/0 或 *)在审计里属于重点不合格项:任何可达主机都能挂载,且挂载后往往能读写共享内容。
NFSv3 依赖 rpcbind 的 111 端口,NFSv4 通常只需 2049:收敛前先确认协议版本,不同版本的端口与加固方式并不相同。

易错点

  • 导出写的是通配网段:任何可达主机都能挂载,审计时属于重点不合格项
  • 使用 no_root_squash 导出可写目录:客户端 root 可在服务端以 root 写入文件
  • 只改配置文件不重载:exportfs -ra 未执行,实际生效选项与文件不一致
  • 把 rpcbind 服务一并暴露在边界:暴露后攻击者可先枚举 RPC 服务再定位 NFS

数据来源与参考

  • Linux man 5 exports(nfs-utils 文档)
  • NFS 官方安全实践说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌