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