堵不如疏IPC$共享安全技巧淺析

字號:

IPC$是共享命名管道的資源。在微軟系列的操作系統(tǒng)中,為了讓進程間共享通信而開放的命名管道。用戶通過提供可信任的帳戶與口令,連接雙方可以建立安全的通道并以此通道進行加密數(shù)據(jù)的交換,從而實現(xiàn)對遠程計算機的訪問。
    所以,IPC$共享命名管道設(shè)計的意圖是好的,也確實給管理員帶來了方便。但是,由于其存在一定的漏洞,這也讓黑客有機可乘?,F(xiàn)在一些針對IPC$漏洞的攻擊方案就有一大堆。有些甚至沒有連計算機網(wǎng)絡(luò)基礎(chǔ)的人,只要照本宣科的對著資料做,也可以輕易的利用IPC$漏洞非法登陸微軟的服務(wù)器系統(tǒng),進行一些破壞性的操作。所以,提高IPC$共享安全已經(jīng)迫在眉睫。
    我們右鍵點擊服務(wù)器桌面“我的電腦”,打開“共享文件夾”,就可以在右面的窗口看到當前系統(tǒng)的共享文件夾。IPC$共享就在其中。
    那有什么方法可以提高這個IPC$共享的安全性呢?“堵”與“疏”,可供大家選擇。
    第一招:堵,取消IPC$共享
    取消其共享,顯然這是杜絕IPC$安全隱患的最根本的方法??墒牵捎谄涓话愕墓蚕砦募A不同,不是很輕易就可以取消共享。如在上面這個共享文件管理窗口,我們在“IPC$”條目上右鍵單擊,可以選擇“取消共享”??墒牵@么操作的話,系統(tǒng)會提示一個錯誤信息“服務(wù)器服務(wù)要求有IPC$,他不能被刪除”。所以說,要取消IPC$共享的話,利用常規(guī)的方法還不行。
    如我們可以通過注冊表的設(shè)置,來取消這個IPC$共享。
    1、 在開始菜單的運行處,輸入“regedit”命令,打開注冊表編輯器。
    2、 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters。找到這一項內(nèi)容。
    3、 如果采用的是2003等服務(wù)器操作系統(tǒng),則在上面這個項目下,要建立一個名叫“AutoShareServer”的雙字節(jié)鍵值項,并把這個項值設(shè)置為0。如果你采用的是普通的工作站系統(tǒng),則需要建立一個名叫“AutoShareWKs”的雙字節(jié)鍵值項。這個項值也設(shè)置為0。
    4、 然后重新啟動系統(tǒng)。如此的話,這個名叫IPC$共享就被取消了。
    不過在利用注冊表強制取消IPC$默認共享的時候,需要注意兩個問題。
    一是,這個設(shè)置不僅會取消IPC$默認共享,而且會把其他所有的默認共享都取消掉。如在2000的操作系統(tǒng)上,不僅會有IPC$默認共享。而且還會有C$等磁盤默認共享。采用這種方式的話,也會把磁盤默認共享禁用掉。
    二是,正如上面這個提示所說,有些服務(wù)器系統(tǒng)的服務(wù)需要使用IPC$默認共享。若把這個共享取消掉,則有可能會給相關(guān)服務(wù)帶來不利影響,甚至造成服務(wù)無法正常啟動。
    所以,在實際工作中,筆者是不建議采用這種“堵”的方法,強制把IPC$默認共享關(guān)掉。筆者建議采取下面這種“疏”的方式,不關(guān)掉其默認共享,而是采用“限制使用”的方式,來提高IPC$默認共享的安全性。
    第二招:疏,限制使用
    有些服務(wù),必須要求啟動IPC$共享命名管道,特別是一些微軟出品的應(yīng)用軟件。如微軟的SQL Server數(shù)據(jù)庫,必須要啟用IPC$共享命名管道。否則的話,數(shù)據(jù)庫就無法正常運行。IPC$共享命名管道,也是SQL Server數(shù)據(jù)庫與微軟服務(wù)器操作系統(tǒng)無縫集成的一個通道。所以,我們一味的停用IPC$共享命名通道,雖然提高了服務(wù)器操作系統(tǒng)的安全性,但是,也會使得一些應(yīng)用服務(wù)無法使用。這種“玉石共焚”的方法,不是上上之策。
    筆者建議通過“限制使用”的方式,來提高IPC$共享命名管道的安全。其實,這也是比較簡單的,我們可以通過注冊表來實現(xiàn)這個需求。
    我們利用上面的方法打開注冊表編輯器,然后依次找到下面的這一項內(nèi)容“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa”。在這一項內(nèi)容中,有一個叫做restrictanonymous的鍵值。這個鍵值,由三個可選的參數(shù)。如果設(shè)置為0,就是沒有限制,任何用戶,包括匿名用戶都可以使用這個共享命名管道。這是系統(tǒng)的默認值。如果設(shè)置為1,則表示匿名用戶無法列舉本機的用戶列表。如果設(shè)置為2,則表示匿名用戶無法連接這臺主機的IPC$共享。一般情況下,是不建議設(shè)置為2,因為這會導(dǎo)致依賴于共享命名管道的一些應(yīng)用服務(wù)無法正常啟動。
    不過以上設(shè)置只適用于微軟早期的操作系統(tǒng)。在2003的服務(wù)器系統(tǒng)中,有一個特殊的鍵,叫做“restrictanonymoussam”。在后期的服務(wù)器系統(tǒng)中,要利用這個鍵來限制使用共享命名管道。
    這個鍵也有兩個值,0與1。1是系統(tǒng)的默認值,表示匿名用戶無法列舉主機的用戶列表。0表示匿名用戶不但不能夠列舉主機的用戶列表,而且也不能夠使用默認共享命名管道。所以,一般情況下,只要把這個默認值設(shè)置為1。
    對這個“疏”的方法,考試大也有如下建議:
    首先,根據(jù)服務(wù)器系統(tǒng)上采用的應(yīng)用服務(wù)來判斷需要如何進行設(shè)置。如果服務(wù)器系統(tǒng)上運行了SQL Server數(shù)據(jù)庫,則需要把這個值設(shè)置為1(如果是2003的服務(wù)器系統(tǒng))。也就是說,不要讓匿名用戶列舉服務(wù)器的用戶列表,但是允許匿名用戶使用它。這一方面可以讓SQL Server等數(shù)據(jù)庫系統(tǒng)正常的 啟動,同時,對服務(wù)器的安全也具有一定的保障。
    其次,對于一些不需要IPC$命名管道的應(yīng)用程序,也需要謹慎設(shè)置。有一些跨平臺的應(yīng)用程序,如Oracle數(shù)據(jù)庫等,可以不使用IPC$命名管道。此時,從理論上說,可以取消IPC$命名管道,從而從根本上杜絕IPC$命名管道攻擊,提高服務(wù)器的安全性。不過,在取消之前,能夠進行嚴格的測試。因為往往在一臺服務(wù)器中,不光光就運行一個應(yīng)用服務(wù)。有時候Oracle數(shù)據(jù)庫可能不需要這個IPC$共享,但是,其他應(yīng)用服務(wù)就需要他。所以,是否需要禁用這個IPC$命名管道,企業(yè)服務(wù)器管理員需要測試后再作定奪。
    總之,在對待IPC$默認共享安全上,筆者的態(tài)度是“堵不如疏”,禁用不如限用。俗話說,不能夠因噎廢食。只要合理限制匿名用戶對IPC$默認共享的使用,就可以保障其安全性。同時,也不會對其他的應(yīng)用服務(wù)產(chǎn)生不良的影響。