审核安全事件

使用 Windows Communication Foundation(WCF)创建的应用程序可以使用审核功能记录安全事件(成功、失败或两者兼有)。 事件将写入 Windows 系统事件日志,可以使用事件查看器进行检查。

审核为管理员提供了一种检测已经发生或正在发生的攻击的方式。 此外,审核有助于开发人员调试与安全相关的问题。 例如,如果授权或检查策略配置中的错误意外拒绝授权用户进行访问,开发人员可以通过检查事件日志迅速发现并隔离此错误的原因。

有关 WCF 安全性的详细信息,请参阅 安全概述。 有关 WCF 编程的详细信息,请参阅 基本 WCF 编程

审核级别和行为

存在两个级别的安全审核:

  • 服务授权级别,在该级别对调用方进行授权。

  • 消息级别,其中 WCF 检查消息有效性并验证调用方。

可以检查两个审核级别,了解成功或失败,这称为 审核行为

审核日志位置

确定审核级别和行为后,(或管理员)可以指定审核日志的位置。 这三个选项包括:默认、应用程序和安全性。 指定默认值时,实际日志取决于所使用的系统以及系统是否支持写入安全日志。 有关详细信息,请参阅本主题中稍后的“操作系统”部分。

写入 Security 日志要求具有 SeAuditPrivilege。 默认情况下,只有本地系统和网络服务帐户具有此权限。 若要管理安全日志函数readdelete,需要SeSecurityPrivilege。 默认情况下,只有管理员才具有此权限。

相比之下,经过身份验证的用户可以读取和写入应用程序日志。 默认情况下,Windows XP 会将审核事件写入应用程序日志。 该日志还可以包含对所有经过身份验证的用户可见的个人信息。

禁止显示审核失败

审核期间的另一个选项是是否取消任何审核失败。 默认情况下,审核失败不会影响应用程序。 但是,如若需要,可将此选项设置为 false,这将导致引发异常。

编程审核

可以通过编程方式或通过配置指定审核行为。

审计课程

下表描述了用于对审核行为进行编程的类和属性。

班级 DESCRIPTION
ServiceSecurityAuditBehavior 将设置审核选项作为服务行为启用。
AuditLogLocation 枚举值,用于指定要写入的日志。 可能的值为 Default、Application 和 Security。 当您选择“默认”时,操作系统将会确定实际的日志位置。 请参阅本主题后面的“应用程序或安全事件日志选择”部分。
MessageAuthenticationAuditLevel 指定在消息级别审核哪些类型的消息身份验证事件。 选择是NoneFailureSuccessSuccessOrFailure
ServiceAuthorizationAuditLevel 指定在服务级别审核哪些类型的服务授权事件。 选择是NoneFailureSuccessSuccessOrFailure
SuppressAuditFailure 指定在审核失败时如何处理客户端请求。 例如,当服务尝试写入 Security 日志但不具有 SeAuditPrivilege 时。 默认值 true 指示将忽略失败,并且客户端请求会正常处理。

有关设置应用程序以记录审核事件的示例,请参阅 “如何:审核安全事件”。

配置

还可以使用配置来指定审核行为,方法是在 <behaviors> 下添加 <serviceSecurityAudit>。 必须在 <behavior> 下添加该元素,如下面的代码所示。

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <behavior>  
        <!-- auditLogLocation="Application" or "Security" -->  
        <serviceSecurityAudit  
                  auditLogLocation="Application"  
                  suppressAuditFailure="true"  
                  serviceAuthorizationAuditLevel="Failure"  
                  messageAuthenticationAuditLevel="SuccessOrFailure" />
      </behavior>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

如果启用了审核且未指定 auditLogLocation,则对于支持写入安全日志的平台,默认日志名称为“安全”日志;否则为“应用程序”日志。 只有 Windows Server 2003 和 Windows Vista作系统支持写入安全日志。 有关详细信息,请参阅本主题中稍后的“操作系统”部分。

安全注意事项

如果恶意用户知道已启用审核,攻击者可能会发送无效消息,导致写入审核条目。 如果以这种方式填充了审核日志,则审核系统将失败。 若要缓解此问题,请将 SuppressAuditFailure 属性 true 设置为事件查看器的属性,并使用事件查看器的属性来控制审核行为。

任何经过身份验证的用户都可以看到写入 Windows XP 上的应用程序日志的审核事件。

在应用程序和安全事件日志之间进行选择

下表提供了有助于选择是登录到应用程序还是安全事件日志的信息。

操作系统

系统 应用程序日志 安全日志
Windows XP SP2 或更高版本 已支持 不支持
Windows Server 2003 SP1 和 Windows Vista 已支持 线程上下文必须包含 SeAuditPrivilege

其他因素

除了操作系统,下表还介绍了控制启用日志记录功能的其他设置。

因子 应用程序日志 安全日志
审核策略管理 不適用。 除了配置,安全日志还由本地安全机构 (LSA) 策略控制。 还必须启用“审核对象访问”类别。
默认用户体验 所有经过身份验证的用户都可以写入应用程序日志,因此应用程序进程无需执行其他权限步骤。 应用程序进程(上下文)必须具有 SeAuditPrivilege

另请参阅