【记录】Truenas Scale|中危漏洞,需要SMB签名

部分内容参考:等保测试问题——需要SMB签名(SMB Signing not Required) 以及 ChatGPT。

Truenas常用SMB服务,但默认并不开启SMB签名。这样具有中间人攻击的风险。

一、漏洞详情

1.1 漏洞报告

漏洞提示如下:
【记录】Truenas Scale|中危漏洞,需要SMB签名_第1张图片

1.2 漏洞介绍

  SMB是一个协议名,全称是Server Message Block(服务器消息快协议),用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现。SMB签名是SMB协议中的安全机制,也称为安全签名。SMB签名旨在帮助提高SMB协议的安全性,为了防止在传输过程中修改SMB数据包,SMB协议支持SMB数据包的数字签名。所有Windows操作系统都支持客户端SMB组件和服务器端SMB组件。要利用SMB数据包签名,通信中涉及的客户端SMB组件和服务器端SMB组件必须启用或需要SMB数据包签名。如果服务器启用此设置,Microsoft网络服务器将不与Microsoft网络客户端通信,除非该客户端同意执行SMB数据包签名。同样,如果需要客户端SMB签名,则该客户端将无法与未启用数据包签名的服务器建立会话。默认情况下,在工作站,服务器和域控制器上启用客户端SMB签名。
  SMB签名在性能上有一些权衡。如果网络性能对部署方案很重要,建议您不要使用SMB签名;如果要在高度安全的环境中使用SMB,建议您使用SMB签名。当启用SMB签名时,SMB将停止使用RDMA远程直接数据存取,因为最大MTU限制为1,394字节,这会导致邮件碎片和重组,并降低整体性能。

1.3 漏洞危害

  SMB服务上不需要签名。未经身份验证的远程攻击者可以利用此攻击对SMB服务器进行中间人攻击。

1.4 漏洞监测方式

在可以访问自己的服务器的客户端,用nmap扫描一下服务器的ip:

# 返回有关SMB确定的SMB安全级别的信息 
sudo nmap -sS -sV -Pn -p 445 --script="smb-security-mode" <你的服务器的ip>
# 确定SMBv2服务器中的邮件签名配置 
sudo nmap -sS -sV -Pn -p 445 --script="smb2-security-mode" <你的服务器的ip>

如果出现下图所示Message signing enabled but not required,说明存在漏洞:

【记录】Truenas Scale|中危漏洞,需要SMB签名_第2张图片

二、漏洞解决方案

我参考的那篇博客的服务器是windows服务器,而我的是Truenas Scale,系统是Debian。

所以接下来详细讲一下 TrueNas Scale 中的修复方法。

方式1:图形界面配置

我是看了社区才知道原来可以直接用图形化界面配置参数,
而且如果直接使用命令行往往不行。

2.1 打开 TrueNas Scale 管理界面的 SMB 配置服务

【记录】Truenas Scale|中危漏洞,需要SMB签名_第3张图片

2.2 添加附加参数

点开高级设置,然后划到最下面,填入附加参数:

server signing = mandatory

【记录】Truenas Scale|中危漏洞,需要SMB签名_第4张图片

2.3 再次检查漏洞是否存在

# 返回有关SMB确定的SMB安全级别的信息 
sudo nmap -sS -sV -Pn -p 445 --script="smb-security-mode" <你的服务器的ip>
# 确定SMBv2服务器中的邮件签名配置 
sudo nmap -sS -sV -Pn -p 445 --script="smb2-security-mode" <你的服务器的ip>

【记录】Truenas Scale|中危漏洞,需要SMB签名_第5张图片

解决了。

方式2:命令行配置(常常失效!)

2.1 打开 TrueNas Scale 管理界面的命令行

【记录】Truenas Scale|中危漏洞,需要SMB签名_第6张图片

2.2 找到 smb 服务的配置文件

可以直接这样查找配置文件:

sudo testparm -s

这将输出你当前所有的smb配置以及其文件。

【记录】Truenas Scale|中危漏洞,需要SMB签名_第7张图片

我的是/etc/smb4.conf

2.3 编辑配置文件

使用nano打开配置文件:

nano /etc/smb4.conf

找到或添加以下行到[global]部分中

server signing = mandatory

该行配置了强制要求所有的客户端使用消息签名进行通信。如果客户端不支持消息签名,则无法连接到SMB服务。注意,该配置只能与SMBv3一起使用。

保存并关闭文件。

2.4 重新启动Samba服务以使更改生效

sudo systemctl restart smbd

现在,SMB服务应该已经配置为强制要求客户端使用消息签名进行通信。请注意,如果你的客户端不支持消息签名,它将无法连接到SMB服务。在这种情况下,你需要升级客户端以支持消息签名,或者将SMB服务配置为不要求使用消息签名。

2.5 再次检查漏洞是否存在

# 返回有关SMB确定的SMB安全级别的信息 
sudo nmap -sS -sV -Pn -p 445 --script="smb-security-mode" <你的服务器的ip>
# 确定SMBv2服务器中的邮件签名配置 
sudo nmap -sS -sV -Pn -p 445 --script="smb2-security-mode" <你的服务器的ip>

【记录】Truenas Scale|中危漏洞,需要SMB签名_第8张图片

解决了。

三、漏洞未解决的可能原因

参考:

  1. Truenas 官方的有关 SMB 服务的安全配置建议:https://www.truenas.com/docs/solutions/optimizations/security/#smb;
  2. Truenas 官方的有关 SMB 服务的图形化配置界面的介绍:https://www.truenas.com/docs/core/uireference/services/smbscreen/
  3. Samba 服务官方对 server signing 参数的介绍:https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html#SERVERSIGNING
  4. Truenas 社区对 SMB 消息签名的讨论:https://www.truenas.com/community/threads/smb-signing.97262/
  1. 原因一:升级到了 TrueNas Scale Bluefin 分支的 22.12.04。
    由于未知原因,我升级之后不论怎么设置都是 not required。
  2. 原因二:未通过图形化页面添加参数,以至于在图形化界面操作之后,命令行添加的参数被图形化界面的参数覆盖。
    可通过在 TrueNas Scale 的命令行运行 testparm -s 检查所有的 smb 参数。
    如果设置正确,应该显示如下结果:
    【记录】Truenas Scale|中危漏洞,需要SMB签名_第9张图片
  3. 找原因可能方式:通过在 TrueNas Scale 的命令行运行 smbstatus 检查当前所有的 SMB 连接,
    你可以看到连接是否有消息签名和加密。
    如果有消息签名,其 Signing 列应该非空,如下所示:
    【记录】Truenas Scale|中危漏洞,需要SMB签名_第10张图片

你可能感兴趣的:(#,琐碎小记录,服务器,TrueNas,SMB,debian)