本文將說明如何使用 [群組原則] 對 Windows Server 2003 網域或 Windows 2000 網域中的 Microsoft Windows Vista 用戶端電腦進行安全性稽核設定。Windows Vista 可以讓您使用稽核原則子類別目錄,在更詳細的層級管理稽核原則。本文將說明部署自訂稽核原則的程序,系統管理員可以透過這項程序對 Windows Vista 用戶端電腦套用詳細安全性稽核設定。
本文將說明如何使用 [群組原則] 對 Windows Server 2003 網域或 Windows 2000 網域中的
Windows Vista 用戶端電腦進行詳細的安全性稽核設定。在 Windows Vista 中控制個別的稽核原則子類別目錄,要比使用舊版的 Windows
作業系統更容易許多。Windows Vista 中的個別稽核原則子類別目錄不會顯示在 [群組原則]
工具介面上。系統管理員可以運用本文說明的程序部署自訂稽核原則,將詳細的安全性稽核設定套用到 Windows Server 2003 網域或 Windows
2000 網域中的 Windows Vista 用戶端電腦。
應考慮的重點
在實際執行本文所探討的程序之前,請先考量下列事項:
- 這個程序需要使用範例程式碼,而這個範例程式碼則需使用 Netlogon 共用。此外,這個範例程式碼也會使用
%SystemRoot%\Temp 資料夾作為快取位置。
- 本程序會使用 Contoso.com 範例網域。
- 這個程序是根據下列條件所設計的:
- 您已熟悉下列技術和工具:
- 群組原則啟動指令碼
- 群組原則管理主控台
- Auditpol.exe 命令列工具
- 您對批次檔處理已有基本的瞭解。
- 您可以對 Windows Server 2003 網域或 Windows 2000 網域中的 Windows
Vista 用戶端電腦設定一項稽核原則。這個稽核原則是指派到 [預設網域原則]。
- 您已經熟悉本程序用來以 Windows Vista
中詳細稽核原則設定強制覆蓋舊版網域稽核原則設定的指令碼。如果您不想設定 Windows Vista
中的詳細稽核原則設定,請不要執行本文中說明的程序。
使用 [群組原則] 對 Windows Vista 用戶端電腦進行詳細的安全性稽核設定
如果要使用 [群組原則] 對 Windows Server 2003 網域或 Windows 2000 網域中的 Windows
Vista 用戶端電腦進行詳細的安全性稽核設定,請依照下列步驟執行。
步驟 1:決定您要部署到 Windows Vista 用戶端電腦的安全性稽核設定
- 使用具有系統管理員認證的使用者身分登入 Windows Vista 電腦。
- 按一下 [開始],指向 [所有程式],按一下
[附屬應用程式],以滑鼠右鍵按一下 [命令提示字元],然後再按
[以系統管理員身分執行]。
- 在 [使用者帳戶控制] 對話方塊中,按一下
[繼續]。
- 清除預設的稽核原則設定。如果要執行這項操作,請在命令提示字元輸入下列命令,然後按 ENTER 鍵:
auditpol /clear
- 使用 Auditpol.exe
命令列工具設定您要的自訂稽核原則設定。
例如,請在命令提示字元輸入下列命令,並在每一行後按下 ENTER 鍵:auditpol /set /subcategory:"user account management" /success:enable /failure:enable
auditpol /set /subcategory:"logon" /success:enable /failure:enable
auditpol /set /subcategory:"IPSEC Main Mode" /failure:enable
注意 如果要查看所有可能的類別目錄和子類別目錄,請在命令提示字元輸入下列命令,然後按下 ENTER 鍵:auditpol /list /subcategory:*
- 在命令提示字元中輸入下列命令,然後按下 ENTER 鍵:
auditpol /backup /file:auditpolicy.txt
- 將 Auditpolicy.txt 檔案複製到在網域中具有主要網域控制站 (PDC) 模擬器角色之網域控制站的
Netlogon 共用。
Auditpolicy.txt
檔案會包含您所設定的所有稽核原則設定。啟動指令碼會使用這個檔案來重新套用原則。成功套用啟動指令碼一次之後,您不需要重新啟動電腦來更新稽核原則設定。如果要更新稽核原則設定,請覆寫您複製到
Netlogon 共用的舊版 Auditpolicy.txt 檔案。如果要執行這項操作,請建立一個新的 Auditpolicy.txt 檔案,然後將這個新的
Auditpolicy.txt 檔案複製到 Netlogon 共用。
步驟 2:防止舊版網域稽核原則覆寫 Windows Vista 用戶端電腦上的稽核原則
如果要防止舊版網域稽核原則覆寫這個稽核原則,您必須啟用
[強制稽核原則子類別目錄設定 (Windows Vista
以後版本) 強制覆蓋稽核原則類別目錄設定] 原則設定。這一點便可防止網域稽核原則覆寫 Windows Vista
用戶端電腦上更詳細的稽核原則設定。如果要執行這項操作,請依照下列步驟執行:
- 在已加入這個網域的 Windows Vista 用戶端電腦上,開啟 [預設網域原則]。
- 依序展開 [電腦設定]、[Windows
設定]、[安全性設定]、[本機原則],然後按一下
[安全性選項]。
- 按兩下 [稽核: 強制稽核原則子類別目錄設定 (Windows Vista 以後版本)
強制覆蓋稽核原則類別目錄設定]。
- 按一下 [啟用],再按一下 [確定]。
步驟 3:建立指令碼,然後將指令碼加入到 Netlogon 共用
Microsoft
僅提供示範性的程式設計範例,不做任何明示或默示的保證。其中包括 (但不限於)
其適售性與適合某特定用途之默示擔保。本文將假設您已相當熟悉示範所使用的程式設計語言,以及用於建立和偵錯程序的工具。Microsoft
技術支援工程師可以協助說明特定程序的功能,但不會修改這些範例以提供附加功能或建構程序來滿足您的特定需求。
- 建立 AuditPolicy.cmd 指令碼。如果要執行這項操作,請依照下列步驟執行:
- 啟動 [記事本] 並且開啟空白文件。
- 將下列程式碼貼到 [記事本] 中:
@echo off
REM AuditPolicy.cmd
REM (c) 2006 Microsoft Corporation. All rights reserved.
REM Sample Audit Script to deploy Windows Vista
REM Granular Audit Policy settings.
REM Should be run as a startup script from Group Policy
REM ###################################################
REM Declare Variables so that we only need to edit file
REM names/paths in one location in script
REM ###################################################
set AuditPolicyLog=%systemroot%\temp\auditpolicy.log
set OSVersionSwap=%systemroot%\temp\osversionwap.txt
set OsVersionTxt=%systemroot%\temp\osversion.txt
set MachineDomainTxt=%systemroot%\temp\machinedomain.txt
set MachineDomainSwap=%systemroot%\temp\machinedomainSwap.txt
set ApplyAuditPolicyCMD=applyauditpolicy.cmd
set AuditPolicyTxt=auditpolicy.txt
REM ###################################################
REM Clear Log & start fresh
REM ###################################################
if exist %AuditPolicyLog% del %AuditPolicyLog% /q /f
date /t > %AuditPolicyLog% & time /t >> %AuditPolicyLog%
echo.
REM ###################################################
REM Check OS Version
REM ###################################################
ver | findstr "[" > %OSVersionSwap%
for /f "tokens=2 delims=[" %%i in (%OSVersionSwap%) do echo %%i > %OsVersionTxt%
for /f "tokens=2 delims=] " %%i in (%OsVersionTxt%) do set osversion=%%i
echo OS Version=%osversion% >> %AuditPolicyLog%
REM ###################################################
REM Skip Pre-Vista
REM ###################################################
if "%osversion%" LSS "6.0" exit /b 1
REM ###################################################
REM Get Domain Name
REM ###################################################
WMIC /namespace:\\root\cimv2 path Win32_ComputerSystem get domain /format:list > %MachineDomainSwap%
find /i "Domain=" %MachineDomainSwap% > %MachineDomainTxt%
for /f "Tokens=2 Delims==" %%i in (%MachineDomainTxt%) do set machinedomain=%%i
echo Machine domain=%machinedomain% >> %AuditPolicyLog%
REM ###################################################
REM Copy Script & Policy to Local Directory or Terminate
REM ###################################################
xcopy \\%machinedomain%\netlogon\%ApplyAuditPolicyCMD% %systemroot%\temp\*.* /r /h /v /y
if %ERRORLEVEL% NEQ 0 (
echo Could not read \\%machinedomain%\netlogon\%ApplyAuditPolicyCMD% >> %AuditPolicyLog%
exit /b 1
) else (
echo Copied \\%machinedomain%\netlogon\%ApplyAuditPolicyCMD% to %systemroot%\temp >> %AuditPolicyLog%
)
xcopy \\%machinedomain%\netlogon\%AuditPolicyTxt% %systemroot%\temp\*.* /r /h /v /y
if %ERRORLEVEL% NEQ 0 (
echo Could not read \\%machinedomain%\netlogon\%AuditPolicyTxt% >> %AuditPolicyLog%
exit /b 1
) else (
echo Copied \\%machinedomain%\netlogon\%AuditPolicyTxt% to %systemroot%\temp >> %AuditPolicyLog%
)
REM ###################################################
REM Create Named Scheduled Task to Apply Policy
REM ###################################################
%systemroot%\system32\schtasks.exe /create /ru System /tn audit /sc hourly /mo 1 /f /rl highest /tr "%systemroot%\temp\%ApplyAuditPolicyCMD%"
if %ERRORLEVEL% NEQ 0 (
echo Failed to create scheduled task for Audit >> %AuditPolicyLog%
exit /b 1
) else (
echo Created scheduled task for Audit >> %AuditPolicyLog%
)
REM ###################################################
REM Start Named Scheduled Task to Apply Policy
REM ###################################################
%systemroot%\system32\schtasks.exe /run /tn audit
if %ERRORLEVEL% NEQ 0 (
Failed to execute scheduled task for Audit >> %AuditPolicyLog%
) else (
echo Executed scheduled task for Audit >> %AuditPolicyLog%
) - 在 [檔案] 功能表上,按一下
[儲存檔案]。
- 在 [存檔類型] 方塊中,按一下
[所有檔案],在 [檔名] 方塊中輸入
AuditPolicy.cmd,然後按一下 [儲存]。
- 建立 AuditPolicy.cmd 指令碼。如果要執行這項操作,請依照下列步驟執行:
- 啟動 [記事本] 並且開啟空白文件。
- 將下列程式碼貼到 [記事本] 中:
@echo off
REM ApplyAuditPolicy.cmd
REM (c) 2006 Microsoft Corporation. All rights reserved.
REM Sample Audit Script to deploy Windows Vista
REM Granular Audit Policy settings.
REM ###################################################
REM Declare Variables so that we only need to edit file
REM names/paths in one location in script
REM ###################################################
set DeleteAudit=DeleteAudit.txt
set AuditPolicyLog=%systemroot%\temp\AuditPolicy.log
set ApplyAuditPolicyLog=%systemroot%\temp\ApplyAuditPolicy.log
set OSVersionSwap=%systemroot%\temp\osversionwap.txt
set OsVersionTxt=%systemroot%\temp\osversion.txt
set MachineDomainTxt=%systemroot%\temp\machinedomain.txt
set MachineDomainSwap=%systemroot%\temp\machinedomainSwap.txt
set ApplyAuditPolicyCMD=ApplyAuditpolicy.cmd
set AuditPolicyTxt=AuditPolicy.txt
REM ###################################################
REM Clear Log & start fresh
REM ###################################################
if exist %ApplyAuditPolicyLog% del %ApplyAuditPolicyLog% /q /f
date /t > %ApplyAuditPolicyLog% & time /t >> %ApplyAuditPolicyLog%
echo.
REM ###################################################
REM Check OS Version
REM ###################################################
ver | findstr "[" > %OSVersionSwap%
for /f "tokens=2 delims=[" %%i in (%OSVersionSwap%) do echo %%i > %OsVersionTxt%
for /f "tokens=2 delims=] " %%i in (%OsVersionTxt%) do set osversion=%%i
echo OS Version=%osversion% >> %ApplyAuditPolicyLog%
REM ###################################################
REM Skip Pre-Vista
REM ###################################################
if "%osversion%" LSS "6.0" exit /b 1
REM ###################################################
REM Get Domain Name
REM ###################################################
WMIC /namespace:\\root\cimv2 path Win32_ComputerSystem get domain /format:list > %MachineDomainSwap%
find /i "Domain=" %MachineDomainSwap% > %MachineDomainTxt%
for /f "Tokens=2 Delims==" %%i in (%MachineDomainTxt%) do set machinedomain=%%i
echo Machine domain=%machinedomain% >> %ApplyAuditPolicyLog%
REM ###################################################
REM Delete Audit Task
REM Should only be used to remove the pseudo-policy from
REM client machines (designed for future Vista revisions
REM where this script will no longer be necessary, and this
REM script needs to be backed out).
REM to use, simply create a file in NETLOGON with a name
REM that matches the contents of DeleteAudit variable (above)
REM ###################################################
if exist \\%machinedomain%\netlogon\%DeleteAudit% (
%systemroot%\system32\schtasks.exe /delete /tn "Audit" /F
DEL %AuditPolicyLog%
DEL %ApplyAuditPolicyLog%
DEL %OSVersionSwap%
DEL %OsVersionTxt%
DEL %MachineDomainTxt%
DEL %MachineDomainSwap%
DEL %systemroot%\temp\%ApplyAuditPolicyCMD%
DEL %systemroot%\temp\%AuditPolicyTxt%
exit /b 1
)
REM ###################################################
REM Copy Audit Policy to Local Directory
REM This is tolerant of failures since the copy is just
REM a "cache refresh".
REM ###################################################
xcopy \\%machinedomain%\netlogon\%AuditPolicyTxt% %systemroot%\temp\*.* /r /h /v /y
if %ERRORLEVEL% NEQ 0 (
echo Could not read \\%machinedomain%\netlogon\%AuditPolicyTxt% so using previous cached copy>> %ApplyAuditPolicyLog%
) else (
echo Copied \\%machinedomain%\netlogon\%AuditPolicyTxt% to %systemroot%\temp >> %ApplyAuditPolicyLog%
)
REM ###################################################
REM Apply Policy
REM ###################################################
%systemroot%\system32\auditpol.exe /restore /file:%systemroot%\temp\%AuditPolicyTxt%
if %ERRORLEVEL% NEQ 0 (
Failed to apply audit settings >> %ApplyAuditPolicyLog%
) else (
echo Successfully applied audit settings >> %ApplyAuditPolicyLog%
) - 在 [檔案] 功能表上,按一下
[儲存檔案]。
- 在 [存檔類型] 方塊中,按一下
[所有檔案],在 [檔名] 方塊中輸入
ApplyAuditPolicy.cmd,然後按一下
[儲存檔案]。
- 將 AuditPolicy.cmd 指令碼和 ApplyAuditPolicy.cmd 指令碼複製到在網域中具有
PDC 模擬器角色之網域控制站的 Netlogon 共用。
- 等候 Active Directory 進行複寫。並且等候系統磁碟區 (SYSVOL)
共用資料夾中的檔案和資料夾複寫到此網域中的網域控制站。
- 將這個啟動指令碼加入到 [預設網域原則]。如果要執行這項操作,請依照下列步驟執行:
- 啟動 [Active Directory 使用者及電腦] 工具。
- 以滑鼠右鍵按一下
[DomainName],再按一下
[內容]。
- 依序按一下 [群組原則]
索引標籤、[預設網域原則]、[編輯]。[群組原則物件編輯器] 工具便會啟動。
- 依序展開 [電腦設定]、[Windows
設定],然後按一下 [指令碼 (啟動/關機)]。
- 按兩下 [啟動],然後按一下
[新增]。
- 在 [指令碼名稱] 方塊中,輸入 AuditPolicy.cmd 檔案在
Netlogon 共用中的通用命名慣例 (UNC) 路徑。請使用下列格式:
\\FullyQualifiedDomainName\Netlogon\AuditPolicy.cmd
例如,輸入
\\contoso.com\netlogon\auditpolicy.cmd。 - 按兩次 [確定]。
步驟 4:確認這個安全性稽核設定是否能順利套用
- 等候 Active Directory 進行複寫。並且等候系統磁碟區 (SYSVOL)
共用資料夾中的檔案和資料夾複寫到此網域中的網域控制站。
- 重新啟動已加入這個網域的 Windows Vista
用戶端電腦,然後,以具有系統管理員認證的使用者身分登入電腦。
- 按一下 [開始],指向 [所有程式],然後按一下
[附屬應用程式]。
- 以滑鼠右鍵按一下 [命令提示字元],然後按一下
[以系統管理員身分執行]。
- 在 [使用者帳戶控制] 對話方塊中,按一下
[繼續]。
- 在命令提示字元中輸入下列命令,然後按下 ENTER 鍵:
auditpol /get /category:*
- 確認顯示在命令提示字元的安全性稽核設定,是否與您在「步驟 1:決定您要部署到 Windows Vista
用戶端電腦的安全性稽核設定」中所建立的 AuditPolicy.txt 檔案中的設定的相符。
如果安全性稽核設定不相符,請檢查
%SystemRoot%\Temp 資料夾中啟動指令碼所產生的記錄檔。如果 %SystemRoot%\Temp 資料夾中沒有記錄檔,請檢查 Windows
Vista 用戶端電腦,判斷 [群組原則] 不能套用的原因。
如需在 Active Directory 中設定啟動指令碼的詳細資訊,請造訪下列 Microsoft 網站:
如果需要有關「群組原則管理主控台」的詳細資訊,請造訪下列 Microsoft 網站:
如果需要有關 Auditpol.exe 命令列工具和 Schtasks.exe 命令列工具的詳細資訊,請參閱 Windows
Vista 說明及支援中心。