
背景
近兩年來,勒索病毒不斷肆虐全球網絡,通過漏洞發起的攻擊占攻擊總數的87.7%,135 137 138 139 445端口給我們帶來便利的同時,同樣也給了黑客可乘之機,關閉這些危險端口意味着黑客想攻破你的電腦,難度高了很多。
上個月廣州移動的安全檢查行動中,有一項就是要給移動員工的電腦關閉這個危險端口,一幢辦公樓裡面約有四五千名員工,人手1台電腦,有些人甚至2台,由于沒有使用域環境,手動去給每台電腦關閉這些端口,工作量不言而喻。關閉這些端口步驟做成批處理檔案,群發給移動員工在自己電腦上一鍵運作的方式,顯得非常有必要。
端口簡介
- TCP端口135
135端口作用就是進行遠端,可以在被遠端的電腦中寫入惡意代碼,危險極大。
- UDP端口137、138
137端口是在區域網路中提供計算機的名字或IP位址查詢服務,使用者隻需要向區域網路或網際網路上的某台計算機的137端口發送一個請求,就可以擷取該計算機的名稱、注冊使用者名,以及是否安裝主域控制器、IIS是否正在運作等資訊。
138端口的主要作用就是提供NetBIOS環境下的計算機名浏覽功能。
- TCP端口139、445
主要用于Windows"檔案和列印機共享"和SAMBA。
關閉危險端口後對電腦有什麼影響?
關閉135 137 138 139 445端口及對應服務後,依賴這些端口和服務的應用或服務都會受到影響,引起的故障現象多種多樣,這裡不做描述,主要說明以下2種:
- 影響檔案共享服務。
關閉後你的電腦将無法建立SMB檔案共享,也無法通路其他電腦使用SMB協定共享的檔案;
建議改用更為安全的ftp共享作為檔案共享的代替方案。
- 影響列印機共享服務。
如果是區域網路内其他電腦通過列印機的ip連接配接成功後,再将列印機分享給你的電腦,那關閉端口後你的電腦将無法連接配接其他電腦共享出來的列印機;
如果你的電腦是通過老式的COM、現在流行的USB資料線直接連接配接到列印機,或者是通過列印機的ip直接連接配接,那你的電腦将不會受到影響,列印機服務依然可以正常使用。
關閉方法
- 方式:windows批處理腳本
- 運作環境:win7系統、win10系統
- 步驟示範(以win7系統為例,示範圖檔請放大檢視!)
- 查詢135 137 138 139 445端口的狀态
在電腦桌面狀态按組合鍵win+r,輸入cmd,回車
在指令行視窗輸入netstat –an 并回車,即可看到所有開啟的端口及對應的協定、外部位址和狀态。
- 建立并運作批處理檔案
右鍵點選桌面空白處,點選“建立文檔”
複制下面的代碼粘貼到記事本中,點選“檔案” >> 點選“另存為”
@echo offcolor 0A echo.echo 》》擷取管理者權限...%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&[email protected] off color 0A title 一鍵屏蔽危險端口和服務echo.echo 》》開啟Windows防火牆服務echo.net start MpsSvcecho 》》設定Windows防火牆為自啟動echo.sc config MpsSvc start= autoecho.echo 》》啟用防火牆echo.netsh advfirewall set allprofiles state onecho ------------------echo -------------------------------------------------echo.echo 》》正在屏蔽135端口 請稍候… netsh advfirewall firewall delete rule name = "Disable port 135 - TCP"netsh advfirewall firewall add rule name = "Disable port 135 - TCP" dir = in action = block protocol = TCP localport = 135 netsh advfirewall firewall delete rule name = "Disable port 135 - UDP"netsh advfirewall firewall add rule name = "Disable port 135 - UDP" dir = in action = block protocol = UDP localport = 135:修改系統資料庫reg add "hklmSOFTWAREMicrosoftOle" /v "EnableDCOM" /t reg_sz /d "N" /freg add "hklmSOFTWAREMicrosoftRpc" /v "DCOM Protocols" /t reg_multi_sz /d "" /freg add "hklmSOFTWAREMicrosoftRpcinternet" /t reg_sz /fecho.echo ------------------echo -------------------------------------------------echo.echo 》》正在屏蔽137端口 請稍候… echo.netsh advfirewall firewall delete rule name = "Disable port 137 - TCP"netsh advfirewall firewall add rule name = "Disable port 137 - TCP" dir = in action = block protocol = TCP localport = 137netsh advfirewall firewall delete rule name = "Disable port 137 - UDP"netsh advfirewall firewall add rule name = "Disable port 137 - UDP" dir = in action = block protocol = UDP localport = 137echo ------------------echo -------------------------------------------------echo.echo 》》正在屏蔽138端口 請稍候… netsh advfirewall firewall delete rule name = "Disable port 138 - TCP"netsh advfirewall firewall add rule name = "Disable port 138 - TCP" dir = in action = block protocol = TCP localport = 138netsh advfirewall firewall delete rule name = "Disable port 138 - UDP"netsh advfirewall firewall add rule name = "Disable port 138 - UDP" dir = in action = block protocol = UDP localport = 138echo ------------------echo -------------------------------------------------echo.echo 》》正在屏蔽139端口 請稍候… netsh advfirewall firewall delete rule name = "Disable port 139 - TCP"netsh advfirewall firewall add rule name = "Disable port 139 - TCP" dir = in action = block protocol = TCP localport = 139netsh advfirewall firewall delete rule name = "Disable port 139 - UDP"netsh advfirewall firewall add rule name = "Disable port 139 - UDP" dir = in action = block protocol = UDP localport = 139echo.echo 》》關閉TCP/IP NetBIOS Helper(lmhosts)共享服務echo.sc stop lmhostssc config lmhosts start= disabledecho.echo ------------------echo -------------------------------------------------echo.echo 》》正在關閉445端口 請稍候… netsh advfirewall firewall delete rule name = "Disable port 445 - TCP"netsh advfirewall firewall add rule name = "Disable port 445 - TCP" dir = in action = block protocol = TCP localport = 445netsh advfirewall firewall delete rule name = "Disable port 445 - UDP"netsh advfirewall firewall add rule name = "Disable port 445 - UDP" dir = in action = block protocol = UDP localport = 445echo.echo 》》關閉Server(LanmanServer)服務echo.sc stop LanmanServersc config LanmanServer start= disabledecho.echo 》》關閉NetBT服務echo.sc stop NetBTsc config NetBT start= disabled:修改系統資料庫reg add "hklmSystemCurrentControlSetServicesNetBTParameters" /v "SMBDeviceEnabled" /t reg_dword /d "0" /fecho.echo ------------------echo -------------------------------------------------echo.echo 》》關閉Workstation(LanmanWorkstation)服務echo.sc stop LanmanWorkstationsc config LanmanWorkstation start= disabledecho.echo ------------------echo -------------------------------------------------echo.echo 》》關閉Distributed Transaction Coordinator(MSDTC)共享服務echo.sc stop MSDTCsc config MSDTC start= disabledecho.echo ------------------echo -------------------------------------------------echo.echo 》》危險端口已經關閉,請重新啟動電腦後用netstat -an指令檢視本地端口echo.echo 》》請按任意鍵退出!echo.pause>nul
輸入檔案名“關閉135_137_138_139_445危險端口.bat” >>儲存類型選擇“所有檔案”>>編碼選擇“ANSI” >> 點選“儲存”
輕按兩下運作剛剛另存為的bat檔案
運作完成後的狀态如下圖所示
- 手動重新開機電腦
批處理所做的一部分改動需要重新開機電腦才會生效。重新開機之前請先确認儲存正在編輯的文檔或網頁表單。
- 再次查詢135 137 138 139 445端口的狀态
重新開機完成後,在電腦桌面狀态按組合鍵win+r,輸入cmd,回車;
在指令行視窗輸入netstat –an ,回車。
可以看到135 137 138 139 445端口已經關閉。
寫在最後
經實踐,該批處理程式在win7、win10系統的管理者使用者下運作正常、有效。廣大讀者如有疑問,歡迎評論或私信提出,一起讨論學習!