Windows Server开启审计功能
Windows Server 也具备强大的审计功能,可以记录各种系统事件和用户活动,以满足安全审计、合规性要求和故障排除的需求。 Windows Server 的审计功能非常灵活和可配置,可以精确地记录您关心的事件类型。
一、Windows Server 审计功能概述
Windows Server 的审计系统主要基于 安全日志 (Security Log)。 系统会将符合您配置的审计策略的事件记录到安全日志中。 这些事件可以包括:
- 账户登录和注销事件: 例如用户成功或失败的登录尝试、账户锁定、Kerberos 身份验证等。
- 对象访问事件: 例如文件、文件夹、注册表项、打印机等的访问、修改、删除操作。
- 特权使用事件: 例如管理员权限的使用、安全策略的更改、系统时间的更改等。
- 进程跟踪事件: 例如进程的创建、终止、进程信息的访问等。
- 策略更改事件: 例如审计策略的更改、用户权限的更改、密码策略的更改等。
- 系统事件: 例如系统启动、关闭、系统时间更改、安全服务启动停止等。
- 目录服务访问事件 (针对域控制器): 例如 Active Directory 对象的访问、复制等。
- 账户管理事件: 例如用户账户、组账户的创建、删除、修改等。
二、开启 Windows Server 审计功能的方法
您可以通过多种方式开启和配置 Windows Server 的审计功能,最常用的方法是通过 组策略 (Group Policy) 和 本地安全策略 (Local Security Policy) 以及 命令行工具 auditpol.exe
。
1、使用组策略 (Group Policy) 配置审计 (推荐用于域环境)
组策略是管理域环境中计算机配置的强大工具。 通过组策略配置审计策略,可以集中管理域内多台服务器和客户端的审计设置。
-
打开组策略管理控制台 (Group Policy Management Console, GPMC):
- 在域控制器或安装了 GPMC 工具的计算机上,按下
Win + R
,输入gpmc.msc
,然后点击 “确定”。
- 在域控制器或安装了 GPMC 工具的计算机上,按下
-
找到要配置的组策略对象 (GPO):
- 可以选择编辑 默认域策略 (Default Domain Policy) (影响整个域,谨慎使用) 或者创建一个新的 GPO 并链接到特定的组织单元 (OU) 或域。
- 建议创建新的 GPO 并链接到包含目标服务器的 OU,以便更精细地控制审计范围。
-
编辑选定的 GPO:
- 右键单击选定的 GPO,选择 “编辑”。 这将打开 组策略管理编辑器 (Group Policy Management Editor)。
-
导航到审计策略设置:
- 在组策略管理编辑器中,展开以下路径:
- 计算机配置 (Computer Configuration)
- 策略 (Policies)
- Windows 设置 (Windows Settings)
- 安全设置 (Security Settings)
- 本地策略 (Local Policies)
- 审核策略 (Audit Policy) (旧版的审核策略,功能相对简单)
- 高级审核策略配置 (Advanced Audit Policy Configuration) (推荐使用,功能更强大更精细)
- 在组策略管理编辑器中,展开以下路径:
-
配置审计策略:
- 在 审核策略 或 高级审核策略配置 下,您会看到各种审计类别。
- 旧版的审核策略 (Audit Policy): 双击您要配置的审计类别 (例如 "审核账户登录事件")。 在弹出的对话框中,您可以选择 "成功" 和/或 "失败" 复选框,以记录成功或失败的事件。
- 高级审核策略配置 (Advanced Audit Policy Configuration): 展开 高级审核策略配置,您会看到更细粒度的审计子类别。 展开您要配置的类别 (例如 "账户登录"),然后选择要配置的子类别 (例如 "审核 Kerberos 身份验证服务")。 双击子类别,在弹出的对话框中,选择 "配置以下审核事件",然后选择 "成功" 和/或 "失败" 复选框。
-
示例:开启账户登录成功的审计 (使用高级审核策略配置):
- 导航到:计算机配置 -> 策略 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项 -> 高级审核策略配置 -> 审核策略 -> 账户登录
- 双击 审核 Kerberos 身份验证服务。
- 勾选 配置以下审核事件。
- 勾选 成功 (如果您也想审计失败的登录,可以同时勾选 “失败”)。
- 点击 “确定”。
-
更新组策略:
- 在目标服务器上,打开命令提示符 (以管理员身份运行),执行命令
gpupdate /force
强制刷新组策略,使新的审计策略生效。
- 在目标服务器上,打开命令提示符 (以管理员身份运行),执行命令
2、使用本地安全策略 (Local Security Policy) 配置审计 (适用于独立服务器或测试环境)
本地安全策略用于配置单台计算机的安全设置。 如果您只需要配置单台 Windows Server 的审计策略,可以使用本地安全策略。
-
打开本地安全策略编辑器 (Local Security Policy Editor):
- 在目标服务器上,按下
Win + R
,输入secpol.msc
,然后点击 “确定”。
- 在目标服务器上,按下
-
导航到审计策略设置:
- 在本地安全策略编辑器中,展开以下路径:
- 安全设置 (Security Settings)
- 本地策略 (Local Policies)
- 审核策略 (Audit Policy) (旧版的审核策略)
- 高级审核策略配置 (Advanced Audit Policy Configuration) (推荐使用)
- 在本地安全策略编辑器中,展开以下路径:
-
配置审计策略: 配置步骤与组策略中的配置方法基本相同 (参见上面的 组策略配置审计策略 部分的步骤)。
3、使用命令行工具 auditpol.exe
配置审计
auditpol.exe
是一个强大的命令行工具,用于管理和配置审核策略。 它提供了更灵活和自动化的审计配置方式,可以用于脚本或批量配置。
-
打开命令提示符 (以管理员身份运行)
-
使用
auditpol.exe /set /category:<审计类别> /success:<enable|disable> /failure:<enable|disable>
命令配置审计:<审计类别>
: 指定要配置的审计类别,例如 "Account Logon", "Object Access", "Privilege Use" 等。 可以使用auditpol.exe /list /category:*
命令查看所有可用的审计类别。/success:<enable|disable>
: 指定是否审计成功的事件 (enable
或disable
)。/failure:<enable|disable>
: 指定是否审计失败的事件 (enable
或disable
)。
-
示例:开启账户登录成功的审计 (使用
auditpol.exe
):auditpol.exe /set /category:"Account Logon" /success:enable /failure:disable
-
使用
auditpol.exe /get /category:*
命令查看当前审计策略配置:auditpol.exe /get /category:*
三、常见的审计类别和示例
以下是一些常用的审计类别以及它们能够记录的事件示例:
-
账户登录 (Account Logon):
- 成功登录/失败登录: 记录用户尝试登录系统或域的事件,包括用户名、登录时间和登录来源等信息。
- Kerberos 身份验证服务: 记录 Kerberos 票据授权票据 (TGT) 和服务票据的请求和颁发事件。
- 凭据验证: 记录凭据验证过程,例如 NTLM 身份验证、CredSSP 身份验证等。
-
账户管理 (Account Management):
- 用户账户管理: 记录用户账户的创建、删除、修改、启用、禁用、密码更改等事件。
- 组管理: 记录组的创建、删除、修改、成员关系更改等事件。
- 计算机账户管理: 记录计算机账户的创建、删除、修改等事件。
-
目录服务访问 (Directory Service Access) (针对域控制器):
- 目录服务访问: 记录对 Active Directory 对象的访问尝试。
- 目录服务更改: 记录 Active Directory 对象的创建、修改、删除等事件。
- 目录服务复制: 记录域控制器之间 Active Directory 数据的复制事件。
-
详细跟踪 (Detailed Tracking):
- 进程创建: 记录新进程的创建事件,包括创建进程的用户、进程 ID、进程名称、命令行参数等信息。 这是审计用户执行命令的关键类别。
- 进程终止: 记录进程的终止事件。
- DPAPI 活动: 记录数据保护 API (DPAPI) 的活动,用于加密密钥的管理。
-
DS 更改 (DS Changes) (针对域控制器): 与 "目录服务更改 (Directory Service Changes)" 类似,但更细粒度地审计 Active Directory 的更改。
-
登录/注销 (Logon/Logoff):
- 登录: 记录用户成功登录到本地计算机或网络会话的事件。
- 注销: 记录用户从本地计算机或网络会话注销的事件。
- 账户锁定: 记录账户由于多次登录失败而被锁定的事件。
- 网络策略服务器: 记录网络策略服务器 (NPS) 的活动,用于网络访问控制。
-
对象访问 (Object Access):
- 文件系统: 记录对文件和文件夹的访问、修改、删除、权限更改等操作。 需要配置系统审核访问控制列表 (SACL) 才能生效。
- 注册表: 记录对注册表项的访问、修改、删除、权限更改等操作。 需要配置系统审核访问控制列表 (SACL) 才能生效。
- 内核对象、SAM、共享、打印机等: 记录对其他类型对象的访问事件。 通常也需要配置 SACL。
-
策略更改 (Policy Change):
- 审核策略更改: 记录审核策略自身的更改事件。
- 身份验证策略更改: 记录身份验证策略 (例如 Kerberos 策略、密码策略) 的更改事件。
- 授权策略更改: 记录用户权限和访问控制策略的更改事件。
- MPSSVC 规则级别策略更改、过滤平台策略更改、IPsec 策略更改、其他策略更改、组策略对象: 记录与网络安全、组策略相关的策略更改事件。
-
特权使用 (Privilege Use):
- 特权使用: 记录用户执行敏感操作或使用特权 (例如管理员权限) 的事件。 例如,提升进程权限、调试程序、加载设备驱动程序等。
-
系统 (System):
- 安全状态更改: 记录系统安全状态的更改事件,例如安全子系统启动、身份验证包加载等。
- 安全系统扩展: 记录安全系统扩展 (例如身份验证提供程序) 的事件。
- 系统时间和更改: 记录系统时间更改事件。
- IPsec 驱动程序: 记录 IPsec 驱动程序的事件。
- 其他系统事件: 记录其他系统级别的事件。
四、查看 Windows Server 审计日志
Windows Server 的审计日志记录在 事件查看器 (Event Viewer) 的 Windows 日志 -> 安全 (Security) 日志中。
- 打开事件查看器 (Event Viewer):
- 按下
Win + R
,输入eventvwr.msc
,然后点击 “确定”。
- 按下
- 导航到安全日志 (Security Log):
- 在事件查看器左侧的导航栏中,展开 Windows 日志 (Windows Logs),然后选择 安全 (Security)。
- 查看和筛选审计日志:
- 安全日志中会显示所有记录的审计事件。
- 您可以使用事件查看器的筛选功能 (右侧的 “操作” 栏 -> “筛选当前日志”),根据事件 ID、日期、用户、关键字等条件筛选和查找特定的审计事件。
- 可以通过点击事件来查看事件的详细信息,包括事件描述、用户、时间、计算机、事件级别、来源等信息。
五、高级审核策略配置 (Advanced Audit Policy Configuration)
Windows Server 2008 R2 及更高版本引入了 “高级审核策略配置”,提供了更精细的审计控制。 与旧版的 “审核策略” 相比,高级审核策略:
- 更细粒度的审计子类别: 将每个审计类别细分为更具体的子类别,例如 “账户登录” 类别下有 “审核 Kerberos 身份验证服务”、“审核 Kerberos 服务票据操作”、“审核其他账户登录事件” 等子类别,让您可以更精确地选择需要审计的事件。
- 命令行管理工具
auditpol.exe
: 提供了强大的命令行工具auditpol.exe
,方便自动化和批量配置。 - 与组策略更紧密的集成: 高级审核策略配置完全集成到组策略中,方便集中管理域环境的审计策略。
重要注意事项
- 安全日志的保护: 安全日志包含敏感的安全信息,务必保护好安全日志,防止未授权访问、修改或删除。 建议限制安全日志文件的访问权限,并考虑配置安全日志的转发和备份,将日志传输到专门的日志服务器进行集中管理和安全存储。
- 性能影响: 开启过多的审计项目可能会对系统性能产生一定影响,特别是当系统事件频繁发生时。 建议根据实际需求,谨慎选择需要审计的事件类型,避免过度审计。 在生产环境中,需要评估性能影响,并进行适当的配置优化。
- 日志空间管理: 审计日志会快速增长,需要配置合理的日志大小限制和日志轮转策略,定期归档和清理旧的日志,以防止磁盘空间被耗尽。 可以在事件查看器中配置安全日志的最大大小和覆盖策略。
- 用户隐私: 审计日志可能记录用户的敏感操作,需要遵守相关的法律法规和公司政策。 在启用审计功能之前,应评估其必要性,并告知用户可能会记录其操作,并确保审计策略符合隐私政策。
- 测试和验证: 在生产环境应用审计策略之前,务必在测试环境中进行充分的测试和验证,确保审计策略能够记录您期望的事件,并且不会对系统性能产生不可接受的影响。
六、审计日志的权限控制
1、权限说明
-
安全日志的权限控制: Windows Server 的安全日志(Security Log)受到操作系统的保护,默认情况下,只有
SYSTEM
账户和Administrators
组的成员才能完全访问和管理安全日志。 -
管理员权限: 属于本地
Administrators
组或域Domain Admins
/Enterprise Admins
组的用户,在 Windows Server 中拥有极高的权限。 他们可以使用以下方法删除或清除安全日志:- 事件查看器 (Event Viewer): 通过事件查看器,管理员可以手动清除安全日志。
wevtutil.exe
命令行工具:wevtutil.exe
命令行工具允许管理员通过命令行清除事件日志,包括安全日志。例如,命令wevtutil cl Security
可以清除安全日志。- PowerShell 命令: PowerShell 也提供了 cmdlet 来清除事件日志,例如
Clear-EventLog -LogName Security
。 - 直接文件操作 (理论上更复杂,但并非不可能): 虽然直接操作安全日志文件(通常是
.evt
或.evtx
文件)比较复杂,但理论上拥有SYSTEM
权限或足够高权限的管理员,通过一些技术手段(例如使用调试工具或内核驱动程序),仍然有可能绕过操作系统的保护机制,直接修改或删除安全日志文件。但这通常需要更高的技术水平,并且可能会留下更明显的痕迹。
2、为什么 "越级管理员" 可以删除审计日志?
操作系统的设计初衷是为了让管理员能够管理和维护系统,包括日志文件。 在某些情况下,管理员可能需要清理旧日志以释放磁盘空间,或者在系统故障排除时需要管理日志文件。 因此,操作系统默认赋予了管理员管理日志文件的权限。
3、安全风险:审计日志被删除的影响
如果 "越级管理员" 可以随意删除审计日志,会带来严重的安全风险:
- 掩盖恶意活动: 恶意管理员或被攻陷的管理员账号可以删除审计日志,从而掩盖其非法操作,例如未经授权的访问、数据泄露、系统破坏等。 这使得安全事件的追踪和调查变得极其困难,甚至不可能。
- 违反合规性要求: 许多行业和法规(例如 PCI DSS, HIPAA, SOX 等)要求组织必须保留完整的审计日志,以进行安全审计和合规性检查。 如果审计日志可以被轻易删除,将无法满足这些合规性要求。
- 内部威胁难以检测: 内部威胁(insider threat)是企业安全面临的重要挑战。 如果内部人员(特别是拥有高权限的管理员)可以删除审计日志,那么内部恶意行为将更难被发现和制止。
4、如何防止或检测审计日志被 "越级管理员" 删除?
虽然完全阻止 "越级管理员" 删除审计日志在技术上可能非常困难或不可能(因为他们拥有系统最高权限),但我们可以采取多种措施来降低风险,并提高检测日志删除行为的能力:
1.通用安全措施 (适用于 Linux 和 Windows):
-
最小权限原则 (Principle of Least Privilege): 严格控制管理员账号的数量和权限范围。 只授予用户完成其工作所需的最小权限,避免过度授权。 不是所有管理员都需要具备删除审计日志的权限。
-
职责分离 (Separation of Duties): 将系统管理职责进行分离,例如安全管理员负责审计策略和日志管理,而系统管理员负责日常系统维护。 不同的角色应由不同的人员担任,以形成相互制衡,减少单点故障和滥用权限的风险。
-
多因素身份验证 (MFA): 为所有管理员账号启用多因素身份验证,提高账号安全性,防止管理员账号被盗用。
-
实时监控和告警: 部署安全信息和事件管理 (SIEM) 系统或其他日志监控工具,实时监控审计日志,检测异常事件,例如日志被清除、日志文件被删除、审计策略被修改等。 一旦检测到可疑活动,立即发出告警并进行响应。
-
日志完整性保护:
- 数字签名或哈希: 对审计日志进行数字签名或定期计算哈希值,并将签名或哈希值安全地存储在其他地方(例如只读介质或独立的日志服务器)。 如果日志被篡改或删除,可以检测到日志的完整性受损。
- 日志链技术 (Blockchain-inspired techniques): 一些高级的日志管理系统或安全产品可能会采用类似于区块链的日志链技术,将日志记录链接起来,形成不可篡改的日志链,提高日志的防篡改能力。
-
日志备份和归档: 定期将审计日志备份到安全的、独立的存储介质或远程日志服务器。 即使本地日志被删除,仍然可以从备份中恢复日志数据。 备份介质的访问权限也应受到严格控制,防止备份被篡改或删除。
-
日志集中管理 (Centralized Logging): 将所有系统(包括 Linux 和 Windows 服务器、网络设备、安全设备等)的审计日志集中收集到专门的日志管理服务器 (例如 SIEM 系统)。 日志管理服务器应具有高安全性和高可用性,并严格控制访问权限。 集中日志管理可以提高日志的安全性和可审计性,并方便进行统一的日志分析和安全事件响应。
-
用户行为监控 (User Behavior Monitoring): 部署用户行为监控 (UBA) 或用户和实体行为分析 (UEBA) 系统,监控用户(包括管理员)的行为模式,检测异常行为,例如异常登录、权限滥用、敏感数据访问等。 UBA/UEBA 可以帮助发现内部威胁和管理员的恶意行为。
-
安全审计和定期审查: 定期进行安全审计,审查审计策略配置、日志管理措施、管理员权限分配等,确保审计系统有效运行,并及时发现和修复安全漏洞。 同时,定期审查审计日志,检查是否存在可疑活动。
2.针对 Windows Server 环境的特定措施:
- 配置安全日志的访问控制列表 (ACL): 可以修改安全日志的访问控制列表 (ACL),进一步限制对安全日志的访问权限。 但这需要谨慎操作,错误配置可能导致系统不稳定或审计功能失效。
- 配置 Windows 事件转发 (Windows Event Forwarding, WEF): 使用 Windows 事件转发将安全日志实时转发到中央日志收集器服务器。 日志收集器服务器应位于安全隔离的网络区域,并严格控制访问权限。 WEF 可以配置使用加密传输,确保日志在传输过程中的安全。
- 配置安全日志的保留策略和归档: 在事件查看器中配置安全日志的最大大小和覆盖策略,并定期归档安全日志。 将归档的日志文件存储在安全的、独立的存储位置。
虽然 "越级管理员" 在技术上通常有能力删除审计日志,但这并不意味着我们对此无能为力。 通过实施上述一系列安全措施,我们可以大大提高审计日志的安全性和完整性,降低日志被恶意删除的风险,并提高检测和响应此类安全事件的能力。 关键在于多层次的安全防护、职责分离、最小权限原则、实时监控和持续的安全审计。 安全是一个持续改进的过程,需要不断地评估风险,调整安全策略,并保持警惕。
七、总结
Windows Server 提供了强大的审计功能,可以通过组策略、本地安全策略或 auditpol.exe
等工具开启和配置。 建议使用 高级审核策略配置,它提供了更精细的审计控制。 要审计用户执行的命令,可以启用 详细跟踪 (Detailed Tracking) 类别下的 进程创建 事件。 开启审计功能后,务必保护好安全日志,并注意性能影响、日志空间管理和用户隐私等问题。 根据您的安全需求和合规性要求,选择合适的审计策略,并进行充分的测试和验证。