我一直在研究 SAMBA 和 CIFS。
我们有一台经过渗透测试的服务器,结果显示“SMB 服务器签名未强制执行”
好吧,我想,我只要打开服务器签名就行了。然后我遇到了 SMB 的不同方言,以及它们与 CIFS 的关系,以及为什么你永远不应该使用 CIFS。
https://blog.varonis.com/the-difference-between-cifs-and-smb/ http://blog.fosketts.net/2012/02/16/cifs-smb/
但是,在我的配置中(SMB 服务器是带有 samba-3.6.23-30 的 RHEL 6.7,SMB 客户端是带有 cifs-utils-4.8.1-20 的 RHEL6.7),客户端使用 mount.cifs 在 fstab 中挂载共享。
怎么回事?这似乎是在 RHEL 上安装 samba 共享的方法,但 CIFS 应该是一个肮脏的词!mount.smbfs 有缺陷并且已被弃用。
另外,我怎么知道我的 samba 服务器使用的是哪种方言?显然,自 3.6 版以来,samba 都支持 SMB2,但我该如何启用它(我已在 smb.conf 的 [global] 部分尝试过 max protocol = SMB2),并确保它确实在执行此操作?
我如何启用消息签名,并且至关重要的是,检查它是否确实在执行此操作?
渗透测试人员使用 nmap 发现消息签名已被禁用,但我没有这个功能。有没有使用标准 Linux 工具的方法?
答案1
根据安装.cifs手册页:
CIFS 协议是 SMB 协议的后继者,受到大多数 Windows 服务器和许多其他商业服务器和网络附加存储设备以及流行的开源服务器 Samba 的支持。
在此联机帮助页中,CIFS/SMB2 协议被反复提及。显然,在普通的 Linux 和 Samba 用语中,CIFS 等于 SMB2。
然而 CIFS 内核文档更精确:
Linux cifs 内核客户端自 2.5.42 起已包含在内核中。cifs 协议(以及相关的早期 SMB 方言)是默认协议(“vers=1.0”),但可以通过在挂载时指定“vers=2.0”或“vers=2.1”或“vers=3.0”或“vers=3.02”来选择对较新方言(SMB2.02、SMB2.1 和 SMB3 以及 SMB3.02)的支持。
所以答案很明显:你应该使用安装.cifs无论如何。不过,应该测试您的内核使用高于 2.0 的 SMB 协议的能力(RedHat 内核补丁非常多,与具有相同版本号的 vanilla 内核几乎没有相似之处)。