局域網(wǎng)的共享與安全設置法則
時間:
若木1由 分享
1. 局域網(wǎng)實現(xiàn)原理
在了解共享之前,我們需要對局域網(wǎng)的概念有個了解,局域網(wǎng)并不同于外界通訊使用的TCP/IP協(xié)議體系,它是一種建立在傳統(tǒng)以太網(wǎng)(Ethernet)結構上的網(wǎng)絡分布,除了使用TCP/IP協(xié)議,它還涉及許多協(xié)議。
在局域網(wǎng)里,計算機要查找彼此并不是通過IP進行的,而是通過網(wǎng)卡MAC地址,它是一組在生產(chǎn)時就固化的唯一標識號,根據(jù)協(xié)議規(guī)范,當一臺計算機要查找另一臺計算機時,它必須把目標計算機的IP通過ARP協(xié)議(地址解析協(xié)議)在物理網(wǎng)絡中廣播出去,“廣播”是一種讓任意一臺計算機都能收到數(shù)據(jù)的數(shù)據(jù)發(fā)送方式,計算機收到數(shù)據(jù)后就會判斷這條信息是不是發(fā)給自己的,如果是,就會返回應答,在這里,它會返回自身地址。當源計算機收到有效的回應時,它就得知了目標計算機的MAC地址并把結果保存在系統(tǒng)的地址緩沖池里,下次傳輸數(shù)據(jù)時就不需要再次發(fā)送廣播了,這個地址緩沖池會定時刷新重建,以免造成數(shù)據(jù)冗余現(xiàn)象。實際上,共享協(xié)議規(guī)定局域網(wǎng)內(nèi)的每臺啟用了文件及打印機共享服務的計算機在啟動的時候必須主動向所處網(wǎng)段廣播自己的IP和對應的MAC地址,然后由某臺計算機(通常是局域網(wǎng)內(nèi)某個工作組里第一臺啟動的計算機)承擔接收并保存這些數(shù)據(jù)的角色,這臺計算機就被稱為“瀏覽主控服務器”,它是工作組里極為重要的計算機,負責維護本工作組中的瀏覽列表及指定其他工作組的主控服務器列表,為本工作組的其他計算機和其他來訪本工作組的計算機提供瀏覽服務,它的標識是含有\(zhòng)\_MSBROWSE_名字段。這就是我們能在網(wǎng)絡鄰居看到其他計算機的來由,它實際上是一個瀏覽列表,用戶可以使用“nbtstat -r”來查看在瀏覽主控服務器上聲明了自己的NetBIOS名稱列表。
瀏覽列表記錄了整個局域網(wǎng)內(nèi)開啟的計算機的資源描述,當我們要訪問另一臺計算機的共享資源時,系統(tǒng)實際上是通過發(fā)送廣播查詢?yōu)g覽主控服務器,然后由瀏覽主控服務器提供的瀏覽列表來“發(fā)現(xiàn)”目標計算機的共享資源的。
但是僅知道彼此的地址還不夠,計算機之間必須建立一條連接的數(shù)據(jù)鏈路才能正常工作,這就需要另一個基本協(xié)議來進行了。NetBIOS(網(wǎng)絡基本輸入輸出系統(tǒng))協(xié)議是IBM開發(fā)的用于給局域網(wǎng)提供網(wǎng)絡以及其他特殊功能的命令集,幾乎每個局域網(wǎng)都必須在這種協(xié)議上面進行工作,NetBIOS相當于Intranet上的TCP/IP協(xié)議。而后推出的NetBEUI協(xié)議(NetBIOS用戶擴展接口協(xié)議)則是對前者進行了功能擴充,這幾個協(xié)議都是組成局域網(wǎng)的基本必備,最后,為了建立連接,局域網(wǎng)還需要TCP/IP協(xié)議。
2. Windows下的局域網(wǎng)共享
Windows系統(tǒng)對于局域網(wǎng)內(nèi)機算機的身份和權限驗證是在一個被稱為“IPC”(命名管道)的組件技術上實現(xiàn)的,它實質(zhì)上是Windows為了方便管理員從遠方登錄管理計算機而設置的,在局域網(wǎng)里它也負責文件的共享和傳輸,所以它是Windows局域網(wǎng)不可缺的基礎組件。
默認情況下,局域網(wǎng)之間的共享服務通過來賓帳戶“Guest”的身份進行,這個帳戶在Windows系統(tǒng)里權限最少,為方便阻止來訪者越權訪問提供了基礎,同時它也是資源共享能正常進行的最小要求,任何一臺要提供局域網(wǎng)共享服務的計算機都必須開放來賓帳戶,命令是“net user guest /active:yes”。
除了使用IPC作為身份驗證,系統(tǒng)還使用SMB(Server Message Block)協(xié)議用來做文件共享,這個協(xié)議與共享存在很大聯(lián)系,稍后我們將會講到。
二. 局域網(wǎng)共享的實現(xiàn)
雖然我們可以把局域網(wǎng)定義為“一定數(shù)量的計算機通過互連設備連接構成的網(wǎng)絡”,但是僅僅使用網(wǎng)卡讓計算機構成一個物理連接的網(wǎng)絡還不能實現(xiàn)真正意義的局域網(wǎng),它還需要進行一定的協(xié)議設置,才能實現(xiàn)資源共享。
首先,同一個局域網(wǎng)內(nèi)的計算機IP地址應該是分布在相同網(wǎng)段里的,雖然以太網(wǎng)最終的地址形式為網(wǎng)卡MAC地址,但是提供給用戶層次的始終是相對好記憶的IP地址形式,而且系統(tǒng)交互接口和網(wǎng)絡工具都通過IP來尋找計算機,因此為計算機配置一個符合要求的IP是必須的,這是計算機查找彼此的基礎,除非你是在DHCP環(huán)境里,因為這個環(huán)境的IP地址是通過服務器自動分配的。
其次,要為局域網(wǎng)內(nèi)的機器添加“交流語言”——局域網(wǎng)協(xié)議,包括最基本的NetBIOS協(xié)議和NetBEUI協(xié)議,然后還要確認“Microsoft 網(wǎng)絡的文件和打印機共享”已經(jīng)安裝并為選中狀態(tài),然后,還要確保系統(tǒng)安裝了“Microsoft 網(wǎng)絡客戶端”,而且僅僅有這個客戶端,否則很容易導致各種奇怪的網(wǎng)絡故障發(fā)生。
然后,用戶必須為計算機指定至少一個共享資源,如某個目錄、磁盤或打印機等,完成了這些工作,計算機才能正常實現(xiàn)局域網(wǎng)資源共享的功能。
最后,計算機必須開啟139、445這兩個端口的其中一個,它們被用作NetBIOS會話連接,而且是SMB協(xié)議依賴的端口,如果這兩個端口被阻止,對方計算機訪問共享的請求就無法回應。
但是并非所有用戶都能很順利的享受到局域網(wǎng)資源共享帶來的便利,由于操作系統(tǒng)環(huán)境配置、協(xié)議文件受損、某些軟件修改等因素,時常會令局域網(wǎng)共享出現(xiàn)各種各樣的問題,如果你是網(wǎng)絡管理員,就必須學習如何分析排除大部分常見的局域網(wǎng)共享故障了。
三. 局域網(wǎng)共享故障的分析與排除
IPC、Server服務與共享故障
臨近畢業(yè)了,學生小王找了一家平面設計公司作為實習單位,這天辦公室有同事急匆匆找網(wǎng)絡部索要殺毒軟件,但不湊巧管理員外出未歸,小王為人比較熱心,雖然自己不是學網(wǎng)絡專業(yè)的,可是想想也略懂皮毛,就自告奮勇去幫忙了,幸好只是個小病毒,他輕易就解決了,在同事的夸獎下,小王心血來潮順便給她做了系統(tǒng)優(yōu)化。
可是才過十幾分鐘,那個同事又出來找網(wǎng)絡部了,她說自己的機器被小王擺弄后無法打開別人計算機的共享了,這下,小王第一次明白了什么叫好心的后果……
我在前面說起Windows的局域網(wǎng)共享時,提到了IPC(Internet Process Connection),IPC是NT以上的系統(tǒng)為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用,微軟把它用于局域網(wǎng)功能的實現(xiàn),如果它被關閉,計算機就會出現(xiàn)“無法訪問網(wǎng)絡鄰居”的故障。
在Windows NT以后的系統(tǒng)里,IPC是依賴于Server服務運行的,一些習慣了單機環(huán)境的用戶可能會關閉這個服務,這樣的后果就是系統(tǒng)將無法提供與局域網(wǎng)有關的操作,用戶無法查看別人的計算機,也無法為自己發(fā)布任何共享。
要確認IPC和Server服務是否正常,可以在命令提示符里輸入命令net share,如果Server服務未開啟,系統(tǒng)會提示“沒有啟動 Server 服務。是否可以啟動? (Y/N) [Y]:”,回車即可以啟動Server服務。如果Server服務已開啟,系統(tǒng)會列出當前的所有共享資源列表,其中至少要有名為“IPC$”的共享,否則用戶依然無法正常使用共享資源。
除了Server服務以外,還有兩個服務會對共享造成影響,分別是“Computer Browser”和“TCP/IP NetBIOS Helper Service”,前者用于保存和交換局域網(wǎng)內(nèi)計算機的NetBIOS名稱和共享資源列表,當一個程序需要訪問另一臺計算機的共享資源時,它會從這個列表里查詢目標計算機,一旦該服務被禁止,IPC就認定當前沒有可供訪問的共享資源,用戶自然就沒法訪問其他計算機的共享資源了;后者主要用于在TCP/IP上傳輸?shù)腘etBIOS協(xié)議(NetBT)和NetBIOS名稱解析工作,NetBT協(xié)議為跨網(wǎng)段實現(xiàn)NetBIOS命令傳輸提供了載體,正因如此,早期的黑客入侵教材里“關于139端口的遠程入侵”才能實現(xiàn),因為NetBIOS協(xié)議被TCP封裝起來通過Internet傳輸?shù)綄Ψ綑C器里處理了,同樣對方也是用相同途徑實現(xiàn)數(shù)據(jù)傳輸?shù)模駝t黑客們根本無法跨網(wǎng)段使用網(wǎng)絡資源映射指令“net use”。對于本地局域網(wǎng)來說,NetBT是SMB協(xié)議依賴的傳輸媒體,也是相當重要的。
如果這兩個服務異常終止,局域網(wǎng)內(nèi)的共享可能就無法正常使用,這時候我們可以通過執(zhí)行程序“services.msc”打開服務管理器,在里面查找“Computer Browser”和“TCP/IP NetBIOS Helper Service”服務并點擊“啟動”即可。
系統(tǒng)安全策略與共享故障
熟悉Windows系統(tǒng)的用戶或多或少都會接觸到“組策略”(gpedit.msc),這里實際上是提供了一個比手工修改注冊表更直觀的操作方法來設置系統(tǒng)的一些功能和用戶權限,但是這里的設置失誤也會影響到局域網(wǎng)共享資源的使用。
由于IPC本身就是用于身份驗證的,因此它對計算機賬戶的配置特別敏感,而組策略里偏偏就有很多方面的設置是針對計算機賬戶的,其中影響最大的要數(shù)“計算機配置 – Windows配置 – 安全設置 – 本地策略 – 用戶權利指派”里的“拒絕從網(wǎng)絡訪問這臺計算機”,在Windows 2000系統(tǒng)里默認是不做任何限制的,可是自從XP出現(xiàn)后,這個部分就默認多了兩個帳戶,一個是用于遠程協(xié)助(也就是被簡化過的終端服務)身份登錄的3389用戶名,另一個則是我們局域網(wǎng)共享的基本成員guest!
許多使用XP系統(tǒng)的用戶無法正常開啟共享資源的訪問權限,正是這個項目的限制,解決方法也很容易,只要從列表里移除“Guest”帳戶就可以了。
除了與帳戶相關的策略,這里還有幾個與NetBIOS和IPC相關的組策略設置,它們是位于“計算機配置 – Windows配置 – 安全設置 – 本地策略 – 安全選項”里的“對匿名連接的額外限制”(默認為“無”),對于XP以上的系統(tǒng),這里還有“不允許SAM賬戶和共享的匿名枚舉”(默認為“已停用”)、“本地賬戶的共享和安全模式”(默認為“僅來賓”),其中“對匿名連接的額外限制”的設置是可以直接扼殺共享功能的,當它被設置為“不允許枚舉”時,其他計算機就無法獲取共享資源列表,如果它被設置為“沒有顯式匿名權限就無法訪問”的話,這臺計算機就與共享功能徹底告別了,所以有時候?qū)嵲谡也怀龉收?,不妨檢查一下該項目。
權限與共享的沖突
如今的局域網(wǎng)普遍建立在Windows 2000以上的系統(tǒng)架構上運行,而且IPC的作用本來就是為了提供身份驗證,因而共享始終離不開權限的影子,何況如果系統(tǒng)不會把文件共享的訪問身份設置為最小權限的來賓帳戶的話,別有用心的訪問者就能輕易奪取管理員級別了。但是也正因為這樣,一些時候權限反而會成為阻撓共享順利進行的罪魁禍首。
QUOTE
知識回顧:權限的由來
對計算機來說,系統(tǒng)執(zhí)行的代碼可能會對它造成危害,因此處理器產(chǎn)生了Ring的概念,把“裸露在外”的一部分用于人機交互的操作界面限制起來,避免它一時頭腦發(fā)熱發(fā)出有害指令;而對于操作界面部分而言,用戶的每一步操作仍然有可能傷害到它自己和底層系統(tǒng)——盡管它自身已經(jīng)被禁止執(zhí)行許多有害代碼,但是一些不能禁止的功能卻依然在對這層安全體系作出威脅,例如格式化操作、刪除修改文件等,這些操作在計算機看來,只是“不嚴重”的磁盤文件處理功能,然而它忽略了一點,操作系統(tǒng)自身就是駐留在磁盤介質(zhì)上的文件!因此,為了保護自己,操作系統(tǒng)需要在Ring 3籠子限制的操作界面基礎上,再產(chǎn)生一個專門用來限制用戶的柵欄,這就是現(xiàn)在我們要討論的權限,它是為限制用戶而存在的,而且限制對每個用戶并不是一樣的。
細心的用戶如果點擊了共享資源屬性里的“權限”界面,可能會發(fā)現(xiàn)系統(tǒng)已經(jīng)自動給這里添加了“Everyone”權限,這是個特殊權限,它的存在是為了讓用戶能訪問被標記為“公有”的文件,這也是一些程序正常運行需要的訪問權限,任何人都能正常訪問被賦予“Everyone”權限的文件,包括來賓組成員。
但是有時候這個理論會因某種原因而產(chǎn)生混亂,進而導致來賓組成員喪失了訪問權限,這時候,用戶只能手工為它添加一個“guest”的訪問權限了。在一些系統(tǒng)上,甚至要添加“Users”或“Administrators”權限才能實現(xiàn)文件共享,但是對于這種權限指派已經(jīng)嚴重混亂的系統(tǒng),我建議還是重新安裝一個算了。
對于Windows XP系統(tǒng),它默認是僅僅給共享顯示一個簡單的界面而已,如果你要自定義更多東西,就必須進入“控制面板”的“文件夾選項”里,取消“使用簡單文件共享”的勾,而且這里還涉及到NTFS分區(qū)“安全”頁設置的顯示。
隨著Windows XP的逐步推進以及安全概念的推廣,越來越多用戶開始使用NTFS格式作為自己的硬盤分區(qū),這樣就在IPC的用戶身份驗證模式上又增加了一種權限限制:NTFS權限。
QUOTE
知識回顧:什么是NTFS
NTFS(New Technology File System)是一個特別為網(wǎng)絡和磁盤配額、文件加密等管理安全特性設計的磁盤格式,只有使用NT技術的系統(tǒng)對它直接提供支持,也就是說,如果系統(tǒng)崩潰了,用戶將無法使用外面流行的普通光盤啟動工具修復系統(tǒng),因此,是使用傳統(tǒng)的FAT32還是NTFS,一直是個倍受爭議的話題,但如果用戶要使用完全的系統(tǒng)權限功能,或者要安裝作為服務器使用,建議最好還是使用NTFS分區(qū)格式。
與FAT32分區(qū)相比,NTFS分區(qū)多了一個“安全”特性,在里面,用戶可以進一步設置相關的文件訪問權限,而且前面提到的相關用戶組指派的文件權限也只有在NTFS格式分區(qū)上才能體現(xiàn)出來。
一些剛接觸NTFS分區(qū)的用戶經(jīng)常會發(fā)現(xiàn),自己機器的共享和來賓帳戶都開了,但是別人無論怎么訪問都提示“權限不足”,即使給共享權限里添加了來賓帳戶甚至管理員帳戶也無效,這是為什么?歸根究底還是因為在NTFS這部分被攔截了,用戶必須理清一個概念,那就是如果你對某個共享目錄的訪問權限做了什么設置,例如添加刪除訪問成員,其相應的NTFS權限成員也要做出相應的修改,即共享權限成員和NTFS權限成員必須一致或者為“Everyone”成員,在XP/2003系統(tǒng)里出于安全因素,文件夾時常會缺少Everyone權限,因此,即使你的共享權限里設置了Everyone或Guest,它仍然會被NTFS權限因素阻止訪問;如果NTFS權限成員里有共享權限成員的存在,那么訪問的權限就在共享權限里匹配,例如一個目錄的共享權限里打開了Everyone只讀訪問權限,那么即使在NTFS權限里設置了Everyone的完全控制權限,通過共享途徑訪問的用戶依然只有“只讀”的權限,但是如果在NTFS權限成員或共享權限成員里缺少Everyone的話,這個目錄就無法被訪問了。因此要獲得正常的訪問權限,除了做好共享目錄的權限設置工作以外,還在共享目錄上單擊右鍵---屬性----安全,在里面添加Guest和Everyone權限并設置相應的訪問規(guī)則(完全控制、可修改、可讀取等),如果沒有其他故障因素,你就會發(fā)現(xiàn)共享正常開啟訪問了。
防火墻與共享的矛盾
現(xiàn)在基本上已經(jīng)沒有一臺計算機是不曾安裝網(wǎng)絡防火墻和病毒防火墻的了,可是用戶在眾多的墻里享受安全特性的時候,偶爾也會發(fā)現(xiàn)局域網(wǎng)共享莫名其妙的失敗了,如果用戶留意到防火墻正在閃爍的報警狀態(tài),也許會發(fā)現(xiàn)日志上記錄著“計算機x.x.x.x 試圖訪問本機139 – NetBIOS端口,該操作已被攔截”,這是為什么?因為防火墻把NetBIOS的通訊給攔截掉了,別忘記NetBIOS可是局域網(wǎng)通訊的基礎。防火墻此舉是為了阻止前面提到的利用NetBT進行的“139入侵”模式攻擊,雖然防火墻規(guī)則里可能寫著“允許局域網(wǎng)資源共享”,但是可能這條規(guī)則沒被選中,或者防火墻沒能認出這是一個局域網(wǎng)。
知道了緣由,解決起來也就容易多了,對于有原配規(guī)則設置的防火墻,只要勾上“允許局域網(wǎng)資源共享”,就能讓NetBIOS協(xié)議正常通訊了,如果沒有,就自己建立一個規(guī)則:協(xié)議方向為“入”,協(xié)議選擇“TCP”,端口范圍134—139,標志位“SYN”,滿足時的規(guī)則為“通行”即可。一些XP系統(tǒng)內(nèi)置的Windows防火墻ICF往往會掐了自家共享的脖子,如果是這樣,就把它關掉,因為ICF始終比不過專門的防火墻,更別指望靠它抵擋一切入侵了。
特殊的共享故障
在一小部分機器里,網(wǎng)絡共享是艱難的,它們怎么做也看不到對方的計算機和資源列表,但是使用一些局域網(wǎng)管理工具如LANExplorer、LANetAdmin等卻能看到一切,對于這種計算機,只能通過直接輸入資源名稱或把對方共享資源通過net use命令給映射過來作為虛擬盤符才能工作,對于這種機器,它實際上并沒有故障,只是對方通過某種手段阻止了計算機向瀏覽主控服務器通報自己的共享資源,讓整個局域網(wǎng)里的瀏覽列表缺少對著臺計算機的描述,也就無法在網(wǎng)絡鄰居里發(fā)現(xiàn)它了。
另一種情況是大家都能看到網(wǎng)絡鄰居里的計算機,但某臺計算機的網(wǎng)絡鄰居里卻是空的,而且它也無法通過輸入UNC地址(即前面提到的共享資源,它是用“\\計算機\資源”的格式表達的)來訪問到對方計算機,用戶會收到一個錯誤提示“找不到網(wǎng)絡路徑”,這種就是真正的故障了,一般是因為計算機沒有正常獲得瀏覽列表所導致,某種原因讓它無法獲得瀏覽主控服務器返回的數(shù)據(jù),我們可以先嘗試使用“nbtstat -R”清空本機的瀏覽列表緩存試試看,或者運行“net stop browser && net stop LmHosts && net stop Server && net start Server && net start LmHosts && net start browser”命令集來重新啟動幾個與文件共享相關的服務,不過建議已經(jīng)成為瀏覽主控服務器身份的計算機不要輕易執(zhí)行這個命令,因為它可能會讓你喪失在該工作組里的主控身份,因為當一個網(wǎng)絡里的瀏覽主控服務器停止運行時,同一工作組里的某臺計算機會變?yōu)闉g覽主控服務器,這個過程被稱為“瀏覽主控服務器重選”,目的是為了保持工作組共享資源的正常訪問,但是如果不幸這個瀏覽列表被安排在一臺故障機器上,整個工作組可能就無法正常進行共享訪問了。如果經(jīng)歷這些步驟還是無法查看網(wǎng)絡鄰居,可以試試看修改“TCP/IP協(xié)議屬性-高級-WINS”里的“啟用TCP/IP上的NetBIOS”,最后可以嘗試刪除“Microsoft 網(wǎng)絡的文件和打印機共享”和“Microsoft 網(wǎng)絡客戶端”再重新添加一次。
四. 共享與安全
也許,只要是有開放互連的地方,就會有無法逃脫安全問題的難堪,共享更是不例外,許多用戶根本不知道,默認情況下系統(tǒng)就已經(jīng)為你開了一個龐大的后門供人來品嘗,而這個后門的官方名稱就是“默認共享”——系統(tǒng)會自動為用戶開放以每個盤符進行命名的隱藏共享“盤符$”,雖然網(wǎng)絡鄰居里看不出來,但是有經(jīng)驗的用戶都知道那是什么一回事了,只需使用“\\IP\盤符$\”的格式便完成了資源的訪問操作。而另一個被稱為“默認管理共享”(ADMIN$)的共享,更是提供了一系列強大的網(wǎng)絡指令,甚至包括關機命令。你也許會說,這不正符合微軟的構思“遠程管理”嗎?話雖如此,但是對于一個只有來賓帳戶身份標識的共享來說,它能判斷出誰是主人嗎?
因此,稍有經(jīng)驗的用戶對這兩個共享都是深惡痛絕的,幸好系統(tǒng)提供了永久關閉它的方法:運行regedit開啟注冊表編輯器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters”分支,添加名為“AutoShareServer”和“AutoSharewks”的DWORD類型值,均設為0,重啟計算機就會發(fā)現(xiàn)僅僅剩下一個維持共享功能的IPC$了。
除了這里,共享還為我們帶來了“計劃任務”的潛在危害,即通過IPC$,入侵者可以設定機器在一個固定的時間里執(zhí)行某種操作,這實際上是通過“計劃任務”實現(xiàn)的,而“計劃任務”的實體為“Task Scheduler”服務項,趕快進services.msc里禁止掉它。
在了解共享之前,我們需要對局域網(wǎng)的概念有個了解,局域網(wǎng)并不同于外界通訊使用的TCP/IP協(xié)議體系,它是一種建立在傳統(tǒng)以太網(wǎng)(Ethernet)結構上的網(wǎng)絡分布,除了使用TCP/IP協(xié)議,它還涉及許多協(xié)議。
在局域網(wǎng)里,計算機要查找彼此并不是通過IP進行的,而是通過網(wǎng)卡MAC地址,它是一組在生產(chǎn)時就固化的唯一標識號,根據(jù)協(xié)議規(guī)范,當一臺計算機要查找另一臺計算機時,它必須把目標計算機的IP通過ARP協(xié)議(地址解析協(xié)議)在物理網(wǎng)絡中廣播出去,“廣播”是一種讓任意一臺計算機都能收到數(shù)據(jù)的數(shù)據(jù)發(fā)送方式,計算機收到數(shù)據(jù)后就會判斷這條信息是不是發(fā)給自己的,如果是,就會返回應答,在這里,它會返回自身地址。當源計算機收到有效的回應時,它就得知了目標計算機的MAC地址并把結果保存在系統(tǒng)的地址緩沖池里,下次傳輸數(shù)據(jù)時就不需要再次發(fā)送廣播了,這個地址緩沖池會定時刷新重建,以免造成數(shù)據(jù)冗余現(xiàn)象。實際上,共享協(xié)議規(guī)定局域網(wǎng)內(nèi)的每臺啟用了文件及打印機共享服務的計算機在啟動的時候必須主動向所處網(wǎng)段廣播自己的IP和對應的MAC地址,然后由某臺計算機(通常是局域網(wǎng)內(nèi)某個工作組里第一臺啟動的計算機)承擔接收并保存這些數(shù)據(jù)的角色,這臺計算機就被稱為“瀏覽主控服務器”,它是工作組里極為重要的計算機,負責維護本工作組中的瀏覽列表及指定其他工作組的主控服務器列表,為本工作組的其他計算機和其他來訪本工作組的計算機提供瀏覽服務,它的標識是含有\(zhòng)\_MSBROWSE_名字段。這就是我們能在網(wǎng)絡鄰居看到其他計算機的來由,它實際上是一個瀏覽列表,用戶可以使用“nbtstat -r”來查看在瀏覽主控服務器上聲明了自己的NetBIOS名稱列表。
瀏覽列表記錄了整個局域網(wǎng)內(nèi)開啟的計算機的資源描述,當我們要訪問另一臺計算機的共享資源時,系統(tǒng)實際上是通過發(fā)送廣播查詢?yōu)g覽主控服務器,然后由瀏覽主控服務器提供的瀏覽列表來“發(fā)現(xiàn)”目標計算機的共享資源的。
但是僅知道彼此的地址還不夠,計算機之間必須建立一條連接的數(shù)據(jù)鏈路才能正常工作,這就需要另一個基本協(xié)議來進行了。NetBIOS(網(wǎng)絡基本輸入輸出系統(tǒng))協(xié)議是IBM開發(fā)的用于給局域網(wǎng)提供網(wǎng)絡以及其他特殊功能的命令集,幾乎每個局域網(wǎng)都必須在這種協(xié)議上面進行工作,NetBIOS相當于Intranet上的TCP/IP協(xié)議。而后推出的NetBEUI協(xié)議(NetBIOS用戶擴展接口協(xié)議)則是對前者進行了功能擴充,這幾個協(xié)議都是組成局域網(wǎng)的基本必備,最后,為了建立連接,局域網(wǎng)還需要TCP/IP協(xié)議。
2. Windows下的局域網(wǎng)共享
Windows系統(tǒng)對于局域網(wǎng)內(nèi)機算機的身份和權限驗證是在一個被稱為“IPC”(命名管道)的組件技術上實現(xiàn)的,它實質(zhì)上是Windows為了方便管理員從遠方登錄管理計算機而設置的,在局域網(wǎng)里它也負責文件的共享和傳輸,所以它是Windows局域網(wǎng)不可缺的基礎組件。
默認情況下,局域網(wǎng)之間的共享服務通過來賓帳戶“Guest”的身份進行,這個帳戶在Windows系統(tǒng)里權限最少,為方便阻止來訪者越權訪問提供了基礎,同時它也是資源共享能正常進行的最小要求,任何一臺要提供局域網(wǎng)共享服務的計算機都必須開放來賓帳戶,命令是“net user guest /active:yes”。
除了使用IPC作為身份驗證,系統(tǒng)還使用SMB(Server Message Block)協(xié)議用來做文件共享,這個協(xié)議與共享存在很大聯(lián)系,稍后我們將會講到。
二. 局域網(wǎng)共享的實現(xiàn)
雖然我們可以把局域網(wǎng)定義為“一定數(shù)量的計算機通過互連設備連接構成的網(wǎng)絡”,但是僅僅使用網(wǎng)卡讓計算機構成一個物理連接的網(wǎng)絡還不能實現(xiàn)真正意義的局域網(wǎng),它還需要進行一定的協(xié)議設置,才能實現(xiàn)資源共享。
首先,同一個局域網(wǎng)內(nèi)的計算機IP地址應該是分布在相同網(wǎng)段里的,雖然以太網(wǎng)最終的地址形式為網(wǎng)卡MAC地址,但是提供給用戶層次的始終是相對好記憶的IP地址形式,而且系統(tǒng)交互接口和網(wǎng)絡工具都通過IP來尋找計算機,因此為計算機配置一個符合要求的IP是必須的,這是計算機查找彼此的基礎,除非你是在DHCP環(huán)境里,因為這個環(huán)境的IP地址是通過服務器自動分配的。
其次,要為局域網(wǎng)內(nèi)的機器添加“交流語言”——局域網(wǎng)協(xié)議,包括最基本的NetBIOS協(xié)議和NetBEUI協(xié)議,然后還要確認“Microsoft 網(wǎng)絡的文件和打印機共享”已經(jīng)安裝并為選中狀態(tài),然后,還要確保系統(tǒng)安裝了“Microsoft 網(wǎng)絡客戶端”,而且僅僅有這個客戶端,否則很容易導致各種奇怪的網(wǎng)絡故障發(fā)生。
然后,用戶必須為計算機指定至少一個共享資源,如某個目錄、磁盤或打印機等,完成了這些工作,計算機才能正常實現(xiàn)局域網(wǎng)資源共享的功能。
最后,計算機必須開啟139、445這兩個端口的其中一個,它們被用作NetBIOS會話連接,而且是SMB協(xié)議依賴的端口,如果這兩個端口被阻止,對方計算機訪問共享的請求就無法回應。
但是并非所有用戶都能很順利的享受到局域網(wǎng)資源共享帶來的便利,由于操作系統(tǒng)環(huán)境配置、協(xié)議文件受損、某些軟件修改等因素,時常會令局域網(wǎng)共享出現(xiàn)各種各樣的問題,如果你是網(wǎng)絡管理員,就必須學習如何分析排除大部分常見的局域網(wǎng)共享故障了。
三. 局域網(wǎng)共享故障的分析與排除
IPC、Server服務與共享故障
臨近畢業(yè)了,學生小王找了一家平面設計公司作為實習單位,這天辦公室有同事急匆匆找網(wǎng)絡部索要殺毒軟件,但不湊巧管理員外出未歸,小王為人比較熱心,雖然自己不是學網(wǎng)絡專業(yè)的,可是想想也略懂皮毛,就自告奮勇去幫忙了,幸好只是個小病毒,他輕易就解決了,在同事的夸獎下,小王心血來潮順便給她做了系統(tǒng)優(yōu)化。
可是才過十幾分鐘,那個同事又出來找網(wǎng)絡部了,她說自己的機器被小王擺弄后無法打開別人計算機的共享了,這下,小王第一次明白了什么叫好心的后果……
我在前面說起Windows的局域網(wǎng)共享時,提到了IPC(Internet Process Connection),IPC是NT以上的系統(tǒng)為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用,微軟把它用于局域網(wǎng)功能的實現(xiàn),如果它被關閉,計算機就會出現(xiàn)“無法訪問網(wǎng)絡鄰居”的故障。
在Windows NT以后的系統(tǒng)里,IPC是依賴于Server服務運行的,一些習慣了單機環(huán)境的用戶可能會關閉這個服務,這樣的后果就是系統(tǒng)將無法提供與局域網(wǎng)有關的操作,用戶無法查看別人的計算機,也無法為自己發(fā)布任何共享。
要確認IPC和Server服務是否正常,可以在命令提示符里輸入命令net share,如果Server服務未開啟,系統(tǒng)會提示“沒有啟動 Server 服務。是否可以啟動? (Y/N) [Y]:”,回車即可以啟動Server服務。如果Server服務已開啟,系統(tǒng)會列出當前的所有共享資源列表,其中至少要有名為“IPC$”的共享,否則用戶依然無法正常使用共享資源。
除了Server服務以外,還有兩個服務會對共享造成影響,分別是“Computer Browser”和“TCP/IP NetBIOS Helper Service”,前者用于保存和交換局域網(wǎng)內(nèi)計算機的NetBIOS名稱和共享資源列表,當一個程序需要訪問另一臺計算機的共享資源時,它會從這個列表里查詢目標計算機,一旦該服務被禁止,IPC就認定當前沒有可供訪問的共享資源,用戶自然就沒法訪問其他計算機的共享資源了;后者主要用于在TCP/IP上傳輸?shù)腘etBIOS協(xié)議(NetBT)和NetBIOS名稱解析工作,NetBT協(xié)議為跨網(wǎng)段實現(xiàn)NetBIOS命令傳輸提供了載體,正因如此,早期的黑客入侵教材里“關于139端口的遠程入侵”才能實現(xiàn),因為NetBIOS協(xié)議被TCP封裝起來通過Internet傳輸?shù)綄Ψ綑C器里處理了,同樣對方也是用相同途徑實現(xiàn)數(shù)據(jù)傳輸?shù)模駝t黑客們根本無法跨網(wǎng)段使用網(wǎng)絡資源映射指令“net use”。對于本地局域網(wǎng)來說,NetBT是SMB協(xié)議依賴的傳輸媒體,也是相當重要的。
如果這兩個服務異常終止,局域網(wǎng)內(nèi)的共享可能就無法正常使用,這時候我們可以通過執(zhí)行程序“services.msc”打開服務管理器,在里面查找“Computer Browser”和“TCP/IP NetBIOS Helper Service”服務并點擊“啟動”即可。
系統(tǒng)安全策略與共享故障
熟悉Windows系統(tǒng)的用戶或多或少都會接觸到“組策略”(gpedit.msc),這里實際上是提供了一個比手工修改注冊表更直觀的操作方法來設置系統(tǒng)的一些功能和用戶權限,但是這里的設置失誤也會影響到局域網(wǎng)共享資源的使用。
由于IPC本身就是用于身份驗證的,因此它對計算機賬戶的配置特別敏感,而組策略里偏偏就有很多方面的設置是針對計算機賬戶的,其中影響最大的要數(shù)“計算機配置 – Windows配置 – 安全設置 – 本地策略 – 用戶權利指派”里的“拒絕從網(wǎng)絡訪問這臺計算機”,在Windows 2000系統(tǒng)里默認是不做任何限制的,可是自從XP出現(xiàn)后,這個部分就默認多了兩個帳戶,一個是用于遠程協(xié)助(也就是被簡化過的終端服務)身份登錄的3389用戶名,另一個則是我們局域網(wǎng)共享的基本成員guest!
許多使用XP系統(tǒng)的用戶無法正常開啟共享資源的訪問權限,正是這個項目的限制,解決方法也很容易,只要從列表里移除“Guest”帳戶就可以了。
除了與帳戶相關的策略,這里還有幾個與NetBIOS和IPC相關的組策略設置,它們是位于“計算機配置 – Windows配置 – 安全設置 – 本地策略 – 安全選項”里的“對匿名連接的額外限制”(默認為“無”),對于XP以上的系統(tǒng),這里還有“不允許SAM賬戶和共享的匿名枚舉”(默認為“已停用”)、“本地賬戶的共享和安全模式”(默認為“僅來賓”),其中“對匿名連接的額外限制”的設置是可以直接扼殺共享功能的,當它被設置為“不允許枚舉”時,其他計算機就無法獲取共享資源列表,如果它被設置為“沒有顯式匿名權限就無法訪問”的話,這臺計算機就與共享功能徹底告別了,所以有時候?qū)嵲谡也怀龉收?,不妨檢查一下該項目。
權限與共享的沖突
如今的局域網(wǎng)普遍建立在Windows 2000以上的系統(tǒng)架構上運行,而且IPC的作用本來就是為了提供身份驗證,因而共享始終離不開權限的影子,何況如果系統(tǒng)不會把文件共享的訪問身份設置為最小權限的來賓帳戶的話,別有用心的訪問者就能輕易奪取管理員級別了。但是也正因為這樣,一些時候權限反而會成為阻撓共享順利進行的罪魁禍首。
QUOTE
知識回顧:權限的由來
對計算機來說,系統(tǒng)執(zhí)行的代碼可能會對它造成危害,因此處理器產(chǎn)生了Ring的概念,把“裸露在外”的一部分用于人機交互的操作界面限制起來,避免它一時頭腦發(fā)熱發(fā)出有害指令;而對于操作界面部分而言,用戶的每一步操作仍然有可能傷害到它自己和底層系統(tǒng)——盡管它自身已經(jīng)被禁止執(zhí)行許多有害代碼,但是一些不能禁止的功能卻依然在對這層安全體系作出威脅,例如格式化操作、刪除修改文件等,這些操作在計算機看來,只是“不嚴重”的磁盤文件處理功能,然而它忽略了一點,操作系統(tǒng)自身就是駐留在磁盤介質(zhì)上的文件!因此,為了保護自己,操作系統(tǒng)需要在Ring 3籠子限制的操作界面基礎上,再產(chǎn)生一個專門用來限制用戶的柵欄,這就是現(xiàn)在我們要討論的權限,它是為限制用戶而存在的,而且限制對每個用戶并不是一樣的。
細心的用戶如果點擊了共享資源屬性里的“權限”界面,可能會發(fā)現(xiàn)系統(tǒng)已經(jīng)自動給這里添加了“Everyone”權限,這是個特殊權限,它的存在是為了讓用戶能訪問被標記為“公有”的文件,這也是一些程序正常運行需要的訪問權限,任何人都能正常訪問被賦予“Everyone”權限的文件,包括來賓組成員。
但是有時候這個理論會因某種原因而產(chǎn)生混亂,進而導致來賓組成員喪失了訪問權限,這時候,用戶只能手工為它添加一個“guest”的訪問權限了。在一些系統(tǒng)上,甚至要添加“Users”或“Administrators”權限才能實現(xiàn)文件共享,但是對于這種權限指派已經(jīng)嚴重混亂的系統(tǒng),我建議還是重新安裝一個算了。
對于Windows XP系統(tǒng),它默認是僅僅給共享顯示一個簡單的界面而已,如果你要自定義更多東西,就必須進入“控制面板”的“文件夾選項”里,取消“使用簡單文件共享”的勾,而且這里還涉及到NTFS分區(qū)“安全”頁設置的顯示。
隨著Windows XP的逐步推進以及安全概念的推廣,越來越多用戶開始使用NTFS格式作為自己的硬盤分區(qū),這樣就在IPC的用戶身份驗證模式上又增加了一種權限限制:NTFS權限。
QUOTE
知識回顧:什么是NTFS
NTFS(New Technology File System)是一個特別為網(wǎng)絡和磁盤配額、文件加密等管理安全特性設計的磁盤格式,只有使用NT技術的系統(tǒng)對它直接提供支持,也就是說,如果系統(tǒng)崩潰了,用戶將無法使用外面流行的普通光盤啟動工具修復系統(tǒng),因此,是使用傳統(tǒng)的FAT32還是NTFS,一直是個倍受爭議的話題,但如果用戶要使用完全的系統(tǒng)權限功能,或者要安裝作為服務器使用,建議最好還是使用NTFS分區(qū)格式。
與FAT32分區(qū)相比,NTFS分區(qū)多了一個“安全”特性,在里面,用戶可以進一步設置相關的文件訪問權限,而且前面提到的相關用戶組指派的文件權限也只有在NTFS格式分區(qū)上才能體現(xiàn)出來。
一些剛接觸NTFS分區(qū)的用戶經(jīng)常會發(fā)現(xiàn),自己機器的共享和來賓帳戶都開了,但是別人無論怎么訪問都提示“權限不足”,即使給共享權限里添加了來賓帳戶甚至管理員帳戶也無效,這是為什么?歸根究底還是因為在NTFS這部分被攔截了,用戶必須理清一個概念,那就是如果你對某個共享目錄的訪問權限做了什么設置,例如添加刪除訪問成員,其相應的NTFS權限成員也要做出相應的修改,即共享權限成員和NTFS權限成員必須一致或者為“Everyone”成員,在XP/2003系統(tǒng)里出于安全因素,文件夾時常會缺少Everyone權限,因此,即使你的共享權限里設置了Everyone或Guest,它仍然會被NTFS權限因素阻止訪問;如果NTFS權限成員里有共享權限成員的存在,那么訪問的權限就在共享權限里匹配,例如一個目錄的共享權限里打開了Everyone只讀訪問權限,那么即使在NTFS權限里設置了Everyone的完全控制權限,通過共享途徑訪問的用戶依然只有“只讀”的權限,但是如果在NTFS權限成員或共享權限成員里缺少Everyone的話,這個目錄就無法被訪問了。因此要獲得正常的訪問權限,除了做好共享目錄的權限設置工作以外,還在共享目錄上單擊右鍵---屬性----安全,在里面添加Guest和Everyone權限并設置相應的訪問規(guī)則(完全控制、可修改、可讀取等),如果沒有其他故障因素,你就會發(fā)現(xiàn)共享正常開啟訪問了。
防火墻與共享的矛盾
現(xiàn)在基本上已經(jīng)沒有一臺計算機是不曾安裝網(wǎng)絡防火墻和病毒防火墻的了,可是用戶在眾多的墻里享受安全特性的時候,偶爾也會發(fā)現(xiàn)局域網(wǎng)共享莫名其妙的失敗了,如果用戶留意到防火墻正在閃爍的報警狀態(tài),也許會發(fā)現(xiàn)日志上記錄著“計算機x.x.x.x 試圖訪問本機139 – NetBIOS端口,該操作已被攔截”,這是為什么?因為防火墻把NetBIOS的通訊給攔截掉了,別忘記NetBIOS可是局域網(wǎng)通訊的基礎。防火墻此舉是為了阻止前面提到的利用NetBT進行的“139入侵”模式攻擊,雖然防火墻規(guī)則里可能寫著“允許局域網(wǎng)資源共享”,但是可能這條規(guī)則沒被選中,或者防火墻沒能認出這是一個局域網(wǎng)。
知道了緣由,解決起來也就容易多了,對于有原配規(guī)則設置的防火墻,只要勾上“允許局域網(wǎng)資源共享”,就能讓NetBIOS協(xié)議正常通訊了,如果沒有,就自己建立一個規(guī)則:協(xié)議方向為“入”,協(xié)議選擇“TCP”,端口范圍134—139,標志位“SYN”,滿足時的規(guī)則為“通行”即可。一些XP系統(tǒng)內(nèi)置的Windows防火墻ICF往往會掐了自家共享的脖子,如果是這樣,就把它關掉,因為ICF始終比不過專門的防火墻,更別指望靠它抵擋一切入侵了。
特殊的共享故障
在一小部分機器里,網(wǎng)絡共享是艱難的,它們怎么做也看不到對方的計算機和資源列表,但是使用一些局域網(wǎng)管理工具如LANExplorer、LANetAdmin等卻能看到一切,對于這種計算機,只能通過直接輸入資源名稱或把對方共享資源通過net use命令給映射過來作為虛擬盤符才能工作,對于這種機器,它實際上并沒有故障,只是對方通過某種手段阻止了計算機向瀏覽主控服務器通報自己的共享資源,讓整個局域網(wǎng)里的瀏覽列表缺少對著臺計算機的描述,也就無法在網(wǎng)絡鄰居里發(fā)現(xiàn)它了。
另一種情況是大家都能看到網(wǎng)絡鄰居里的計算機,但某臺計算機的網(wǎng)絡鄰居里卻是空的,而且它也無法通過輸入UNC地址(即前面提到的共享資源,它是用“\\計算機\資源”的格式表達的)來訪問到對方計算機,用戶會收到一個錯誤提示“找不到網(wǎng)絡路徑”,這種就是真正的故障了,一般是因為計算機沒有正常獲得瀏覽列表所導致,某種原因讓它無法獲得瀏覽主控服務器返回的數(shù)據(jù),我們可以先嘗試使用“nbtstat -R”清空本機的瀏覽列表緩存試試看,或者運行“net stop browser && net stop LmHosts && net stop Server && net start Server && net start LmHosts && net start browser”命令集來重新啟動幾個與文件共享相關的服務,不過建議已經(jīng)成為瀏覽主控服務器身份的計算機不要輕易執(zhí)行這個命令,因為它可能會讓你喪失在該工作組里的主控身份,因為當一個網(wǎng)絡里的瀏覽主控服務器停止運行時,同一工作組里的某臺計算機會變?yōu)闉g覽主控服務器,這個過程被稱為“瀏覽主控服務器重選”,目的是為了保持工作組共享資源的正常訪問,但是如果不幸這個瀏覽列表被安排在一臺故障機器上,整個工作組可能就無法正常進行共享訪問了。如果經(jīng)歷這些步驟還是無法查看網(wǎng)絡鄰居,可以試試看修改“TCP/IP協(xié)議屬性-高級-WINS”里的“啟用TCP/IP上的NetBIOS”,最后可以嘗試刪除“Microsoft 網(wǎng)絡的文件和打印機共享”和“Microsoft 網(wǎng)絡客戶端”再重新添加一次。
四. 共享與安全
也許,只要是有開放互連的地方,就會有無法逃脫安全問題的難堪,共享更是不例外,許多用戶根本不知道,默認情況下系統(tǒng)就已經(jīng)為你開了一個龐大的后門供人來品嘗,而這個后門的官方名稱就是“默認共享”——系統(tǒng)會自動為用戶開放以每個盤符進行命名的隱藏共享“盤符$”,雖然網(wǎng)絡鄰居里看不出來,但是有經(jīng)驗的用戶都知道那是什么一回事了,只需使用“\\IP\盤符$\”的格式便完成了資源的訪問操作。而另一個被稱為“默認管理共享”(ADMIN$)的共享,更是提供了一系列強大的網(wǎng)絡指令,甚至包括關機命令。你也許會說,這不正符合微軟的構思“遠程管理”嗎?話雖如此,但是對于一個只有來賓帳戶身份標識的共享來說,它能判斷出誰是主人嗎?
因此,稍有經(jīng)驗的用戶對這兩個共享都是深惡痛絕的,幸好系統(tǒng)提供了永久關閉它的方法:運行regedit開啟注冊表編輯器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters”分支,添加名為“AutoShareServer”和“AutoSharewks”的DWORD類型值,均設為0,重啟計算機就會發(fā)現(xiàn)僅僅剩下一個維持共享功能的IPC$了。
除了這里,共享還為我們帶來了“計劃任務”的潛在危害,即通過IPC$,入侵者可以設定機器在一個固定的時間里執(zhí)行某種操作,這實際上是通過“計劃任務”實現(xiàn)的,而“計劃任務”的實體為“Task Scheduler”服務項,趕快進services.msc里禁止掉它。