區域網的共享與安全設定法則

1. 區域網實現原理

在瞭解共享之前,我們需要對區域網的概念有個瞭解,區域網並不同於外界通訊使用的TCP/IP協議體系,它是一種建立在傳統乙太網(Ethernet)結構上的網路分佈,除了使用TCP/IP協議,它還涉及許多協議。
在局域網裡,計算機要查詢彼此並不是通過IP進行的,而是通過網絡卡MAC地址,它是一組在生產時就固化的唯一標識號,根據協議規範,當一臺計算機要查詢另一臺計算機時,它必須把目標計算機的IP通過ARP協議(地址解析協議)在物理網路中廣播出去,“廣播”是一種讓任意一臺計算機都能收到資料的資料傳送方式,計算機收到資料後就會判斷這條資訊是不是發給自己的,如果是,就會返回應答,在這裡,它會返回自身地址。當源計算機收到有效的迴應時,它就得知了目標計算機的MAC地址並把結果儲存在系統的地址緩衝池裡,下次傳輸資料時就不需要再次傳送廣播了,這個地址緩衝池會定時重新整理重建,以免造成資料冗餘現象。實際上,共享協議規定區域網內的每臺啟用了檔案及印表機共享服務的計算機在啟動的時候必須主動向所處網段廣播自己的IP和對應的MAC地址,然後由某臺計算機(通常是區域網內某個工作組裡第一臺啟動的計算機)承擔接收並儲存這些資料的角色,這臺計算機就被稱為“瀏覽主控伺服器”,它是工作組裡極為重要的計算機,負責維護本工作組中的瀏覽列表及指定其他工作組的主控伺服器列表,為本工作組的其他計算機和其他來訪本工作組的計算機提供瀏覽服務,它的標識是含有\\_MSBROWSE_名欄位。這就是我們能在網路鄰居看到其他計算機的來由,它實際上是一個瀏覽列表,使用者可以使用“nbtstat -r”來檢視在瀏覽主控伺服器上聲明瞭自己的NetBIOS名稱列表。
瀏覽列表記錄了整個區域網內開啟的計算機的資源描述,當我們要訪問另一臺計算機的共享資源時,系統實際上是通過傳送廣播查詢瀏覽主控伺服器,然後由瀏覽主控伺服器提供的瀏覽列表來“發現”目標計算機的共享資源的。
但是僅知道彼此的地址還不夠,計算機之間必須建立一條連線的資料鏈路才能正常工作,這就需要另一個基本協議來進行了。NetBIOS(網路基本輸入輸出系統)協議是IBM開發的用於給區域網提供網路以及其他特殊功能的命令集,幾乎每個區域網都必須在這種協議上面進行工作,NetBIOS相當於Intranet上的TCP/IP協議。而後推出的NetBEUI協議(NetBIOS使用者擴充套件介面協議)則是對前者進行了功能擴充,這幾個協議都是組成區域網的基本必備,最後,為了建立連線,區域網還需要TCP/IP協議。

2. Windows下的區域網共享

Windows系統對於區域網內機算機的身份和許可權驗證是在一個被稱為“IPC”(命名管道)的元件技術上實現的,它實質上是Windows為了方便管理員從遠方登入管理計算機而設定的,在局域網裡它也負責檔案的共享和傳輸,所以它是Windows區域網不可缺的基礎元件。
預設情況下,區域網之間的共享服務通過來賓帳戶“Guest”的身份進行,這個帳戶在Windows系統裡許可權最少,為方便阻止來訪者越權訪問提供了基礎,同時它也是資源共享能正常進行的最小要求,任何一臺要提供區域網共享服務的計算機都必須開放來賓帳戶,命令是“net user guest /
除了使用IPC作為身份驗證,系統還使用SMB(Server Message Block)協議用來做檔案共享,這個協議與共享存在很大聯絡,稍後我們將會講到。

二. 區域網共享的實現

雖然我們可以把區域網定義為“一定數量的計算機通過互連裝置連線構成的網路”,但是僅僅使用網絡卡讓計算機構成一個物理連線的網路還不能實現真正意義的區域網,它還需要進行一定的協議設定,才能實現資源共享。
首先,同一個區域網內的計算機IP地址應該是分佈在相同網段裡的,雖然乙太網最終的地址形式為網絡卡MAC地址,但是提供給使用者層次的始終是相對好記憶的IP地址形式,而且系統互動介面和網路工具都通過IP來尋找計算機,因此為計算機配置一個符合要求的IP是必須的,這是計算機查詢彼此的基礎,除非你是在DHCP環境裡,因為這個環境的IP地址是通過伺服器自動分配的。
其次,要為區域網內的機器新增“交流語言”——區域網協議,包括最基本的NetBIOS協議和NetBEUI協議,然後還要確認“Microsoft 網路的檔案和印表機共享”已經安裝併為選中狀態,然後,還要確保系統安裝了“Microsoft 網路客戶端”,而且僅僅有這個客戶端,否則很容易導致各種奇怪的網路故障發生。
然後,使用者必須為計算機指定至少一個共享資源,如某個目錄、磁碟或印表機等,完成了這些工作,計算機才能正常實現區域網資源共享的功能。
最後,計算機必須開啟139、445這兩個埠的其中一個,它們被用作NetBIOS會話連線,而且是SMB協議依賴的埠,如果這兩個埠被阻止,對方計算機訪問共享的請求就無法迴應。
但是並非所有使用者都能很順利的享受到區域網資源共享帶來的便利,由於作業系統環境配置、協議檔案受損、某些軟體修改等因素,時常會令區域網共享出現各種各樣的問題,如果你是網路管理員,就必須學習如何分析排除大部分常見的區域網共享故障了。

三. 區域網共享故障的分析與排除

IPC、Server服務與共享故障

臨近畢業了,學生小王找了一家平面設計公司作為實習單位,這天辦公室有同事急匆匆找網路部索要防毒軟體,但不湊巧管理員外出未歸,小王為人比較熱心,雖然自己不是學網路專業的,可是想想也略懂皮毛,就自告奮勇去幫忙了,幸好只是個小病毒,他輕易就解決了,在同事的誇獎下,小王心血來潮順便給她做了系統優化。
可是才過十幾分鍾,那個同事又出來找網路部了,她說自己的機器被小王擺弄後無法開啟別人計算機的共享了,這下,小王第一次明白了什麼叫好心的後果……

我在前面說起Windows的區域網共享時,提到了IPC(Internet Process Connection),IPC是NT以上的系統為了讓程序間通訊而開放的命名管道,可以通過驗證使用者名稱和密碼獲得相應的許可權,在遠端管理計算機和檢視計算機的共享資源時使用,微軟把它用於區域網功能的實現,如果它被關閉,計算機就會出現“無法訪問網路鄰居”的故障。
在Windows NT以後的系統裡,IPC是依賴於Server服務執行的,一些習慣了單機環境的使用者可能會關閉這個服務,這樣的後果就是系統將無法提供與區域網有關的操作,使用者無法檢視別人的計算機,也無法為自己釋出任何共享。
要確認IPC和Server服務是否正常,可以在命令提示符裡輸入命令net share,如果Server服務未開啟,系統會提示“沒有啟動 Server 服務。是否可以啟動? ***Y/N*** [Y]:”,回車即可以啟動Server服務。如果Server服務已開啟,系統會列出當前的所有共享資源列表,其中至少要有名為“IPC$”的共享,否則使用者依然無法正常使用共享資源。
除了Server服務以外,還有兩個服務會對共享造成影響,分別是“Computer Browser”和“TCP/IP NetBIOS Helper Service”,前者用於儲存和交換區域網內計算機的NetBIOS名稱和共享資源列表,當一個程式需要訪問另一臺計算機的共享資源時,它會從這個列表裡查詢目標計算機,一旦該服務被禁止,IPC就認定當前沒有可供訪問的共享資源,使用者自然就沒法訪問其他計算機的共享資源了;後者主要用於在TCP/IP上傳輸的NetBIOS協議(NetBT)和NetBIOS名稱解析工作,NetBT協議為跨網段實現NetBIOS命令傳輸提供了載體,正因如此,早期的黑客入侵教材裡“關於139埠的遠端入侵”才能實現,因為NetBIOS協議被TCP封裝起來通過Internet傳輸到對方機器裡處理了,同樣對方也是用相同途徑實現資料傳輸的,否則黑客們根本無法跨網段使用網路資源對映指令“net use”。對於本地區域網來說,NetBT是SMB協議依賴的傳輸媒體,也是相當重要的。
如果這兩個服務異常終止,區域網內的共享可能就無法正常使用,這時候我們可以通過執行程式“services.msc”開啟服務管理器,在裡面查詢“Computer Browser”和“TCP/IP NetBIOS Helper Service”服務並點選“啟動”即可。

系統安全策略與共享故障

熟悉Windows系統的使用者或多或少都會接觸到“組策略”(gpedit.msc),這裡實際上是提供了一個比手工修改登錄檔更直觀的操作方法來設定系統的一些功能和使用者許可權,但是這裡的設定失誤也會影響到區域網共享資源的使用。
由於IPC本身就是用於身份驗證的,因此它對計算機賬戶的配置特別敏感,而組策略裡偏偏就有很多方面的設定是針對計算機賬戶的,其中影響最大的要數“計算機配置 – Windows配置 – 安全設定 – 本地策略 – 使用者權利指派”裡的“拒絕從網路訪問這臺計算機”,在Windows 2000系統裡預設是不做任何限制的,可是自從XP出現後,這個部分就預設多了兩個帳戶,一個是用於遠端協助(也就是被簡化過的終端服務)身份登入的3389使用者名稱,另一個則是我們區域網共享的基本成員guest!
許多使用XP系統的使用者無法正常開啟共享資源的訪問許可權,正是這個專案的限制,解決方法也很容易,只要從列表裡移除“Guest”帳戶就可以了。
除了與帳戶相關的策略,這裡還有幾個與NetBIOS和IPC相關的組策略設定,它們是位於“計算機配置 – Windows配置 – 安全設定 – 本地策略 – 安全選項”裡的“對匿名連線的額外限制”(預設為“無”),對於XP以上的系統,這裡還有“不允許SAM賬戶和共享的匿名列舉”(預設為“已停用”)、“本地賬戶的共享和安全模式”(預設為“僅來賓”),其中“對匿名連線的額外限制”的設定是可以直接扼殺共享功能的,當它被設定為“不允許列舉”時,其他計算機就無法獲取共享資源列表,如果它被設定為“沒有顯式匿名許可權就無法訪問”的話,這臺計算機就與共享功能徹底告別了,所以有時候實在找不出故障,不妨檢查一下該專案。

許可權與共享的衝突

如今的區域網普遍建立在Windows 2000以上的系統架構上執行,而且IPC的作用本來就是為了提供身份驗證,因而共享始終離不開許可權的影子,何況如果系統不會把檔案共享的訪問身份設定為最小許可權的來賓帳戶的話,別有用心的訪問者就能輕易奪取管理員級別了。但是也正因為這樣,一些時候許可權反而會成為阻撓共享順利進行的罪魁禍首。


QUOTE
知識回顧:許可權的由來
對計算機來說,系統執行的程式碼可能會對它造成危害,因此處理器產生了Ring的概念,把“裸露在外”的一部分用於人機互動的操作介面限制起來,避免它一時頭腦發熱發出有害指令;而對於操作介面部分而言,使用者的每一步操作仍然有可能傷害到它自己和底層系統——儘管它自身已經被禁止執行許多有害程式碼,但是一些不能禁止的功能卻依然在對這層安全體系作出威脅,例如格式化操作、刪除修改檔案等,這些操作在計算機看來,只是“不嚴重”的磁碟檔案處理功能,然而它忽略了一點,作業系統自身就是駐留在磁碟介質上的檔案!因此,為了保護自己,作業系統需要在Ring 3籠子限制的操作介面基礎上,再產生一個專門用來限制使用者的柵欄,這就是現在我們要討論的許可權,它是為限制使用者而存在的,而且限制對每個使用者並不是一樣的。


細心的使用者如果點選了共享資源屬性裡的“許可權”介面,可能會發現系統已經自動給這裡添加了“Everyone”許可權,這是個特殊許可權,它的存在是為了讓使用者能訪問被標記為“公有”的檔案,這也是一些程式正常執行需要的訪問許可權,任何人都能正常訪問被賦予“Everyone”許可權的檔案,包括來賓組成員。
但是有時候這個理論會因某種原因而產生混亂,進而導致來賓組成員喪失了訪問許可權,這時候,使用者只能手工為它新增一個“guest”的訪問許可權了。在一些系統上,甚至要新增“Users”或“Administrators”許可權才能實現檔案共享,但是對於這種許可權指派已經嚴重混亂的系統,我建議還是重新安裝一個算了。
對於Windows XP系統,它預設是僅僅給共享顯示一個簡單的介面而已,如果你要自定義更多東西,就必須進入“控制面板”的“資料夾選項”裡,取消“使用簡單檔案共享”的勾,而且這裡還涉及到NTFS分割槽“安全”頁設定的顯示。

隨著Windows XP的逐步推進以及安全概念的推廣,越來越多使用者開始使用NTFS格式作為自己的硬碟分割槽,這樣就在IPC的使用者身份驗證模式上又增加了一種許可權限制:NTFS許可權。


QUOTE
知識回顧:什麼是NTFS
NTFS(New Technology File System)是一個特別為網路和磁碟配額、檔案加密等管理安全特性設計的磁碟格式,只有使用NT技術的系統對它直接提供支援,也就是說,如果系統崩潰了,使用者將無法使用外面流行的普通光碟啟動工具修復系統,因此,是使用傳統的FAT32還是NTFS,一直是個倍受爭議的話題,但如果使用者要使用完全的系統許可權功能,或者要安裝作為伺服器使用,建議最好還是使用NTFS分割槽格式。
與FAT32分割槽相比,NTFS分割槽多了一個“安全”特性,在裡面,使用者可以進一步設定相關的檔案訪問許可權,而且前面提到的相關使用者組指派的檔案許可權也只有在NTFS格式分割槽上才能體現出來。


一些剛接觸NTFS分割槽的使用者經常會發現,自己機器的共享和來賓帳戶都開了,但是別人無論怎麼訪問都提示“許可權不足”,即使給共享許可權裡添加了來賓帳戶甚至管理員帳戶也無效,這是為什麼?歸根究底還是因為在NTFS這部分被攔截了,使用者必須理清一個概念,那就是如果你對某個共享目錄的訪問許可權做了什麼設定,例如新增刪除訪問成員,其相應的NTFS許可權成員也要做出相應的修改,即共享許可權成員和NTFS許可權成員必須一致或者為“Everyone”成員,在XP/2003系統裡出於安全因素,資料夾時常會缺少Everyone許可權,因此,即使你的共享許可權裡設定了Everyone或Guest,它仍然會被NTFS許可權因素阻止訪問;如果NTFS許可權成員裡有共享許可權成員的存在,那麼訪問的許可權就在共享許可權裡匹配,例如一個目錄的共享許可權裡打開了Everyone只讀訪問許可權,那麼即使在NTFS許可權裡設定了Everyone的完全控制權限,通過共享途徑訪問的使用者依然只有“只讀”的許可權,但是如果在NTFS許可權成員或共享許可權成員裡缺少Everyone的話,這個目錄就無法被訪問了。因此要獲得正常的訪問許可權,除了做好共享目錄的許可權設定工作以外,還在共享目錄上單擊右鍵---屬性----安全,在裡面新增Guest和Everyone許可權並設定相應的訪問規則(完全控制、可修改、可讀取等),如果沒有其他故障因素,你就會發現共享正常開啟訪問了。

防火牆與共享的矛盾

現在基本上已經沒有一臺計算機是不曾安裝網路防火牆和病毒防火牆的了,可是使用者在眾多的牆裡享受安全特性的時候,偶爾也會發現區域網共享莫名其妙的失敗了,如果使用者留意到防火牆正在閃爍的報警狀態,也許會發現日誌上記錄著“計算機x.x.x.x 試圖訪問本機139 – NetBIOS埠,該操作已被攔截”,這是為什麼?因為防火牆把NetBIOS的通訊給攔截掉了,別忘記NetBIOS可是區域網通訊的基礎。防火牆此舉是為了阻止前面提到的利用NetBT進行的“139入侵”模式攻擊,雖然防火牆規則裡可能寫著“允許區域網資源共享”,但是可能這條規則沒被選中,或者防火牆沒能認出這是一個區域網。
知道了緣由,解決起來也就容易多了,對於有原配規則設定的防火牆,只要勾上“允許區域網資源共享”,就能讓NetBIOS協議正常通訊了,如果沒有,就自己建立一個規則:協議方向為“入”,協議選擇“TCP”,埠範圍134—139,標誌位“SYN”,滿足時的規則為“通行”即可。一些XP系統內建的Windows防火牆ICF往往會掐了自家共享的脖子,如果是這樣,就把它關掉,因為ICF始終比不過專門的防火牆,更別指望靠它抵擋一切入侵了。

特殊的共享故障

在一小部分機器裡,網路共享是艱難的,它們怎麼做也看不到對方的計算機和資源列表,但是使用一些區域網管理工具如LANExplorer、LANetAdmin等卻能看到一切,對於這種計算機,只能通過直接輸入資源名稱或把對方共享資源通過net use命令給對映過來作為虛擬碟符才能工作,對於這種機器,它實際上並沒有故障,只是對方通過某種手段阻止了計算機向瀏覽主控伺服器通報自己的共享資源,讓整個局域網裡的瀏覽列表缺少對著臺計算機的描述,也就無法在網路鄰居里發現它了。
另一種情況是大家都能看到網路鄰居里的計算機,但某臺計算機的網路鄰居里卻是空的,而且它也無法通過輸入UNC地址(即前面提到的共享資源,它是用“\\計算機\資源”的格式表達的)來訪問到對方計算機,使用者會收到一個錯誤提示“找不到網路路徑”,這種就是真正的故障了,一般是因為計算機沒有正常獲得瀏覽列表所導致,某種原因讓它無法獲得瀏覽主控伺服器返回的資料,我們可以先嚐試使用“nbtstat -R”清空本機的瀏覽列表快取試試看,或者執行“net stop browser && net stop LmHosts && net stop Server && net start Server && net start LmHosts && net start browser”命令集來重新啟動幾個與檔案共享相關的服務,不過建議已經成為瀏覽主控伺服器身份的計算機不要輕易執行這個命令,因為它可能會讓你喪失在該工作組裡的主控身份,因為當一個網路裡的瀏覽主控伺服器停止執行時,同一工作組裡的某臺計算機會變為瀏覽主控伺服器,這個過程被稱為“瀏覽主控伺服器重選”,目的是為了保持工作組共享資源的正常訪問,但是如果不幸這個瀏覽列表被安排在一臺故障機器上,整個工作組可能就無法正常進行共享訪問了。如果經歷這些步驟還是無法檢視網路鄰居,可以試試看修改“TCP/IP協議屬性-高階-WINS”裡的“啟用TCP/IP上的NetBIOS”,最後可以嘗試刪除“Microsoft 網路的檔案和印表機共享”和“Microsoft 網路客戶端”再重新新增一次。

四. 共享與安全

也許,只要是有開放互連的地方,就會有無法逃脫安全問題的難堪,共享更是不例外,許多使用者根本不知道,預設情況下系統就已經為你開了一個龐大的後門供人來品嚐,而這個後門的官方名稱就是“預設共享”——系統會自動為使用者開放以每個碟符進行命名的隱藏共享“碟符$”,雖然網路鄰居里看不出來,但是有經驗的使用者都知道那是什麼一回事了,只需使用“\\IP\碟符$\”的格式便完成了資源的訪問操作。而另一個被稱為“預設管理共享”(ADMIN$)的共享,更是提供了一系列強大的網路指令,甚至包括關機命令。你也許會說,這不正符合微軟的構思“遠端管理”嗎?話雖如此,但是對於一個只有來賓帳戶身份標識的共享來說,它能判斷出誰是主人嗎?
因此,稍有經驗的使用者對這兩個共享都是深惡痛絕的,幸好系統提供了永久關閉它的方法:執行regedit開啟登錄檔編輯器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters”分支,新增名為“AutoShareServer”和“AutoSharewks”的DWORD型別值,均設為0,重啟計算機就會發現僅僅剩下一個維持共享功能的IPC$了。
除了這裡,共享還為我們帶來了“計劃任務”的潛在危害,即通過IPC$,入侵者可以設定機器在一個固定的時間裡執行某種操作,這實際上是通過“計劃任務”實現的,而“計劃任務”的實體為“Task Scheduler”服務項,趕快進services.msc裡禁止掉它。