secedit

secedit

該命令是Windows NT系列中的一個命令,它是組策略工具的命令行版本,通過跟一個組策略模板比較來配置分析系統組策略安全。

命令簡介

組策略是建立Windows安全環境的重要手段,尤其是在Windows域環境下。一個出色的系統管理員,應該能熟練地掌握並套用組策略。在視窗界面下訪問組策略用gpedit.msc,命令行下用secedit.exe。

語法

secedit

[/analyze /db <database file name> /cfg <configuration file name> [/overwrite] /log <log file name> [/quiet]]

[/configure /db <database file name> [/cfg <configuration filename>] [/overwrite] [/areas [securitypolicy | group_mgmt | user_rights | regkeys | filestore | services]] [/log <log file name>] [/quiet]]

[/export /db <database file name> [/mergedpolicy] /cfg <configuration file name> [/areas [securitypolicy | group_mgmt | user_rights | regkeys | filestore | services]] [/log <log file name>]]

[/generaterollback /db <database file name> /cfg <configuration file name> /rbk <rollback file name> [/log <log file name>] [/quiet]]

[/import /db <database file name> /cfg <configuration file name> [/overwrite] [/areas [securitypolicy | group_mgmt | user_rights | regkeys | filestore | services]] [/log <log file name>] [/quiet]]

[/validate <configuration file name>]

參數

/configure 配置組策略

/analyze 分析組策略

/import 導入組策略

/export 導出組策略

/generaterollback 生成回滾和配置模板

/validate 驗證配置檔案中的語法

/db <database file name> 必須參數,指定包含要分析的存儲檔案的資料庫,如果資料庫為新數據,/cfg參數為必須。

/cfg <configuration file name> 指定安全模板的路徑和名稱,僅當/db參數時使用,如果不指定,則執行存儲在數據中的數據。

/overwrite 是否覆蓋

/log <log file name> 指定處理的日誌檔案名稱稱和路徑,如果不指定,則使用默認。

/quiet 是否靜默模式

/areas 指定允許系統的安全區域,如果不指定,則默認所有取悅,每個區域使用空格分隔開。

/mergedpolicy 合併並導出域和本地安全策略。

區域備註

區域名字 描述
SECURITYPOLICY 指定本地和域的系統策略,包括賬戶、審計策略
GROUP_MGMT從安全模板中指定限制組設定
USER_RIGHTS指定登錄用戶的許可權和允許特權
REGKEYS指定本地註冊表的安全性
FILESTORE制定本地存儲檔案的安全性
SERVICES指定所有服務的安全性

使用舉例

與訪問註冊表只需reg檔案不同的是,訪問組策略除了要有個模板檔案(還是inf),還需要一個安全資料庫檔案(sdb)。要修改組策略,必須先將模板導入安全資料庫,再通過套用安全資料庫來刷新組策略。

密碼安全

假設我要將密碼長度最小值設定為6,並啟用“密碼必須符合複雜性要求”,那么先寫這么一個模板:

[version]
signature="$CHICAGO$"
[System Access]
MinimumPasswordLength = 6
PasswordComplexity = 1
保存為gp.inf,然後導入:
secedit /configure /db gp.sdb /cfg gp.inf /quiet
這個命令執行完成後,將在當前目錄產生一個gp.sdb,它是“中間產品”,你可以刪除它。
/quiet參數表示“安靜模式”,不產生日誌。但根據我的試驗,在2000sp4下該參數似乎不起作用,XP下正常。日誌總是保存在%windir%/security/logs/scesrv.log。你也可以自己指定日誌以便隨後刪除它。比如:
secedit /configure /db gp.sdb /cfg gp.inf /log gp.log
del gp.*
另外,在導入模板前,還可以先分析語法是否正確:
secedit /validate gp.inf
那么,如何知道具體的語法呢?當然到MSDN里找啦。也有偷懶的辦法,因為系統自帶了一些安全模板,在%windir%/security/templates目錄下。打開這些模板,基本上包含了常用的安全設定語法,一看就懂。
關閉審核策略

echo版:
echo [version] >1.inf
echo signature="$CHICAGO$" >>1.inf
echo [Event Audit] >>1.inf
echo AuditSystemEvents=0 >>1.inf
echo AuditObjectAccess=0 >>1.inf
echo AuditPrivilegeUse=0 >>1.inf
echo AuditPolicyChange=0 >>1.inf
echo AuditAccountManage=0 >>1.inf
echo AuditProcessTracking=0 >>1.inf
echo AuditDSAccess=0 >>1.inf
echo AuditAccountLogon=0 >>1.inf
echo AuditLogonEvents=0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log /quiet
del 1.*
也許有人會說:組策略不是保存在註冊表中嗎,為什麼不直接修改註冊表?因為不是所有的組策略都保存在註冊表中。比如“審核策略”就不是。你可以用 regsnap比較修改該策略前後註冊表的變化。我測試的結果是什麼都沒有改變。只有“管理模板”這一部分是完全基於註冊表的。而且,知道了具體位置,用哪個方法都不複雜。
比如,XP和2003的“本地策略”-》“安全選項”增加了一個“本地帳戶的共享和安全模式”策略。XP下默認的設定是“僅來賓”。這就是為什麼用管理員帳號連線XP的ipc$仍然只有Guest許可權的原因。可以通過導入reg檔案修改它為“經典”:
echo Windows Registry Editor Version 5.00 >1.reg
echo [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa] >>1.reg
echo "forceguest"=dword:00000000 >>1.reg
regedit /s 1.reg
del 1.reg
而相應的用inf,應該是:
echo [version] >1.inf
echo signature="$CHICAGO$" >>1.inf
echo [Registry Values] >>1.inf
echo MACHINE/System/CurrentControlSet/Control/Lsa/ForceGuest=4,0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log
del 1.*
關於命令行下讀取組策略的問題。
系統默認的安全資料庫位於%windir%/security/database/secedit.sdb,將它導出至inf檔案:
secedit /export /cfg gp.inf /log 1.log
沒有用/db參數指定資料庫就是採用默認的。然後查看gp.inf。
不過,這樣得到的只是組策略的一部分(即“Windows設定”)。而且,某個策略如果未配置,是不會被導出的。比如“重命名系統管理員帳戶”,只有被定義了才會在inf檔案中出現NewAdministratorName="xxx"。對於無法導出的其他的組策略只有通過訪問註冊表來獲得了。
此辦法在XP和2003下無效——可以導出但內容基本是空的。原因不明。根據官方的資料,XP和2003顯示組策略用RSoP(組策略結果集)。相應的命令行工具是gpresult。但是,它獲得的是在系統啟動時被附加(來自域)的組策略,單機測試結果還是“空”。所以,如果想知道某些組策略是否被設定,只有先寫一個inf,再用secedit /analyze,然後查看日誌了。

相關詞條

熱門詞條

聯絡我們