本地组策略与安全策略的自动导入
昨天接到一个需求,由于公司要求服务器要部署必需的一些安全策略,但是对于未加入域的服务器希望能有一个便捷的部署办法。
首先,提取出需要部署的策略中能通过组策略或安全策略实施的项如表所示(部分演示):
序号 | 要求 |
1 | “密码必须符合复杂性要求”选择“已启动” |
2 | “密码最长存留期”设置为“90天” |
3 | “账户锁定阀值”设置为小于或等于 6次 |
4 | “从远端系统强制关机”设置为“只指派给Administrtors组” |
5 | “关闭系统”设置为“只指派给Administrators组” |
6 | “取得文件或其它对象的所有权”设置为“只指派给Administrators组” |
7 | 审核登录事件,设置为成功和失败都审核。 |
8 | “审核策略更改”设置为“成功” 和“失败”都要审核 |
9 | “审核对象访问”设置为“成功”和“失败”都要审核 |
10 | “审核目录服务器访问”设置为“成功” 和“失败”都要审核 |
11 | “审核目录服务器访问”设置为“成功” 和“失败”都要审核 |
12 | “审核系统事件”设置为“成功” 和“失败”都要审核 |
13 | “审核账户管理”设置为“成功” 和“失败”都要审核 |
14 | “审核过程追踪”设置为 “失败”需要审核 |
15 | “Microsoft网络服务器”设置为“在挂起会话之前所需的空闲时间”为15分钟。 |
16 | 启用屏幕保护程序,设置等待时间为“5分钟”,启用“在恢复时使用密码保护”。 |
17 | 所有驱动器均“关闭自动播放” |
上表中前15项属于安全策略,第16项属于组策略中的计算机配置策略,第17项属于用户配置策略。下面仅对Windows 2003平台的操作进行了分析与测试。
一、 对于安全策略,可以用以下步骤进行应用部署:
::在测试用机上,先使用gpedit.msc手工更改策略(如表中前15面),再用以下命令导出当前策略
secedit /export /cfg sec.inf
::用文本编辑器编辑sec.inf文件,去除不需要调整的内容,仅保留要定制策略
表中15条策略对应的inf文件内容如下:
[Unicode] |
::用命令生成一个sdb文件
secedit /configure /db sec.sdb /cfg sec.inf
::用命令把定制策略更新到目标服务器,不能用/overwrite参数,否则除定制策略外的其它策略丢失
secedit /configure /db sec.sdb
::刷新组策略
gpupdate /force
二、其他组策略的应用
以前曾经研究过利用gpcvreg与gpscript命令行程序来应用组策略,并且写了autoit3脚本的UDF,这次正好可以利用。
使用gpedit.msc在测试机修改16/17两条策略,在不关闭gpedit.msc的同时用regedit查看HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Group Policy Objects下,分析得到相应设置并存成Reg文件
machine.reg, 禁用所有驱动器自动播放
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer] "NoDriveTypeAutoRun"=dword:000000FF |
user.reg,定制屏幕保护设置
[HKEY_CURRENT_USER/Software/Policies/Microsoft/Windows/Control Panel/Desktop] "ScreenSaverIsSecure"="1" "ScreenSaveActive"="1" "ScreenSaveTimeOut"="300" "SCRNSAVE.EXE"="scrnsave.scr" |
三、批量应用脚本
有了sec.sdb、machine.reg及user.reg文件,然后利用以前写的poledit.au3 UDF ,只需要以下脚本就可以进行前文所列出的策略的自动应用了。
#RequireAdmin
#NoTrayIcon
#include "PolEdit.au3"
If FileExists("sec.sdb") Then RunWait(@ComSpec & " /c " & "secedit /configure /db sec.sdb", @ScriptDir, @SW_HIDE)
_RegWriteToPol("machine.reg", "MACHINE", 1)
_RegWriteToPol("user.reg")
_gpupdate()