﻿# 開啟 CIFS / SMB / UNC 連線應開放哪些 Ports 與注意事項

最近的案子都會用到 WebFarm 架構，所以都會準備壹台 **檔案伺服器**(File Server) 存取共用的檔案，我們也不免俗的透過 [SMB/CIFS 通訊協定](http://en.wikipedia.org/wiki/Server_Message_Block)存取檔案，也就是我們一般常說的 [UNC](http://en.wikipedia.org/wiki/Path_\(computing\)#Uniform_Naming_Convention) 連線 ，當要設定防火牆存取規則時以下是需開啟 UNC 連線需開啟的埠號(Ports)清單。

若需完整開啟 SMB/CIFS 通訊協定所需的 Ports 如下，必須針對 **Microsoft-DS ( Microsoft Directory Services )** 與 **NETBIOS over TCP/IP** 等相關 Ports 開啟例外條件：

**TCP Ports**

-   139    ( NetBIOS Session Service )
-   445    ( Microsoft-DS )

**UDP Ports**

-   137    ( NetBIOS Name Service )
-   138    ( NetBIOS Name Service )

早在幾年前微軟的 Microsoft-DS 是最被常用來攻擊的服務之一，雖然這些漏洞已被修補，但即便到現在 Microsoft-DS 這個服務還是不斷被駭客所利用，進行大量的掃瞄、攻擊、竄改檔案、植入木馬、…等等。

在知名的 [Sysinternals](http://technet.microsoft.com/en-us/sysinternals/default.aspx) 工具組中有一套 [PsTools](http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx) 工具靠的就是 Microsoft-DS 服務進行遠端操作，若是駭客利用這個工具可對你的主機發出大量的要求，只要被猜中你管理者的帳號與密碼，那就只能恭喜你淪陷了！要避免這個風險，只要將 TCP Port 445 關閉就能避免被遠端操控的命運。

對 [PsTools](http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx) 有興趣的人可以在 [TigerLin](http://www.dotblogs.com.tw/tigerlin/) 的部落格找到一篇 [\[IT工具\] 管理 Server 的狙擊槍 – psTools Suite](https://dotblogs.com.tw/tigerlin/2008/12/08/6292) 文章有該工具的使用說明。

在實務上 ( 全伺服器環境 )，我很少有需要開啟 **NETBIOS over TCP/IP** 的情況，通常都直接透過 IP 連接遠端電腦，也就是說，如果你的網路環境「只有」Windows 主機的情況下，可以僅開放 **TCP Port 445** 即可，接著再將 NetBIOS over TCP/IP 停用，一來可減少 NetBIOS 對網路進行廣播、二來可簡化 SMB 封包的傳輸，詳細資訊可參考 \[[Direct hosting of SMB over TCP/IP](http://support.microsoft.com/kb/204279/en-us)\] 文章，或參考下圖進行設定。

![停用 \[NetBIOS over TCP/IP\]](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6e11a79c479d2053b8df-image.png "停用 [NetBIOS over TCP/IP]")

若用 [TCPView](http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx) 工具觀看主機網路的連線狀況，在關閉 NetBIOS over TCP/IP 後，原本 Listen 中的三個 Ports 會自動關閉，只剩下 **TCP Port 445** 而已：

![用 TCPView 工具觀看主機網路的連線狀況，在關閉 NetBIOS over TCP/IP 後，原本 Listen 中的三個 Ports 會自動關閉](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1a02e8f76c41b138ed2b-image.png "用 TCPView 工具觀看主機網路的連線狀況，在關閉 NetBIOS over TCP/IP 後，原本 Listen 中的三個 Ports 會自動關閉")

**相關連結**

-   [了解共用資料夾與 Windows 防火牆](http://technet.microsoft.com/zh-tw/library/cc731402.aspx)
-   [Direct hosting of SMB over TCP/IP](http://support.microsoft.com/kb/204279/en-us)
-   [The use of TCP port 445 in Windows 2000](http://ntsecurity.nu/papers/port445/)
-   What is Microsoft-DS?
-   [Port Authority, for Internet Port 445](http://www.grc.com/port_445.htm)
-   [Port Authority, for Internet Port 137](http://www.grc.com/port_137.htm)
-   [Port Authority, for Internet Port 138](http://www.grc.com/port_138.htm)
-   [Port Authority, for Internet Port 139](http://www.grc.com/port_139.htm)
-   [Uniform Naming Convention ( UNC )](http://en.wikipedia.org/wiki/Path_\(computing\)#Uniform_Naming_Convention)
-   [Connecting to SMB share on a Windows 2000-based computer or a Windows Server 2003-based computer may not work with an alias name](https://web.archive.org/web/20091226153708/http://support.microsoft.com:80/kb/281308)
-   [TCP/IP Port Numbers (TCP and UDP) - Network Services (IANA)](http://www.honeypots.net/misc/services)
-   [Computer Names Do Not Resolve When Used in a UNC Path](http://technet.microsoft.com/en-us/library/cc738971\(WS.10\).aspx)
