我有一个 samba 服务器,IPC$
出于安全原因(用户和共享枚举、用户信息查询……),我在其中禁用了对共享 [1] 的访问。
我可以毫无问题地从任何基于 Unix 的计算机访问此服务器上的数据共享mount.cifs
。但是,当我尝试从 Windows 计算机(使用 Windows 7 和 10 测试)访问它们时,我在提供我的凭据后收到拒绝访问错误。
记录 SMB 流量后,我注意到 Windows 计算机总是在尝试访问我提供Tree connect request
的IPC$
共享之前对共享进行操作(通过映射网络驱动器或添加网络位置)。我的 samba 服务器为共享返回拒绝访问IPC$
,并且 Windows 从不尝试访问我想要的共享。
所以我的问题是如何防止 Windows 执行这个无用的请求IPC$
并访问我提供的共享?IPC$
或者至少在返回Access denied后如何强制 Windows 访问真实共享?
提前感谢您的帮助和节日快乐!
海绵宝宝
[1] https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/securing-samba.html#id2618877
所以我的问题是如何防止 Windows 执行这个无用的请求......? 或者至少我怎样才能强制 Windows 在之后访问真正的共享..?
答案是你不能!很抱歉,但事实就是如此。但是,尽管这是您问题的真正答案-我不想听起来没有帮助。我确实想提供帮助,因此希望以下是我能提供的最佳建议,在您的情况下对您有用。
我是一名专业的渗透测试人员,经常使用匿名共享访问(例如 IPC$)来获取有关系统的信息并闯入系统以进行合法测试。关键是防止匿名用户(没有有效凭据的人)枚举用户和共享。一旦获得有效凭据,通常还有其他枚举用户的方法(例如 cat /etc/passwd),无论如何,它对攻击者的优先级较低。
您引用的文章包含以下内容:
之所以不推荐,是因为“那些客户端……也可能无法访问其他一些资源”。Windows 无法访问机器上的任何共享就是一个例子。不幸的是,Windows 需要访问 IPC$ 才能查看其他共享。如果它看不到 IPC$,它只是假设没有其他共享可用并放弃。
Samba 的 Linux 客户端实现的工作方式略有不同,因此不会遇到同样的问题。由于没有办法绕过它,我只会确保 IPC$ 共享不会将信息泄露给匿名用户。
使用您发送的文章中基于主机的保护和基于用户的保护部分是防止对所有 Samba 的不良访问的好方法,包括来自不受信任来源的 IPC$ 共享,并且很可能会为您提供所需的一切。
但是,此页面的指定部分提供了进一步的建议: https ://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
要查看的部分:
如果您使用的是 winbind,请设置以下内容以防止枚举: