默認共享是微軟為了保證Windows網(wǎng)絡(luò)正常運行和方便Windows系統(tǒng)管理人員的日常工作而設(shè)計的,包括“命名管道”共享IPC$、系統(tǒng)目錄Winnt或 Windows共享ADMIN$以及各硬盤邏輯驅(qū)動器的共享,如C$、D$等。默認情況下,Windows每次啟動默認共享都是開啟的狀態(tài),并在它們的共享名稱最后都有一個“$”符號,作用就是能夠在網(wǎng)上鄰居中隱藏自己,防止被網(wǎng)絡(luò)上的攻擊者發(fā)現(xiàn)繼而利用。通過右擊“我的電腦→管理”,在“系統(tǒng)工具→共享文件夾→共享”里可以看到計算機當(dāng)前的默認共享(如圖 1)。
圖1 腳本執(zhí)行效果
但除了IPC$是Windows網(wǎng)絡(luò)尤其是活動目錄域正常運行需要的默認共享外,其他默認共享無論對于服務(wù)器還是客戶端,都屬于雞肋功能基本不用,并且Windows的漏洞層出不窮,且預(yù)設(shè)的共享名稱早已被大家所熟知,這些雞肋共享成為巨大的安全隱患。因此單位網(wǎng)絡(luò)的安全策略要求關(guān)閉網(wǎng)絡(luò)上所有計算機除了IPC$外的默認共享。
為滿足這個要求,筆者在域控制器的與策略中設(shè)置開機腳本,在域中計算機每次啟動時執(zhí)行,自動關(guān)閉除了IPC$外的默認共享。執(zhí)行后效果如圖1所示。腳本內(nèi)容如下:
for %%i in (admin,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do net share %%i$ /delete
由于不同計算機的硬盤邏輯驅(qū)動器數(shù)量不同,腳本枚舉了所有a到z的邏輯驅(qū)動器盤符,以做到封殺不留死角。
一直以來腳本的運行效果理想,但近期發(fā)現(xiàn)有些網(wǎng)內(nèi)計算機出現(xiàn)了默認共享沒有關(guān)閉或部分關(guān)閉的情況,且?guī)в胁淮_定性。經(jīng)檢查,客戶端計算機啟動腳本策略接收都正常,本地手動執(zhí)行腳本也能正常執(zhí)行,問題出在哪里呢?
經(jīng)過仔細排查,發(fā)現(xiàn)問題計算機的事件日志都存在類似的兩條記錄,記錄中顯示該計算機8:02:43Netlogon域登錄事件失敗,8:02:45網(wǎng)卡完成初始化,也就是說計算機開機時登錄域進行驗證的時間比網(wǎng)卡初始化完成時間要早2秒鐘,域客戶端計算機進行域登錄驗證時也在根據(jù)本地生效的域策略執(zhí)行啟動腳本,但由于腳本本身在域控制器上,而此時域客戶端和域控制器的網(wǎng)絡(luò)連接尚未就緒,啟動腳本執(zhí)行失敗,關(guān)閉默認共享的動作沒有執(zhí)行。
近期網(wǎng)內(nèi)安裝過新的安全軟件,估計是該軟件影響了某些計算機網(wǎng)卡的初始化速度,導(dǎo)致了問題發(fā)生。測試卸載了一臺計算機的軟件終端,問題果然解決,但安全軟件是不能卸的,軟件廠商對此問題也說不出個所以然,看來指望他們解決問題是不可能了,只能自己想辦法。
域中的其他策略根據(jù)活動目錄域的策略刷新機制每隔一段時間會自動執(zhí)行,其他啟動腳本可以調(diào)整為關(guān)機腳本滿足運行要求,但這個關(guān)閉默認共享的腳本在關(guān)機時執(zhí)行沒有任何意義,所以必須對腳本內(nèi)容進行調(diào)整,以滿足以下要求:
1.保證所有計算機在運行期間有效關(guān)閉ADMIN$以及各硬盤邏輯驅(qū)動器的默認共享,但不會對計算機IPC$和WSUS服務(wù)器的必要默認共享(UpdateServicesPackages、WsusContent、WSUSTemp)產(chǎn)生影響。
2.由于開機腳本的執(zhí)行已不可靠,腳本需要在關(guān)機執(zhí)行時達到第一條的要求或執(zhí)行一次就可以一勞永逸地達到第一條的要求。
一般關(guān)閉默認共享無外乎三種方法:1.逐一刪除共享法;2.禁用Server服務(wù)法;3.修改注冊表法。方法1和筆者原先采用的方法類似,目前不滿足第2條要求;方法2會關(guān)閉所有共享,殺傷太大,不滿足第1條要求;只能在方法3上做做文章了。
注冊表HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesLanmanServerParameters下可以新建兩項DWORD類型值A(chǔ)utoShareWks和AutoShareServer分別控制專業(yè)版(如WindowsXP)和服務(wù)器版(如Windows2003)操作系統(tǒng)的默認共享,值為0代表關(guān)閉默認共享,值為1代表打開默認共享。
經(jīng)過筆者測試(筆者網(wǎng)絡(luò)環(huán)境為服務(wù)器Windows 2003 R2企業(yè)版 SP2,客戶端 Windows XP SP3),這兩項值設(shè)為0后,服務(wù)器和客戶端ADMIN$以及各硬盤邏輯驅(qū)動器的默認共享都被關(guān)閉,而 IPC$以及WSUS服務(wù)器的必要默認共享未受影響。此外,修改注冊表后,計算機再次開機也不會再打開默認共享了,該方法可以滿足第1和第2條要求。下面就是把該方法在網(wǎng)內(nèi)進行推廣設(shè)置了。
步驟一:建立兩個修改注冊表的批處理腳本,對應(yīng)服務(wù)器端和客戶端,使得腳本在執(zhí)行時分別建立修改服務(wù)器端和客戶端的AutoShareServer和AutoShareWks的值為0的注冊表文件并導(dǎo)入注冊表中。
服務(wù)器端腳本stopSrvShare.bat如下:
rem 通過注冊表禁止2003等服務(wù)器系統(tǒng)除IPC$外的默認共享,以防重啟后再次加載
客戶端腳本stopClntShare.bat如下:
rem 通過注冊表禁止客戶端XP系統(tǒng)等計算機除IPC$外的默認共享,以防重啟后再次加載
步驟二:在域控制器中將stopClntShare.bat設(shè)置為客戶端所在組織單元策略的關(guān)機腳本,將stopSrvShare.bat設(shè)置為服務(wù)器所在組織單元和策略的關(guān)機腳本,分別如圖2圖3所示。
圖2 stopSrvShare.bat關(guān)機腳本設(shè)置
圖3 stopClntShare.bat關(guān)機腳本設(shè)置
進行上述設(shè)置后,問題計算機在刷新策略并重新啟動計算機后默認共享果然不再出現(xiàn)了,問題圓滿解決。
最后再說一下,對于要進一步強化IPC$安全的,可以修改注冊表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa下的restrictanonymous值為1,計算機就不允許匿名用戶枚舉SAM賬號和共享了。
可以在兩個腳本中regedit/s c:delshare.reg之前加入以下代碼:
這樣,強化IPC$安全隨腳本同步執(zhí)行,安全系數(shù)又提高了一層。