【记录】Truenas Scale|中危漏洞,需要SMB签名
部分内容参考:等保测试问题——需要SMB签名(SMB Signing not Required) 以及 ChatGPT。
Truenas常用SMB服务,但默认并不开启SMB签名。这样具有中间人攻击的风险。
一、漏洞详情
1.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
,说明存在漏洞:
二、漏洞解决方案
我参考的那篇博客的服务器是windows服务器,而我的是Truenas Scale,系统是Debian。
所以接下来详细讲一下 TrueNas Scale 中的修复方法。
方式1:图形界面配置
我是看了社区才知道原来可以直接用图形化界面配置参数,
而且如果直接使用命令行往往不行。
2.1 打开 TrueNas Scale 管理界面的 SMB 配置服务
2.2 添加附加参数
点开高级设置,然后划到最下面,填入附加参数:
server signing = mandatory
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>
解决了。
方式2:命令行配置(常常失效!)
2.1 打开 TrueNas Scale 管理界面的命令行
2.2 找到 smb 服务的配置文件
可以直接这样查找配置文件:
sudo testparm -s
这将输出你当前所有的smb配置以及其文件。
我的是/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 官方的有关 SMB 服务的安全配置建议:https://www.truenas.com/docs/solutions/optimizations/security/#smb;
- Truenas 官方的有关 SMB 服务的图形化配置界面的介绍:https://www.truenas.com/docs/core/uireference/services/smbscreen/
- Samba 服务官方对 server signing 参数的介绍:https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html#SERVERSIGNING
- Truenas 社区对 SMB 消息签名的讨论:https://www.truenas.com/community/threads/smb-signing.97262/
- 原因一:升级到了 TrueNas Scale Bluefin 分支的 22.12.04。
由于未知原因,我升级之后不论怎么设置都是 not required。 - 原因二:未通过图形化页面添加参数,以至于在图形化界面操作之后,命令行添加的参数被图形化界面的参数覆盖。
可通过在 TrueNas Scale 的命令行运行testparm -s
检查所有的 smb 参数。
如果设置正确,应该显示如下结果:
- 找原因可能方式:通过在 TrueNas Scale 的命令行运行
smbstatus
检查当前所有的 SMB 连接,
你可以看到连接是否有消息签名和加密。
如果有消息签名,其 Signing 列应该非空,如下所示:
【记录】Truenas Scale|中危漏洞,需要SMB签名的更多相关文章
- [ 中危 ] dp意见反馈处存储型XSS
XSS平台架设攻击代码,有很多,如我是在http://xss.fbisb.com上架设的. 在 xxx.dianping.com系统意见反馈处插入xss代码提交,而后等待后台管理员点击,可打到其COO ...
- 记录Python学习中的几个小问题
记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...
- 也用 Log4Net 之将自定义属性记录到文件中 (三)
也用 Log4Net 之将自定义属性记录到文件中 (三) 即解决了将自定义属性记录到数据库之后.一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑 ...
- 记录下项目中常用到的JavaScript/JQuery代码二(大量实例)
记录下项目中常用到的JavaScript/JQuery代码一(大量实例) 1.input输入框监听变化 <input type="text" style="widt ...
- 详解Javaweb中常见漏洞的防御
上一篇给大家介绍了SpringMVC中常见的客户端数据输入点,这一篇给大家讲解下java中常见漏洞的防御方法. 0x01.sql注入 下面我们就用利用SpringMVC自带的数据库操作类jdbcTem ...
- (4.7)怎么捕获和记录SQL Server中发生的死锁?
转自:https://blog.csdn.net/c_enhui/article/details/19498327 怎么捕获和记录SQL Server中发生的死锁? 关键词:死锁记录,死锁捕获 sql ...
- Log4Net 之将自定义属性记录到文件中 (三)
原文:Log4Net 之将自定义属性记录到文件中 (三) 即解决了将自定义属性记录到数据库之后.一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑到了 ...
- 怎么启用apache的mod_log_sql模块将所有的访问信息直接记录在mysql中
怎么启用apache的mod_log_sql模块将所有的访问信息直接记录在mysql中
- BUUCTF刷题记录(更新中...)
极客大挑战 2019]EasySQL-1 直接通过输入万能密码:' or 1=1#实现注入: 思考:服务端sql语句应该为:select * from users where username='xx ...
- [Q&A] 在证书存储区中找不到清单签名证书
方案1:右击项目属性->签名->为 ClickOnce 清单签名,将勾掉的选项去掉. 方案2:在签名中创建一个新的签名. 方案3:记事本打开相应的 csproj 文件,调整节点值.< ...
随机推荐
- Nginx~启动!!
前言 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.r ...
- linux的使用(2)
1,覆盖 > cat 文件名a>文件名b:将文档a覆盖文档b 2,追加 >> cat 文档名a>>文档名b:将文档a追加到文档b后 追加错误 上图所示:尽量使用字母 ...
- [SDOI2008] 洞穴勘测 题解
似乎所有的线段树分治题都能被 \(LCT\) 平替掉? 一眼动态树,直接 \(LCT\). Connect x y 操作用 \(link(x,y)\) 实现,Destroy x y 操作用 \(cut ...
- 【技术美术】GPU渲染管线笔记
[技术美术]GPU 渲染管线笔记 基本术语 基元.图面: 网格中所使用的顶点数据布局,常见的如点.线.三角面等,特殊的甚至包括一些带邻近基元的基元类型. 参数语义 语义是附加到着色器输入或输出参数的字 ...
- manim边学边做--相机Camera简介
在Manim中,Camera是实现动画效果的重要工具之一. 它就像我们观察动画的 眼睛,通过控制相机的位置.角度和视野,可以创造出丰富多样的视觉效果. Manim社区版本中提供了多种Camera类型, ...
- Java中ArrayList的常见用法
Java 中的 ArrayList 是一个非常常用的动态数组,它属于 Java 集合框架的一部分.与普通数组不同,ArrayList 可以在需要时动态调整其大小.以下是 ArrayList 的一些详细 ...
- Linux - 内核版本升级
测试时间:2024年5月15日,本文测试CentOS7.9的内核版本升级 测试结论:不要选择手动编译的方式!!! 一.使用第三方仓库(ELRepo) (1)升级前内核查看(3.10.0-1160.el ...
- Docker - 在线音乐播放器 YesPlayMusic
原文链接:https://mp.weixin.qq.com/s/D2778fnix6jAeZlCicWGdw(本文只作为跟练,不以盈利为目的) 1.下载镜像 [root@node ~]# docker ...
- Processing多窗口程序范例(二)
多窗口范例(二),做一个划线生成图像的应用,最后结果: 子窗口划线,主窗口复制多个画布叠加并添加了旋转动画. 范例程序 主程序: package syf.demo.multiwindow2; impo ...
- Windows 提权-SeBackupPrivilege 特权
本文通过 Google 翻译 Sebackupprivilege – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注 ...