那有什么方法可以提高這個(gè)IPC$共享的安全性呢?“堵”與“疏”,可供大家選擇。
第一招:堵,取消IPC$共享
取消其共享,顯然這是杜絕IPC$安全隱患的最根本的方法??墒?,由于其跟一般的共享文件夾不同,不是很輕易就可以取消共享。如在上面這個(gè)共享文件管理窗口,我們?cè)?ldquo;IPC$”條目上右鍵單擊,可以選擇“取消共享”??墒?,這么操作的話,系統(tǒng)會(huì)提示一個(gè)錯(cuò)誤信息“服務(wù)器服務(wù)要求有IPC$,他不能被刪除”。所以說,要取消IPC$共享的話,利用常規(guī)的方法還不行。
如我們可以通過注冊(cè)表的設(shè)置,來取消這個(gè)IPC$共享。
1、 在開始菜單的運(yùn)行處,輸入“regedit”命令,打開注冊(cè)表編輯器。
2、 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters。找到這一項(xiàng)內(nèi)容。
3、 如果采用的是2003等服務(wù)器操作系統(tǒng),則在上面這個(gè)項(xiàng)目下,要建立一個(gè)名叫“AutoShareServer”的雙字節(jié)鍵值項(xiàng),并把這個(gè)項(xiàng)值設(shè)置為0。如果你采用的是普通的工作站系統(tǒng),則需要建立一個(gè)名叫“AutoShareWKs”的雙字節(jié)鍵值項(xiàng)。這個(gè)項(xiàng)值也設(shè)置為0。
4、 然后重新啟動(dòng)系統(tǒng)。如此的話,這個(gè)名叫IPC$共享就被取消了。
不過在利用注冊(cè)表強(qiáng)制取消IPC$默認(rèn)共享的時(shí)候,需要注意兩個(gè)問題。
一是,這個(gè)設(shè)置不僅會(huì)取消IPC$默認(rèn)共享,而且會(huì)把其他所有的默認(rèn)共享都取消掉。如在2000的操作系統(tǒng)上,不僅會(huì)有IPC$默認(rèn)共享。而且還會(huì)有C$等磁盤默認(rèn)共享。采用這種方式的話,也會(huì)把磁盤默認(rèn)共享禁用掉。
二是,正如上面這個(gè)提示所說,有些服務(wù)器系統(tǒng)的服務(wù)需要使用IPC$默認(rèn)共享。若把這個(gè)共享取消掉,則有可能會(huì)給相關(guān)服務(wù)帶來不利影響,甚至造成服務(wù)無法正常啟動(dòng)。
所以,在實(shí)際工作中,筆者是不建議采用這種“堵”的方法,強(qiáng)制把IPC$默認(rèn)共享關(guān)掉。筆者建議采取下面這種“疏”的方式,不關(guān)掉其默認(rèn)共享,而是采用“限制使用”的方式,來提高IPC$默認(rèn)共享的安全性。
第二招:疏,限制使用
有些服務(wù),必須要求啟動(dòng)IPC$共享命名管道,特別是一些微軟出品的應(yīng)用軟件。如微軟的SQL Server數(shù)據(jù)庫,必須要啟用IPC$共享命名管道。否則的話,數(shù)據(jù)庫就無法正常運(yùn)行。IPC$共享命名管道,也是SQL Server數(shù)據(jù)庫與微軟服務(wù)器操作系統(tǒng)無縫集成的一個(gè)通道。所以,我們一味的停用IPC$共享命名通道,雖然提高了服務(wù)器操作系統(tǒng)的安全性,但是,也會(huì)使得一些應(yīng)用服務(wù)無法使用。這種“玉石共焚”的方法,不是上上之策。
筆者建議通過“限制使用”的方式,來提高IPC$共享命名管道的安全。其實(shí),這也是比較簡(jiǎn)單的,我們可以通過注冊(cè)表來實(shí)現(xiàn)這個(gè)需求。
我們利用上面的方法打開注冊(cè)表編輯器,然后依次找到下面的這一項(xiàng)內(nèi)容“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa”。在這一項(xiàng)內(nèi)容中,有一個(gè)叫做restrictanonymous的鍵值。這個(gè)鍵值,由三個(gè)可選的參數(shù)。如果設(shè)置為0,就是沒有限制,任何用戶,包括匿名用戶都可以使用這個(gè)共享命名管道。這是系統(tǒng)的默認(rèn)值。如果設(shè)置為1,則表示匿名用戶無法列舉本機(jī)的用戶列表。如果設(shè)置為2,則表示匿名用戶無法連接這臺(tái)主機(jī)的IPC$共享。一般情況下,是不建議設(shè)置為2,因?yàn)檫@會(huì)導(dǎo)致依賴于共享命名管道的一些應(yīng)用服務(wù)無法正常啟動(dòng)。
不過以上設(shè)置只適用于微軟早期的操作系統(tǒng)。在2003的服務(wù)器系統(tǒng)中,有一個(gè)特殊的鍵,叫做“restrictanonymoussam”。在后期的服務(wù)器系統(tǒng)中,要利用這個(gè)鍵來限制使用共享命名管道。如下圖:
這個(gè)鍵也有兩個(gè)值,0與1。1是系統(tǒng)的默認(rèn)值,表示匿名用戶無法列舉主機(jī)的用戶列表。0表示匿名用戶不但不能夠列舉主機(jī)的用戶列表,而且也不能夠使用默認(rèn)共享命名管道。所以,一般情況下,只要把這個(gè)默認(rèn)值設(shè)置為1。
對(duì)這個(gè)“疏”的方法,筆者也有如下建議:
首先,根據(jù)服務(wù)器系統(tǒng)上采用的應(yīng)用服務(wù)來判斷需要如何進(jìn)行設(shè)置。如果服務(wù)器系統(tǒng)上運(yùn)行了SQL Server數(shù)據(jù)庫,則需要把這個(gè)值設(shè)置為1(如果是2003的服務(wù)器系統(tǒng))。也就是說,不要讓匿名用戶列舉服務(wù)器的用戶列表,但是允許匿名用戶使用它。這一方面可以讓SQL Server等數(shù)據(jù)庫系統(tǒng)正常的 啟動(dòng),同時(shí),對(duì)服務(wù)器的安全也具有一定的保障。
其次,對(duì)于一些不需要IPC$命名管道的應(yīng)用程序,也需要謹(jǐn)慎設(shè)置。有一些跨平臺(tái)的應(yīng)用程序,如Oracle數(shù)據(jù)庫等,可以不使用IPC$命名管道。此時(shí),從理論上說,可以取消IPC$命名管道,從而從根本上杜絕IPC$命名管道攻擊,提高服務(wù)器的安全性。不過,在取消之前,最好能夠進(jìn)行嚴(yán)格的測(cè)試。因?yàn)橥谝慌_(tái)服務(wù)器中,不光光就運(yùn)行一個(gè)應(yīng)用服務(wù)。有時(shí)候Oracle數(shù)據(jù)庫可能不需要這個(gè)IPC$共享,但是,其他應(yīng)用服務(wù)就需要他。所以,是否需要禁用這個(gè)IPC$命名管道,企業(yè)服務(wù)器管理員需要測(cè)試后再作定奪。
總之,在對(duì)待IPC$默認(rèn)共享安全上,筆者的態(tài)度是“堵不如疏”,禁用不如限用。俗話說,不能夠因噎廢食。只要合理限制匿名用戶對(duì)IPC$默認(rèn)共享的使用,就可以保障其安全性。同時(shí),也不會(huì)對(duì)其他的應(yīng)用服務(wù)產(chǎn)生不良的影響。