暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

守护网络安全:手把手教你堵住NFS服务中的showmount-e信息泄漏风险

IT那活儿 2025-08-20
1106
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


原理扫描漏洞信息

1.1 详细信息
对目标主机进行"showmount -e"操作,此操作将泄露目标主机大量敏感信息,比如目录结构。更糟糕的是,如果访问控制不严的话,攻击者有可能直接访问到目标主机上的数据。
1.2 解决方案
可以采取以下措施以降低威胁:
  • 限制可以获取NFS输出列表的IP和用户。
  • 除非绝对必要,请关闭NFS服务、MOUNTD。
返回值相关信息:
远端在[20048/UDP]口上运行着rpc.mountd服务,通过该服务可获取如下信息例如:
  • /data IP地址/24;
  • mountd 端口是20048。


前景介绍

2.1 showmount -e命令
CVE-1999-0554是一种早期发现的漏洞,只要目标主机开启了rpc.mountd服务,就允许攻击者利用showmount命令查询NFS共享目录的信息。攻击者可以通过showmount -e命令查询到目标主机上的所有共享目录,并且可以获得每个目录的权限、IP地址和其他详细信息。这种信息泄露可能会导致安全隐患,因此需要及时进行修复。
showmount -e是一个命令行工具,它可以用于查询NFS服务器上挂载的文件系统。它可以列出NFS服务器上所有已经导出的文件系统,以及它们的客户端信息。
showmount-e命令的格式如下:
showmount -e [server]
server表示要查询的NFS服务器的主机名或IP地址。如果不指定server,则默认为本地主机。
2.2 rpc.mountd 服务
什么是RPC守护进程
  • 使用NFS服务,至少需要启动以下3个系统守护进程。
  • rpc.nfsd :它是基本的NFS守护进程,主要功能是管理客户端是否能够登入服务器。
  • rpc.mountd :它是RPC安装守护进程,主要功能是管理NFS的文件系统。它会读取NFS的配置文件/etc/exports来对比客户端权限。
  • rpc.portmap:主要功能是进行端口映射工作。
使用showmount命令测试nfs服务器的输出目录状态showmount [选项] NFS服务器名称或地址-e:显示指定的NFS服务器上所有输出的共享目录例:showmount -e 192.168.1.1
为了解决这个问题,需要禁用或限制rpc.mountd服务的访问权限。一种解决方法是在目标主机上修改/etc/exports文件,限制只有授权的客户端才能访问NFS共享目录,禁止匿名访问。另外,也可以在配置文件中明确指定只允许特定的IP地址或主机名进行挂载操作,从而限制了showmount命令的使用范围。


修复过程

3.1 # ps aux |grep rpc
在目标主机上查找当前正在运行的与RPC(Remote Procedure Call,远程过程调用)相关的所有进程。ps aux列出系统中所有用户的进程详细信息,grep rpc则筛选出包含字符串"rpc"的行,通常用来检查与RPC服务相关的守护进程(如rpcbind、nfsd等)是否正在运行及其状态。
3.2 在目标主机上编辑
vi /etc/hosts.allow
注:对一个网段限制:172.18.1.,172.18.2.:allow,172.18.1.12x:allow
在目标主机上编辑此文件是为了设置防火墙规则,允许特定网段的主机访问 NFS 服务。这里的规则表示只允许来自 172.18.1. 子网和 172.18.2. 子网以及特定IP 172.18.1.12x(这里x可能代表任意数字,表示该子网段中的特定主机)的主机连接到NFS服务。
3.3 # vi etc/hosts.deny
在 /etc/hosts.deny 文件中添加了两条规则:
  • mountd: all 表示拒绝所有主机访问 NFS mount daemon(挂载守护进程)
  • rpcbind: ALL: deny 表示拒绝所有主机访问RPC bind服务(rpcbind,用于管理RPC服务端口映射)
这两个服务都被全局禁止,但在/etc/hosts.allow中设置了例外规则,所以只有在hosts.allow中明确允许的主机才能访问NFS和RPC服务。
注:上述配置更改无需重启rpcbind或nfs服务即可生效,因为TCP Wrappers(通过hosts.{allow,deny}文件实现)会在服务运行时动态读取规则。


验证

4.1 本机验证:# showmount -a
在本机执行,用于显示本机NFS服务器上所有被导出的目录。出现"clnt_create: RPC: Unknown host"错误通常意味着本地主机名解析有问题,或者本地NFS服务未启动。
4.2 远程验证:showmount -e 172.18.1.15 远程主机ip
在远程主机上执行,尝试获取目标IP地址为172.18.1.15的NFS服务器所导出的共享目录列表。出现"clnt_create: RPC: Port mapper failure - Authentication error"错误,意味着远程主机虽然找到了端口映射服务(portmapper,即rpcbind),但是在进行身份验证阶段失败
4.3 本机验证:#showmount -e
出现"clnt_create: RPC: Authentication error"错误提示意味着showmount命令无法成功进行认证,因为缺少有效的身份验证凭据或未经授权的访问。
根据这三个验证表示该漏洞已经修复成功,主机敏感信息已经无法再被扫描到


END


本文作者:方 威(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论