軟件限制策略是系統內置的功能,與系統無縫結合,不會佔用額外的CPU及內存資源,更不會有不兼容的現象,由於其位於系統的最底層,其攔截能力也是其它軟件所無法比擬的,不足之處則是其設置不夠靈活和智能,不會詢問用戶。下面我們就來全面的瞭解一下軟件限制策略。
1、概述
使用軟件限制策略,通過標識並指定允許哪些應用程序運行,可以保護您的計算機環境免受不可信任的代碼的侵擾。通過散列規則、證書規則、路徑規則和Internet區域規則,就用程序可以在策略中得到標識。默認情況下,軟件可以運行在兩個級別上:“不受限制的”與“不允許的”。在本文中我們主要用到的是路徑規則和散列規則,而路徑規則是這些規則中使用最爲靈活的,散列規制是比較強悍的也是比較常用的。
2、 附加規則和安全級別
限制策略時,使用一下規則對軟件進行標識:
證書規制 軟件限制策略可以通過其簽名證書來標識文件。證書規則不能應用到帶有 .exe 或 .dll 擴展名的文件。它們可以應用到腳本和 Windows 安裝程序包。可以創建標識軟件的證書,然後根據安全級別的設置,決定是否允許軟件運行。
路徑規則 路徑規則通過程序的文件路徑對其進行標識。由於此規則按路徑指定,所以程序發生移動後路徑規則將失效。路徑規則中可以使用諸如 %programfiles% 或 %systemroot% 之類環境變量。路徑規則也支持通配符,所支持的通配符爲 * 和 ?。
散列規則 散列是唯一標識程序或文件的一系列定長字節。散列按散列算法算出來。軟件限制策略可以用 SHA-1(安全散列算法)和 MD5 散列算法根據文件的散列對其進行標識。重命名的文件或移動到其他文件夾的文件將產生同樣的散列。
Internet 區域規則 區域規則只適用於 Windows 安裝程序包。區域規則可以標識那些來自Internet Explorer 指定區域的軟件。這些區域是 Internet、本地計算機、本地 Intranet、受限站點和可信站點。
安全級別
對於軟件限制策略,默認情況下,系統爲我們提供了兩個安全級別:“不受限的”和“不允許的” 。
1.“不允許的” 即所有登陸系統的帳戶,都不能夠運行這個應用軟件,無論其是否對數據文件具有訪問權限。
2.“不受限的”級別不等於完全不受限制,只是不受軟件限制策略的附加限制。也就是說,所有登陸的用戶都可以運行指定的軟件。只要用戶具有數據文件的訪問權限,就可以利用軟件打開這個文件。可以看出,應用軟件的訪問權限跟數據文件的訪問權限是獨立的。用戶只具有應用軟件或者數據文件的訪問權限,往往還不夠。需要兩者權限都有,才能夠打開相關的文件。
但實際上,還有三個級別在默認情況是隱藏掉的,我們可以通過手動修改註冊表來開啓其它的三個級別,打開註冊表編輯器,展開至:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\
Safer\CodeIdentifiers
新建一個DOWRD,命名爲Levels,其值爲 0x4131000(十六十制的4131000)。創建完畢後重新打開gpedit.msc,我們會看到另外三個級別此時已經開啓了。
Safer\CodeIdentifiers
新建一個DOWRD,命名爲Levels,其值爲 0x4131000(十六十制的4131000)。創建完畢後重新打開gpedit.msc,我們會看到另外三個級別此時已經開啓了。
- 不受限的 最高權限,但其也並不是完全的不受限,而是“軟件訪問權由用戶的訪問權來決定”,即繼承父進程的權限。
- 基本用戶 基本用戶僅享有“跳過遍歷檢查”的特權,並拒絕享有管理員的權限。
- 受限的 比基本用戶限制更多,但也享有“跳過遍歷檢查”的特權。
- 不信任的 不允許對系統資源、用戶資源進行訪問,結果就是程序將無法運行。
- 不允許的 無條件地阻止程序執行或文件被打開
根據權限大小可以排序爲: 不受限的 > 基本用戶 > 受限的 > 不信任的 > 不允許的
3、軟件限制策略的優先權
一個特定的程序可以有多個不同的規則適用,爲此,可以按下列優先權順序來使用這些規則。優先權按從高到低的順序排列如下:
散列規則 > 證書規則 > 路徑規則 > Internet區域規則
如果存在多個路徑規則衝突,則最具限制性的規則佔有優先權。總的原則就是:規則越匹配越優先。 本例是按優先權從高到低排列的。從這裏我們可以看出:
絕對路徑 > 通配符路徑
文件名規則 > 目錄規則
對於同樣是目錄規則的,則目錄數匹配越多就越優先。
文件名規則 > 目錄規則
對於同樣是目錄規則的,則目錄數匹配越多就越優先。
這裏,我們再順便介紹一下環境變量和通配符。
在路徑規則裏,允許使用諸如“%windir%”“%userprofile%”之類的環境變量。一般情況下,我們的系統是在C盤,但也有些人基於其它一些原因如要安裝雙系統等,將系統安裝在其它比如D盤下面,這時我們平常用到的一些路徑比如“C:\windows\”就會無效,爲了防止這種情況,我們就可以使用系統變量,像“%windir%”,系統會自動爲我們匹配其目錄。我們在創建規則的時候也可以使用這些環境變量,以適用於不同的系統。下面列出的是一些常使用的環境變量,更多的環境變量你可以運行 CMD 然後運行 SET 命令進行查看。
ALLUSERSPROFILE = C:\Documents and Settings\All Users
APPDATA = C:\Documents and Settings\Administrator\Application Data
CommonProgramFiles = C:\Program Files\Common Files
ComSpec = C:\WINDOWS\system32\cmd.exe
HOMEDRIVE = C:
HOMEPATH = \Documents and Settings\Administrator
ProgramFiles = C:\Program Files
SystemDrive = C:
SystemRoot = C:\WINDOWS
TEMP = C:\Documents and Settings\當前用戶名\Local Settings\Temp
TMP = C:\Windows\Temp
USERPROFILE = C:\Documents and Settings\Administrator
WINDIR = C:\WINDOWS
同樣,路徑規則也支持使用通配符,對DOS熟悉的人應該知道這個東西,就是“?”和“*”。 ? :包括1個或0個字符; * :包括任意個字符(包括0個),但不包括斜槓,“**”和“*”是完全等效的,
4、規則的權限分配及繼承
這裏的講解的一個前提是:假設你的用戶類型是管理員。
在沒有軟件限制策略的情況下,如果程序a啓動程序b,那麼a是b的父進程,b繼承a的權限。現在把a設爲基本用戶,b不做限制(把b設爲不受限或者不對b設置規則效果是一樣的)然後由a啓動b,那麼b的權限繼承於a,也是基本用戶,即:
a(基本用戶)-> b(不受限的) = b(基本用戶)
若把b設爲基本用戶,a不做限制,那麼a啓動b後,b仍然爲基本用戶權限,即
a(不受限的)-> b(基本用戶) = b(基本用戶)
a(不受限的)-> b(基本用戶) = b(基本用戶)
可以看到,一個程序所能獲得的最終權限取決於:父進程權限和規則限定的權限的最低等級,也就是我們所說的最低權限原則。
我們的規則裏面所說到的基本用戶、受限用戶,基本上等同於 NTFS 權限裏的 USERS 組,但受限用戶受到的限制更多,不管NTFS權限如何,其始終受到限制。更多NTFS權限的設置,大家可以查閱NTFS相關的內容。
5、如何編寫規則
下面介紹規則的具體編寫方式
開始 -> 運行 -> gpedit.msc 在左邊的窗口中依次展開 計算機配置 -> Windows設置 -> 安全設置 -> 軟件限制策略
如果你之前沒有進行過設置,那麼在軟件限制策略上點右鍵,選擇創建新的策略,然後在其它規則上右鍵點擊,選擇新路徑規則既可以進行規則的創建了。
規則的設置很簡單,就五個安全級別,根據你自己的需要設置即可。難點主要是規則的正確性和有效性,這個靠多多實踐來提升了。
另外提醒一下,大家在設置規則時,注意不要更改以下4條系統默認規則同時還要考慮它們的影響:
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot% 路徑 不受限的
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%*.exe 路徑 不受限的
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%System32\*.exe 路徑不受限的
%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
ProgramFilesDir% 路徑 不受限的
ProgramFilesDir% 路徑 不受限的
相當於規則:
%SystemRoot% 不受限的 整個Windows目錄不受限
%SystemRoot%\*.exe 不受限的 Windows下的exe文件不受限
%SystemRoot%\System32\*.exe 不受限的 System32下的exe文件不受限
%ProgramFiles% 不受限的 整個ProgramFiles目錄不受限
這裏要注意的一點是規則在新添加或者進行修改以後,不會立即生效,可以使用命令 gpupdate /force 來強制刷新,如果長時間不生效,我們可以通過註銷,重新登陸來生效。
6、 應用軟件與數據文件獨立
在應用軟件限制策略的時候,需要明白的第一個原則就是“應用軟件與數據文件獨立”獨立原則。也就是說,你即使具有數據文件的訪問權限,但是,若其沒有其關聯軟件的訪問權限的話,則仍然不能夠打開這個文件。如現在某個用戶從網上私自下載了一部電影,其作爲所有者人,當然具有對這個數據文件進行訪問的權限。但是,我們在軟件限制策略設置的時候,這個用戶帳戶無法訪問任何的視頻播放軟件。如此的話,這個用戶仍然無法播放這部電影。
這就是應用軟件與數據文件獨立的原則。這個原則在實際應用中非常有用。因爲我們很難控制用戶從網絡上下載文件。如用戶若從網絡上下載歌曲,甚至通過U盤等工具從企業外部把文件拷貝到電腦上去。這些行爲我們很難控制。但是,我們對於用戶電腦上應用程序的控制來說,則相對簡單許多。我們只需要把這些應用程序控制好,則即使用戶私自下載受限制的文件,則用戶最終也沒有軟件可以打開它。這也就可以控制他們的相關不正當行爲。
7、 軟件限制策略的衝突處理原則
軟件限制策略跟其他組策略一樣,可以在多個級別上進行設置。或者說,軟件限制策略是組策略中的一個特殊分支也未嘗不可。所以,軟件限制策略可以在本地計算機、站點、域與組織單元等多個環節進行設置。每個級別又可以針對用戶與計算機進行設置。而就是因爲如此,所以也就產生了衝突的可能性。當在各個設置級別上的軟件限制策略發生衝突的時候,其優先性如何呢?
一般來說,其優先性的級別從高到低如下:
第一,組織單元策略;第二,域策略;第三,站點策略;第四,本地計算機策略。這裏特別要注意一點,就是組織單元的策略要比域策略的優先性級別要高。也就是說,在域策略中,限制用戶使用視頻播放器;而在一個培訓組織單元中,則允許這個單元中的賬戶具有視頻軟件的訪問權限。則即使這個組織單元在這個域中,則只要帳戶屬於這個組織單元,則其仍然可以使用視頻軟件,因爲組織單元級別的優先性要高於域中的設置。
不過,建議最好把軟件限制策略利用在域中與組織單元中,而不要放在其他的兩個級別中。在域中,實現一些共有的配置,如限制企業員工使用視頻播放工具等等。而在OU中,一般情況下繼承域的相關配置。當這個組具有特殊的權限時,如現在有一個培訓組,這個組中的賬戶需要有視頻軟件的播放權限,則就可以在這個組織單元的級別上進行配置。如此的話,就可以保證有一個比較統一的軟件權限策略管理平臺。若牽涉的級別太多,特別是在本地計算機上配置的話,則會破壞這個統一平臺,雖然其優先級比較低。
8、 軟件限制策略之哈希規制
利用前面的路徑規制方法,則有一個不好缺陷,當用戶修改了應用軟件的名字的時候,如把QQ改爲其它名稱,則原有的組策略限制就會失效。而利用軟件限制策略的哈希規則,則可以實現更加精確的控制。如可以使用哈希規則來確定哪些軟件可以運行,哪些軟件不可以運行。
哈希是根據軟件程序的內容根據一定的規則計算出來的一連串固定數目的字節。因爲它是根據軟件的內容計算出來的,而不是純粹的根據軟件的名字來進行判斷,所以,即使用戶修改了應用軟件的名字,其仍然必須受到這個軟件策略的限制。當然,不同的應用軟件,由於其應用程序的內容不同,所以其計算出來的哈希值也是不同的。當我們在爲某個應用軟件建立哈希規則,限制用戶不允許運行此軟件時,域控制器就會爲該軟件計算出一個哈希值,判斷是否與軟件限制策略中的哈希值相同。如果相同的話,操作系統就會拒絕這個軟件的運行。所以,當用戶人爲的修改應用程序的名字或者移動位置的話,因爲應用程序的本質內容沒有改變,所以其哈希值也不會改變,固其仍然要受到軟件策略的限制。但是,如果應用程序中毒了,則可能就會影響到哈希值,從而使得軟件策略不起作用。哈希規則是我們比較常用的規則,因爲其方便、容易控制。
在採用這些規則的時候,爲了避免一些不必要的衝突,還是採用哈希規則爲好。個人認爲,哈希規則是一個必要好用的規則,而且,其漏洞也比較少,如不會因爲員工惡意更改應用程序名字或者移動應用程序的位置而導致軟件限制策略失效。
所以,在考慮採用軟件限制策略的時候,最好不要在多個級別上採用多個不同的判斷規則,否則的話,在這些因素的多重作用下,出來的結果可能連我們自己都弄不明白。建議在配置軟件限制策略的時候,一般只在域與組織單元的級別上進行配置;採用的也是哈希單一規則。筆者認爲,這無論在設計還是後續維護上面,都是比較方便的。
軟件限制策略哈希規制具體實施步驟:
(1)如果要使所創建的限制策略適用於整個域,則需要在GPMC爲域組策略中創建一個GPO,因爲最好不要直接在默認的域GPO上進行限制限制策略,這一點我們在站節已有介紹;如果要是適用於某組織單位,則可以在相應組織單位的GPO上進行配置。本例以Sales組織單位爲例進行介紹。
(2)在Sales組織單位GPO上單擊右鍵,在彈出菜單中選擇“編輯”選項,打開Sales組織單位GPO編輯器。
(3)在“計算機設置”節點下的“安全設置”策略項中找到“軟件限制策略”選項(參見圖9-1),單擊右鍵,在彈出菜單中選擇“創建軟件限制策略”選項,隨即在右邊窗口中顯示了軟件限制策略中的一些策略選項,如圖所示。
圖8-1 新創建的軟件限制策略選項
(4)因爲各用戶的QQ、MSN程序的安裝位置不可能完全一樣,而且用戶對這類程序的安裝位置也可以隨意更改,所以我們不能採取“路徑規則”來限制用戶對QQ、MSN程序的使用。在此我們以“哈希規則”進行限制。在“其他規則”策略選項上單擊右鍵,在彈出菜單中選擇“新建哈希規則”選項,打開對話框。
在這裏先創建限制使用QQ程序的規則,在“文件哈希”文本框右邊通過“瀏覽”按鈕找到QQ.exe程序,系統會自動給出這個規則的哈希值,同時在“文件信息”列表中也會給出相應的文件信息。
(5)在“安全級別”下拉列表中選擇“不允許的”選項,然後單擊“確定”按鈕完成限制運行QQ程序的哈希規則創建。
(6)最後還要把本地管理員的限制排除。方法是雙擊如圖8-1所示窗口的“強制”策略選項,打開如圖8-2所示對話框。在其中要選擇“除本地管理員以外的所有用戶”單選項。如果要使策略應用於相應程序的所有.dll文件(這樣更嚴厲),就可以在如圖9-3所示對話框中選擇“所有軟件文件”單選項。最後單擊“確定”按鈕使設置生效。
通過以上設置後,在Sales組中的所有計算機都不能運行QQ程序文件了,無論這兩個程序的安裝位置如何變化,安裝目錄名如何改變,都將生效。如果要針對其中的用戶來限制,則需要在組策略“用戶設置”策略項下的“軟件限制策略”項中進行配置。
圖8-2 “新建哈希規則”對話框 圖8-3 “強制屬性”對話框
另外,用組策略的“不要運行指定的windows應用程序”策略項也可以配置,大家可以試一下。
最後,如果禁止一般的軟件,使用軟件限制策略裏面的哈希規則就足夠了,如果禁止像QQ這樣比較強悍的軟件,最好是軟件限制策略、防火牆過濾同時使用,打一套組合拳,徹底解決我們所面臨的問題!