查看單個文章
舊 2006-05-30, 12:57 PM   #3 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

一. 局域網內的鄰居

李小姐是某公司的文秘,昨天剛連夜趕出一份專案報告,就急匆匆帶回公司給經理為客戶們做講解了,剛離開公司那30層高的會議廳,李小姐就忙著回自己在15樓的工作崗位了,但是李小姐剛踏出電梯,就接到了參與演示的工作人員的電話,說發現報告的演示文檔不齊全,要她迅速帶上來,李小姐才發現是自己過於迷糊而少複製了幾份文件,但是她更清楚如果這個馬虎行為讓客戶看到,恐怕會對公司造成負面形象,李小姐一時陷入窘境。突然,她想到了公司的局域網……
一場危機總算解除了,李小姐通過局域網把文件傳輸上來,演示人員不動聲色的補充了剩下的文件,會議進行得很順利,大家總算鬆了口氣……

網路的基本作用是實現資源共享,而作為最小網路分佈結構的局域網(Local Area Network,LAN)更是把這個概念淋漓盡致的發展起來,那麼,局域網內的共享是怎麼實現的呢?

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 /active:yes」。
除了使用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]:」,Enter鍵即可以啟動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裡禁止掉它。

五. 結語

正如麻雀「雖小」的諺語一樣,即使只是小小的局域網,小小的共享操作,其中涉及到的東西,也沒有絕對簡單的,我們要用好科技帶來的一切,就必須掌握它的根本,成為電腦的主人。局域網技術仍然在不停發展,或許以後的文件共享概念又會再次升級,至於它是否能越來越平民化,就讓我們拭目以待吧。參考文獻:《網上的芳鄰的內幕》
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次