N年前开始爆发的勒索病毒如今依然仗着永恒之蓝漏洞有恃无恐地在世界各地横行肆虐。
前不久再次惊闻某大型企业遭受重创,数十台服务器被锁定,被勒索金额高达历史新高的数十亿人民币。
我的个天啊,这么多的钱怎么花啊,呸,怎么付啊?
咳咳,操这个心干吗,要知道人民币的流向是受监管的,况且幕后黑手早就暗示被害方必须通过虚拟货币(门罗币)支付。
当然了现在被害方有没有支付这笔钱还是说怎么处理的我们就不得而知了。
作为每次看热闹都自带小板凳的资深吃瓜群众,我们似乎应该冷静思考一下为什么如今“固若金汤”的系统仍会有所谓的漏洞被利用呢?
这就不得不提到史上大坑的永恒之蓝(Eternal Blue)的 SMB 漏洞了。
SMB 协议简单地可以理解为用于文件共享服务的通信协议,通常有三个版本,SMBv1 、 SMBv2 和 SMBv3 。
而 SMBv1 这个版本已经不安全了,会被病毒利用,一般的勒索软件就是这么干的。
可以这么说,只要你是在用 SMB 协议的共享服务,那么就有十万分的必要去检查一下你的共享服务是否安全。
有的小伙伴说了,我自己的电脑应该没有开共享服务吧。
这么想你就OUT了, 如果你的系统是 Windows 的话,那么它默认是开启的哦,即使你并没有提供共享,但它的服务还是在后台跑得欢呢,要不疯狂的勒索病毒怎么会也会感染到个人电脑上呢?
那这么危险为啥 Windows 服务还开放着呢,因为出于系统管理的原因,很多程序都是要用到这个服务的。
所以说不管是服务器还是客户端都有一定的安全风险。
好了,细说可就不是几句话能说清楚的了,本文只和小伙伴们聊一聊如何检查是否启用了 SMBv1 ,并且介绍一下如何禁用 SMBv1 ,以达到加固共享服务安全性的目的。
开始之前
在正式开始之前,需要简单说几句。
以往的旧版本系统包括部分旧版 Win10 系统在访问 SMBv1 共享时,通常会有提示通信不安全的警告。
到了后续系统,这个警告已经不出现了,取而代之的则是直接告诉用户无法访问共享。
原因可能是后续版本的 Win10 系统默认已经不通过 SMBv1 来连接共享服务了,如果服务端仍然使用 SMBv1 ,那么客户端自然就直接拒绝了。
如何查看和禁用 SMBv1?
好了,我们来看看如何检查自己的系统是否开启了 SMBv1 。
打开 PowerShell 通过一行命令即可查看。
PS C:\> Get-SmbServerConfiguration | Select EnableSMB1Protocol
就像上图那样,我的系统得到的结果是 true ,也就是默认 SMBv1 是开着的。
惊不惊喜,害不害怕?!
哈哈,别担心,这个只是个开关,关键还在于你是否真的安装了 SMBv1 使用的组件,实际上我们可以通过其他地方来确认有没有真正地安装了它。
如果你还是担心,那么可以将它顺手关闭,这个操作不需要重启电脑。
PS C:\> Set-SmbServerConfiguration -EnableSMB1Protocol $false
Win7/Win10 客户端系统可以通过控制面板中的 启用或关闭 Windows 功能 来查看是否启用 SMBv1 。
在早期的系统中它默认是被打上勾的(好可怕),不过现在的系统默认都未启用。
如果是服务器系统(比如 2012 或 2016 等),那么可以通过 删除角色和功能 来查看是否启用了 SMBv1 。
另外还有一种方法,可以通过编辑注册表来关闭 SMBv1 ,这个操作需要重启电脑生效。
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters]"SMB1"=dword:00000000
注册表文件下载,双击导入即可。
Disable_SMB1.reg.7z
下载链接:https://www.90pan.com/b2495128
提取码:<抱歉链接失效,需要请留言>
这里需要当心,如果没有这个注册表项则新建之,而默认没有此项则表示开启 SMBv1 。
如何测试服务器是否禁用了 SMBv1?
Windows 下似乎还没有有效的程序来测试,我就拿 Linux 的 smbclient 来测试吧。
smbclient 是 Linux 下的 SMB 客户端程序,通过如下命令在 CentOS 7 下可以安装 samba-client 。
# yum install samba-client
smbclient 命令有个参数 -m 用于指定连接时客户端的最大协议版本。
那么我们就可以人为地指定客户端最大连接协议为 SMBv1 ,这样会强制服务端也使用 SMBv1 与客户端建立连接,即可检查服务器是否禁用了 SMBv1 。
命令这么写:
smbclient -m NT1 //服务器域名或IP/共享名 -U 用户名
需要注意的是,在 Samba 官方文档中,SMB1 并不是 smbclient 参数 -m 的合法值,而应该是 NT1 。
另外还可以同时检测 SMBv2 和 SMBv3 是否正常。
图片上我们可以明显看出,NT1 的连接被拒绝重置了,说明服务器禁用了 SMBv1 。
如果没有禁用,那么就会像 SMB2 和 SMB3 那样不会报错而直接提示用户输入密码了。
写在最后
通过以上内容我们可以了解到关于 SMBv1 检查和如何禁用的方法。
虽然在较新的系统中 SMBv1 已经被禁用了,但仍有不少老系统默认还是开着的,要注意检查,该关的尽量关掉吧。
好了,看完文章后你有什么感想吗?
你的电脑或服务器还安全吗?
心动不如行动,赶快去检查检查吧,祝你好运哈!
网管小贾 / sysadm.cc