Windows 的审计跟踪Log

 Windows网络操作系统都设计有各种各样的日志文件,如应用程序日志,安全日志系统日志、Scheduler服务日志、FTP日志、WWW日志、DNS服务器日志等等,这些根据你的系统开启的服务的不同而有所不同。我们在系统上进行一些操作时,这些日志文件通常会记录下我们操作的一些相关内容,这些内容对系统安全工作人员相当有用。比如说有人对系统进行了IPC探测,系统就会在安全日志里迅速地记下探测者探测时所用的IP、时间、用户名等,用FTP探测后,就会在FTP日志中记下IP、时间、探测所用的用户名等。

  电脑里的日志是指日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。要保护和提高你的网络安全,由各种操作系统、应用程序、设备和安全产品的日志数据能够帮助你提前发现和避开灾难,并且找到安全事件的根本原因。
  当然,日志数据对于实现网络安全的价值有多大取决于两个因素:第一,你的系统和设备必须进行合适的设置以便记录你需要的数据。第二,你必须有合适的工具、培训和可用的资源来分析收集到的数据。
  当前的 计算机病毒 越来越复杂,对于网上求助这种远程的判断和分析来说,必须借助第三方的软件分析。目前流行的辅助分析工具有 Hijackthis 以及 SREng。


Windows NT的审计跟踪

  几乎WINDOWS NT系统中的每一项事务都可以在一定程度上被审计,在WINDOWS NT中可以在两个地方打开审计-EXPLORER 和USER MANAGER,在EXPLORER中,选择Securtiy,再选择Auditing,以Directory Auditing对话框,系统管理员可以在这个窗口选择跟踪有效的和无效的文件访问,在USER MANAGER中,系统管理员可以根据各种用户事件的成功和失败选择审计策略,如登录和退出、文件访问、权限非法和关闭系统等。

  WINDOWS NT使用一种特殊的格式存放它的日志文件,这种格式的文件可以被事件查看器EVENT VIEWER读取。事件查看器可以在ADMINISTRATIVE TOOL程序组中找到。系统管理员可以使用事件查看器的Filter选项,根据一定条件选择要查看的日志条目,查看条件包括类别,用户和消息类型。

  WINDOWS NT 在三个分开的日志文件存放审计信息:

  ——Application Log-文件包括用NT SECURITY AUTHORITY注册的应用程序产生的信息。

  ——Security Log-包括有关通过NT可识别安全提供者和客户的系统访问信息。

  ——System Log包含所有系统相关事件的信息。

  WINDOWS NT FTP连接的日志

  WINDOWS NT可以记录入境的FTP连接,在注册表中进行了修改后,你可以知道是否记录由匿名的、正常用户或者两种用户建立的连接,可以在事件查看器中查看这些日志条目。

  WINDOWS NT的HTTPD事务

  系统管理员可以使用NT的HTTPD服务在日志中记录对特定文件的访问企图。可以在控制面板的HTTPD配置工具中选择一个激活日志功能特性。


上一次我们对Windows注册表进行了简单的管理操作,重在理解"项"和"值"的概念。练习了新建、修改、删除、查看注册表项、值的命令,此外,借助于.NET框架,我们同样可以远程管理注册表,前提是远程计算机上的"Remote Registry"服务要启动。本次我们来重点关注一下Windows日志,Windows日志记录了各种软件、硬件发生的变化,当计算机出现问题时,方便管理员快速排错、恢复计算机等。尤其在一些软件安装失败时,根据日志中的EventID和详细信息能够帮助我们查找解决方案。

测试脚本下载

本系列所有脚本均在Windows Server 2008 R2 DataCenter (PowerShell 2.0) + PowerGUI Script Editor Free Edition x64中测试通过。

  1. Windows日志按严重程度区分有5种类型:

Error

Warning

Information

SuccessAudit

FailureAudit

从名称就可以看出其相应含义,使用EventLogEntryType枚举可以查看这些类型:

[enum]::GetNames([System.Diagnostics.EventLogEntryType])

运行结果:

在【开始】à【运行】输入:eventvwr调出事件查看器,这里以Windows Server 2008 R2上的事件查看器为例,可以看到Windows内置的事件分类:

Windows按照程序、安全、安装程序、系统等对日志进行了分类,对程序和服务还进行了更细粒度的分类,方便管理员查看特定应用程序的日志。当然,我们可以添加自定义的分类,稍后将练习这种操作。

2、PowerShell 2.0中关于日志操作的命令有如下一些:

Get-EventLog

Get-WinEvent

New-EventLog

Clear-EventLog

Remove-EventLog

Show-EventLog

Write-EventLog

Limit-EventLog

  1. 查看日志分类列表。

Get-EventLog –List

运行结果:

这里你可能会奇怪,怎么返回的分类这么少呢?刚才可是看到了很多的分类啊,这是因为从Windows Vista/2008开始,Windows使用了一种新的日志格式:.evtx,代替了之前的.evt,而Get-EventLog命令只能查看之前的日志格式。后面会看到如何查看.evtx格式的日志。

Get-EventLog提供了查看远程计算机上日志的能力,类似的,只需要添加-ComputerName参数即可:

PS:今天的远程测试有点杯具,本机连接VMWare中的虚拟机时老是有问题,一会提示RPC服务器不可用,一会认证失败,于是用两个虚拟机进行测试:

操作系统

IP

作用

Windows HPC Server 2008 R2

192.168.220.133

模拟本地计算机

Hyper-V 2008 R2

192.168.220.134

模拟远程计算机

Get-EventLog -ComputerName 192.168.220.134 –List

运行结果:

  1. 在Windows Vista/2008/7/2008R2中,可以使用Get-WinEvent查看.evtx格式的日志。

Get-WinEvent -ListLog * | Select LogName,RecordCount

运行结果:

远程调用时提示RPC服务器不可用,不知是哪里配置错了:

  1. 查看指定类别的最新日志。

Get-EventLog -LogName "Windows PowerShell" -Newest 10 | Format-Table Index,Source,Message –AutoSize

运行结果:

远程调用结果:

对于.evtx格式,这样使用:

Get-WinEvent -LogName "Windows PowerShell" -MaxEvents 10 | Format-Table EventID,Source,Message –AutoSize

运行结果:

.evtx格式远程调用依然出错:

6、筛选日志信息,Windows日志存储的内容非常多,如果不进行一些筛选,管理员难以获取有价值的信息。

如:筛选日志信息中包含【vmware】的日志,

Get-EventLog -LogName System | Where {$_.Message -like "*vmware*"}

运行结果:

在【Windows PowerShell】类别中查询EventID小于500的日志信息:

Get-EventLog -LogName "Windows PowerShell" | Where {$_.EventID -lt 500}

运行结果:

使用Format-List可以查看详细信息:

Get-EventLog -LogName "Windows PowerShell" | Where {$_.EventID -lt 500} | Format-List

运行结果:

查询自昨天这个时候到今天这个时候的日志,并按照EventID排序、分组:

Get-EventLog -LogName "Windows PowerShell" | Where {$_.TimeWritten -gt ((Get-Date).AddDays(-1))} |Sort EventID | Group EventID

运行结果:

  1. 使用Get-WinEvent命令还可以使用一些高级命令来进行筛选。

使用Hashtable进行筛选,注意,只能在Win7/2008 R2上使用:

Get-WinEvent -FilterHashtable @{LogName="Windows PowerShell";ProviderName="PowerShell"} | Where{$_.TimeCreated -gt (Get-Date).AddDays(-1)}

运行结果:

有效的键值对如下:

-- LogName=<String[]>

-- ProviderName=<String[]>

-- Path=<String[]>

-- Keywords=<Long[]>

-- ID=<Int32[]>

-- Level=<Int32[]>

-- StartTime=<DateTime>

-- EndTime=<DataTime>

-- UserID=<SID>

-- Data=<String[]>

-- *=<String[]>

通过XML来筛选。

在事件查看器中可以自定义筛选规则:

在Filter中填写项筛选的规则:

在XML选项卡中可以看到自动生成的代码:

将这段XML复制出来,在PowerShell中通过-FilterXml查询:

$xml = @'

<QueryList>

<Query Id="0" Path="Windows PowerShell">

<Select Path="Windows PowerShell">*[System[(Level=3) and TimeCreated[timediff(@SystemTime) &lt;= 43200000]]]</Select>

</Query>

</QueryList>

'@

Get-WinEvent -FilterXml $xml

运行结果:

因为EventLog使用了内置的XML来存储,还可以使用XPath表达式进行筛选:

Get-WinEvent -LogName "System" -FilterXPath "*[System[EventID > 1000]]"

运行结果:

  1. 导入、导出日志。

Get-WinEvent -ListLog * | Export-Clixml -Path F:\PSTest\EventLog.clixml -Force

Import-Clixml -Path F:\PSTest\EventLog.clixml | Group Source

运行结果:

Clixml要优于csv格式,它将对象序列化为xml格式,方便后续的查询。

使用记事本来查看其存储结构:

  1. 读写日志。

创建一个类别为Script,来源为PSScript的日志类别:

New-EventLog -LogName Script -Source PSScript

运行结果:

向刚刚创建的这个类别中写入一条日志:

Write-EventLog -LogName Script -Source PSScript -Message "Test" -EntryType "Information" -EventId 1

运行结果:

限制日志的容量,避免单个日志文件太大:

Limit-EventLog -LogName Script -MaximumSize 2MB

运行结果:

调用Event Viewer查看日志:

Show-EventLog

运行后将打开事件查看器。

清空、删除日志(慎用):

Clear-EventLog -LogName Script

Remove-EventLog -LogName Script

小结:

本次我们练习了WIdnows系统日志的相关操作,重在设置不同的筛选条件来查询我们感兴趣的日志,熟练掌握这些命令后,将大大提高解决问题的效率。Get-WInEvent提供了一些高级的删选命令,如Hashtable、XPath、XML等,可酌情使用。类似的WIdnows日志同样允许远程操作,但是这次我遇到了很多问题,主要分为两类:RPC服务器不可用、无访问权限。关于PowerShell的远程管理是个很大的话题,后续篇章我们再讨论,现在我也在找原因。Windows自带了一个日志管理的命令行工具:wevtutil.exe,功能也很强大,后面我们专门来测试一下这个工具。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值