2012/02/23

Windows Firewall and ICMP

Windowx 內建防火牆,
這邊以 XP SP3 來做說明,

ICMP_百度百科
ICMP 是(Internet Control Message Protocol) Internet 控制報文協議。
它是 TCP/IP 協議族的一個子協議,
用於在 IP 主機、路由器之間傳遞控制消息。

控制消息是指網路通不通、主機是否可達、路由是否可用等網路本身的消息。
這些控制消息雖然並不傳輸使用者資料,
但是對於使用者資料的傳遞起著重要的作用。
它是一個非常重要的協議,它對於網路安全具有極其重要的意義。

我們在網路中經常會使用到 ICMP 協議,
比如我們經常使用的用於檢查網路通不通的 Ping 命令,
這個「Ping」的過程實際上就是 ICMP 協議工作的過程。

 
Windos XP 內建防火牆預設是過濾 Ping 的 ICMP echo request,
不過通常我們都會使用「檔案及印表機共用」,
裡面開啟的 TCP 445 port 同時會讓 ICMP 設定值裡的「允許傳入的回應要求」勾選,
而且選項呈現灰色無法取消,所以從別台電腦 Ping 將會收到回應。

如果要開啟「檔案及印表機共用」
但要關閉 ICMP 的「允許傳入的回應要求」就很棘手,
經過實測,只要開啟 TCP 139 或 TCP 445 port 就可以分享檔案了,
單獨切換時要先全選、確定,再進去取消不要的,
這樣說來我就不知道 Microsoft 為什麼「檔案及印表機共用」要加入
UDP 137, UDP 138, TCP 445 這 3 個 port 了?

避免開啟檔案共用時鎖住允許傳入的回應要求,
這裡有一個 Registry 表:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]
"137:UDP"="137:UDP:LocalSubNet:Disabled:@xpsp2res.dll,-22001"
"138:UDP"="138:UDP:LocalSubNet:Disabled:@xpsp2res.dll,-22002"
"139:TCP"="139:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22004"
"445:TCP"="445:TCP:LocalSubNet:Disabled:@xpsp2res.dll,-22005"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\IcmpSettings]
"AllowInboundEchoRequest"=-

 
137, 138, 139 屬 IBM NetBIOS,445 屬 Microsoft SMB(=CIFS)
NetBIOS 算是比較古早及底層的東西,
也許是這兩類呈現正相關,都是 File Share 的東西,
所以就都開啟了,以相容所有機器吧-..-!

Wikipedia TCP/UDP 埠列表
137/TCP,UDP NetBIOS Name Service 官方
138/TCP,UDP NetBIOS Datagram Service 官方
139/TCP,UDP NetBIOS Session Service 官方
445/TCP Microsoft-DS (Active Directory,Windows shares, Sasser worm,Agobot, Zobotworm) 官方
445/UDP Microsoft-DS SMB file sharing 官方
官方:應用與埠組合記錄在 IANA 的埠分配列表中
Windows Server 系統的服務概觀和網路連接埠需求

Wikipedia SMB
伺服器消息區塊(Server Message Block,又稱 Common Internet File System(CIFS)),
是由微軟開發的一種軟體程序級的網路傳輸協議,
主要用來使得一個網路上的機器共享計算機文件、印表機、串列埠和通訊等資源。
它也提供認證的行程間通訊機能。
它主要用在裝有 Microsoft Windows 的機器上,
在這樣的機器上被稱為 Microsoft Windows Network。

經過 Unix 伺服器廠商重新開發後,
它可以用於連接 Unix 伺服器和 Windows 客戶機,執行列印和檔案分享等任務。
CIFS 消息一般在 NetBIOS 或 TCP 協議層上,
分別使用不同的埠 139 或 445,目前傾向於使用 445 埠。

 
Comodo Firewall 預設也是屏蔽 Ping 的 ICMP echo request,
要開啟的話在 Firewall > Network Security Policy > Global Rules
Block ICMP In From MAC Any To MAC Any Where ICMP Message Is ECHO REQUEST
改為 Allow 就可以了 :)

插曲:
之前找到篇 关闭445端口,正常使用防火墙管理ICMP传入回显请求 | Lin's Space|Only
該篇有瑕疵(不知所云)的文章竟然還被 CNET Networks 的 ZDNet China 轉載...

留言原文:
禁用 TCP 445 連接埠,ICMP 設定中的「允許傳入回應請求」可勾選啊?!
防火牆 ICMP 設定中給的提示讓人誤解,並不是啟用了 TCP 連接埠 445「允許傳入回應請求」被自動允許。...是這樣沒錯啊?!
XP SP3.

沒有留言:

張貼留言