审核安全事件
使用 Windows Communication Foundation (WCF) 创建的应用程序可以利用审核功能来记录安全事件(成功、失败或两者)。这些事件被写入 Windows 系统事件日志,并且可以使用事件查看器进行检查。
审核为管理员提供了一种检测已经发生或正在发生的攻击的方式。此外,审核有助于开发人员调试与安全相关的问题。例如,如果授权或检查策略配置中的错误意外拒绝授权用户进行访问,开发人员可以通过检查事件日志迅速发现并隔离此错误的原因。
有关 WCF 安全的更多信息,请参见安全性概述。有关进行 WCF 编程的更多信息,请参见基本 WCF 编程。
审核级别和行为
存在两个安全审核级别:
服务授权级别,在该级别对调用方进行授权。
消息级别,WCF 在该级别检查消息的有效性,并对调用方进行身份验证。
您可以检查这两个审核级别是成功还是失败,这称为“审核行为”**。
审核日志位置
一旦确定审核级别和行为,您(或管理员)就可指定审核日志的位置。有以下三种选择:Default、Application 和 Security。当指定 Default 时,实际日志取决于所使用的系统以及该系统是否支持写入 Security 日志。有关更多信息,请参见本主题后面的“操作系统”部分。
写入 Security 日志要求具有 SeAuditPrivilege。默认情况下,只有“本地系统”和“网络服务”帐户具有此特权。管理 Security 日志功能 read 和 delete 要求具有 SeSecurityPrivilege。默认情况下,只有管理员具有此特权。
相比之下,通过身份验证的用户可以读写 Application 日志。Windows XP 默认情况下将审核事件写入 Application 日志。该日志还包含对所有通过身份验证的用户可见的个人信息。
禁止显示审核失败
审核过程中的另一个选择为是否禁止显示任何审核失败。默认情况下,审核失败不会影响应用程序。但是,如若需要,可将此选项设置为 false,这将导致引发异常。
审核编程
可以通过编程或通过配置来指定审核行为。
审核类
下表描述了用于对审核行为进行编程的类和属性。
类 | 说明 |
---|---|
将设置审核选项作为服务行为启用。 |
|
枚举值,用于指定要写入的日志。可能的值为 Default、Application 和 Security。选择 Default 时,操作系统将确定实际日志位置。请参见本主题后面的“Application 或 Security 事件日志选择”部分。 |
|
指定在消息级别审核哪些类型的消息身份验证事件。选择包括 None、Failure、Success 和 SuccessOrFailure。 |
|
指定在服务级别审核哪些类型的服务授权事件。选择包括 None、Failure、Success 和 SuccessOrFailure。 |
|
指定在审核失败时如何处理客户端请求。例如,当服务尝试写入 Security 日志但不具有 SeAuditPrivilege 时。默认值 true 指示忽略失败,因此将正常处理客户端请求。 |
有关如何设置应用程序以记录审核事件的示例,请参见如何:审核 Windows Communication Foundation 安全事件。
配置
您还可以使用配置来指定审核行为,方法是将一个 serviceSecurityAudit element添加到 Behaviors element下。必须如下面的代码所示将该元素添加到 Behavior element下。
<configuration>
<system.serviceModel>
<behaviors>
<behavior>
<!— auditLogLocation="Application" or "Security" -—>
<serviceSecurityAudit
auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
</system.serviceModel>
</configuration>
如果启用了审核但未指定 auditLogLocation,则对于支持写入 Security 日志的平台来说,默认日志名称为“Security”日志;否则为“Application”日志。只有 Windows Server 2003 和 Windows Vista 操作系统支持写入 Security 日志。有关更多信息,请参见本主题后面的“操作系统”部分。
安全注意事项
如果恶意用户了解到审核功能处于启用状态,攻击者可能会发送将导致写入审核项的无效消息。如果以这种方式填充审核日志,则审核系统会出现故障。为了缓解此问题,请将 SuppressAuditFailure 属性设置为 true,并使用事件查看器的属性来控制审核行为。有关更多信息,请参见 Microsoft 支持文章:How to view and manage event logs in Event Viewer in Windows XP(如何在 Windows XP 中使用事件查看器查看和管理事件日志)。
在 Windows XP 上写入 Application 日志的审核事件对任何通过身份验证的用户都是可见的。
选择 Application 或 Security 事件日志
下表提供的信息有助于您选择是记录到 Application 事件日志中还是记录到 Security 事件日志中。
操作系统
系统 | Application 日志 | Security 日志 |
---|---|---|
Windows XP SP2 或更高版本 |
支持 |
不支持 |
Windows Server 2003 SP1 以及Windows Vista |
Supported |
线程上下文必须具有 SeAuditPrivilege |
其他因素
除操作系统以外,下表描述了其他用于控制是否启用日志记录的设置。
因素 | Application 日志 | Security 日志 |
---|---|---|
审核策略管理 |
不适用。 |
除配置以外,Security 日志还受到本地安全机构 (LSA) 策略的控制。还必须启用“审核对象访问”类别。 |
默认用户体验 |
所有通过身份验证的用户都可以写入 Application 日志,因此对于应用程序进程,不需要执行其他权限步骤。 |
应用程序进程(上下文)必须具有 SeAuditPrivilege。 |
另请参见
任务
如何:审核 Windows Communication Foundation 安全事件
参考
ServiceSecurityAuditBehavior
AuditLogLocation
概念
其他资源
基本 WCF 编程
serviceSecurityAudit element
Behaviors element
Windows Server App Fabric 的安全模型