不仅仅是日志的格式,还是其他的一些可选项上,操作系统管理员有了更多的选择。如下图所示,就是IIS日志记录配置管理的基本页面。
在Windows7操作系统中,IIS日志记录应该视为ISS所必需的而不是可选的组件。这主要是因为日志文件对于管理IIS服务器来说具有很关键的作用。如在这个IIS服务器在受到安全威胁的情况下,可以利用日志文件并对其中包含的内在细节执行排疑式审查。如到IIS服务器发生故障后也可以利用这个日志文件中所记录的信息来检查维护过程并识别系统中的问题。笔者这里就给大家介绍一下Windows7操作系统中IIS日志记录相比Windows2003操作系统的一些新特性,并帮助大家部署一种得心应手的日志管理模式。
一、选择合适的日志记录级别。
在IIS7.0版本中,系统管理员可以根据自己的需要选择合适的日志记录级别。如可以在服务器级别上进行日志记录管理,也可以在网站、WEB应用程序文件或者目录级别上实现它。具体要在那个级别上实现,主要看系统管理员的需要。不过需要注意的是,其实现级别的不同,所支持的日志文件格式也是不同的。如在“服务器”级别实现的话,其支持的日志格式就只有两种,分别为“W3C”格式与二进制格式。而如果选择“网站”级别上实现日志管理的话,则其支持的日志格式有三种,分别为IIS、NCSA、W3C格式。而且系统管理员如果觉得这些格式还不满足的话,可以通过“自定义”的方式来自定义自己需要的格式。所以在选择日志记录级别的时候,除了需要考虑在什么级别上进行日志管理比较方便与安全,同时还需要结合自己喜欢的日志格式。笔者个人喜欢在网站级别上对日志进行管理。因为在一台服务器上,如果只部署IIS服务的话,可能比较浪费。也就是说,在同一台服务器上可能有多个应用服务。为了跟其他应用服务与服务器操作系统的日志区分开来,笔者就建议大家在网站级别上进行管理。当然,在哪个级别上进行日志管理,对于日志的内容没有实际性的差异。主要是看服务器的部署以及系统管理员的工作习惯而定。
二、为日志记录选择合适的格式。
如果选择网站级别来管理日志的话,这个日志的格式有多种选择。最重要的是,系统管理员可以选择IIS的日志记录格式。这个IIS日志记录格式是基于文本的日志记录。跟W3C日志记录格式类似,都是通过HTTP.SYS来控制的。不过这个IIS日志记录格式是一个核心模式过程。而以前的日志记录都是通过用户模式来管理的。两者之间有比较大的变化。超文本传输协议侦听程序被实现为名为 HTTP.SYS的内核模式设备驱动程序。HTTP.SYS 是 Windows 网络子系统的一个重要组成部分。在以前的版本中,当在 IIS 中创建网站时,使用 HTTP.SYS注册站点,然后HTTP.SYS将 Web 请求传送到正在运行网站的用户模式进程中。同时HTTP.SYS也将响应送回客户端。除了从其内部缓存中检索存储的响应以外,HTTP.SYS并不处理它所接收到的请求。因此,应用程序特定代码永远不会加载到内核模式中。但是有些系统管理员希望HTTP.SYS能够以核心模式运行。此时就需要采用IIS日志格式。另外IIS是基于文本的日志记录,跟二进制格式的日志记录不同,直接可以通过文本浏览器等工具来查看日志信息。所以阅读起来也更加的方便。
当然,日志文件的格式不同,其所存储的内容都是相同的。所以日志文件的格式并不会影响日志的实际管理价值。不过为了日后管理维护的方便,笔者建立系统管理员最好还是根据自己的工作习惯来选择合适的日志格式。
三、选择合适的编码格式。
一般情况下,IIS日志文件的编码格式有两种,分别为UTF-8与ANSI两种格式。在所有的字符集中,虽然ANSI比较有名。但是这个编码格式可以说是专门为英文所设计的。用来存储其他的语言时会出现乱码的情况。如对于汉语就支持的不是很好。为了解决这个问题,特意提出了一种新的编码格式,即UTF-8。这是一种UNICODEd 一种变长字符编码。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本。 UTF-8 是字节顺序无关的.。它的字节顺序在所有系统中都是一样的。
这些字符集的格式对于某些系统管理员来说可能有点深奥。其实系统管理员也不需要了解的这么清楚。只需要明白一个原则。即如果日志中显示的如果都是英文的话,那么采用ANSI编码格式也不会有问题。但是如果日志中还会存在其他语言的话,则可能会出现乱码。为此笔者建议,还是采用UTF-8的编码格式为好。毕竟,其对于英文的支持力度也是很好的。为此还不如一劳永逸的将其设置为UTF-8格式为好。免得以后再日志阅读中遇到乱码的烦恼。
四、选择合适的日志文件滚动更新机制。
如果将IIS的日志记录都保存在一个文件中,显然文件会很长。到时候,查看记录的时候,会很麻烦。为此最好能够将日志文件进行分割,分割成一个个小文件。这方便与后续的查询与阅读。在Windows7操作系统的IIS日志中,提供了很多的日志文件滚动更新的方法。如可以根据时间来创建新的日志文件。如可以按天、按周或者按月来实现日志文件的滚动更新。一般情况下,按月来更新即可。如果IIS服务器访问比较频繁,也可以适当缩短这个日志文件滚动更新的时间间隔。如可以将时间间隔调整为一周或者一天等等。这个时间间隔到底多少为好,主要是看其记录的数量。如果日志记录数量多的话,那么可以适当缩短时间。相反,如果日志记录数量不是很多的话,则可以以月为单位建立新的日志文件。
除了可以根据时间来建立新的日志文件之外,还可以根据日志文件的大小来创建新的日志文件。在IIS日志管理器中可以选择“最大文件大小”。然后输入一个合适的尺寸。如此的话,当这个日志文件达到指定的大小之后,系统就会自动对其进行日志切换。不过笔者并不赞同采用这种方法。虽然其可以将重做日志文件控制在一个合理的大小内,但是其会打破其内在的时间联系。到时候,在遇到问题时查询起来会非常的不方便。故笔者还是建立按时间来对重做日志文件进行分割。
另外管理器还提供另一个有用的选项,即是否要将本地时间用户文件命名与翻滚。这是一个很有用途的选项。选中这个选项后,在系统自动建立的日志文件中就会反映这个时间信息。这对于系统管理员来查找日志文件,能够提供很大的帮助。特别是如果按文件大小来分割重做日志文件的话,一定要选中这个选项,以方便后续的查找。
DNS备份:1. 停止DNS服务。
2. 打开Regedit程序,找到键HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS。
3. 右键单击DNS文件夹并且选择“导出”。把文件命名为dns1然后按Enter键。
4. 现在找到键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server。
5. 右键单击DNS Server文件夹,并且选择“导出”命令。把文件命名为dns2然后按Enter键。
在前面的步骤中我们创建了两个注表文件,分别叫dns1.reg和dns2.reg。把它们存入到移动存储或者保存在不在此服务器上的其他媒体中。
打开文件夹\Windows\System32\DNS并且把其中所有后缀为.dns的文件都复制出来。也保存到你存储.reg文件的媒体中。现在你已经完成了备份,接下来重新启动DNS服务。
DNS恢复:
如果你的DNS服务器出现了故障,那么你可以迅速找到另一台机器代替它,设置步骤如下:
1.建立一个Server2003系统。给它取与所代替机器相同的名字,使用相同的DNS后缀和IP地址。
2.在其系统中安装DNS服务。
3.停用DNS服务。
4.把所有后缀为.dns的文件复制到这台机器的\windows\system32\dns文件夹下。
5.找到那两个后缀为.reg的文件。双击它们,一次一个,并且确认自己想把它们安装到注册表中。
6.重新启动DNS服务。
现在你就拥有了原DNS服务器的一个替代系统。要记住,如果你只想把一个区域的主服务器角色从一台机器转移到另一台机器,那么只需要把*.dns文件复制到目标计算机上就行了,然后再运行“新建区域”向导程序,告诉它你已经有了一个区域文件。
7.在目标 DNS 服务器上,启动 DNS 服务器服务。要开始注册服务器的 A 和 PTR 资源记录,请在命令提示符下运行以下命令:
ipconfig /registerdns
8.如果此服务器同时还是域控制器,请停止并重新启动 Net Logon 服务来注册服务 (SRV) 记录,或在命令提示符下运行以下命令:
netdiag /fix
9. 如果替换 DNS 服务器是域控制器,则可将其上以前是 Active Directory 集成区域的标准区域转换回 Active Directory 集成区域。
10.确认每个区域上的 SOA 资源记录包含正确的主服务器名,并且区域的 NS 资源记录正确无误。
脚本内容如下:
@echo off
rem 提取日期和时间,增强原来的P处理
@set year=%date:~0,4%
@set month=%date:~5,2%
@set day=%date:~8,2%
rem 创建文件夹
rem 进入到e盘
E:
rem 进入到 backup目录
cd backup
rem 如果以当前日期的目录不存在,则创建以当前日期为名称的目录
if not exist %year%%month%%day% mkdir %year%%month%%day%
rem 将dns 注册表中的选项导出到当前的工作目录下面
regedit /e .\%year%%month%%day%\dnsserver.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\"
rem 将dns注册表中的选项导出到当前的工作目录下面
regedit /e .\%year%%month%%day%\dns.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\"
rem 拷贝dns 数据文件到当前目录下面
copy C:\WINDOWS\system32\dns\*.* .\%year%%month%%day%
将相关目录修改成自己所需要的即可。
然后将以上内容存为.b
DNS备份当你的DNS服务器正常运行起来后,大家可以按照下列步骤对自己的服务器配置进行备份:1. 停止DNS服务。2. 打开Regedit程序,找到键HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS。3. 右键单击DNS文件夹并且选择“导出”。把文件命名为dns1然后按Enter键。4. 现在找到键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server。5. 右键单击DNS Server文件夹,并且选择“导出”命令。把文件命名为dns2然后按Enter键。在前面的步骤中我们创建了两个注表文件,分别叫dns1.reg和dns2.reg。把它们存入到移动存储或者保存在不在此服务器上的其他媒体中。打开文件夹\Windows\System32\DNS并且把其中所有后缀为.dns的文件都复制出来。也保存到你存储.reg文件的媒体中。现在你已经完成了备份,接下来重新启动DNS服务。 DNS的恢复如果你的DNS服务器出现了故障,那么你可以迅速找到另一台机器代替它,设置步骤如下:1.建立一个Server2003系统。给它取与所代替机器相同的名字,使用相同的DNS后缀和IP地址。2.在其系统中安装DNS服务。3.停用DNS服务。4.把所有后缀为.dns的文件复制到这台机器的\windows\system32\dns文件夹下。5.找到那两个后缀为.reg的文件。双击它们,一次一个,并且确认自己想把它们安装到注册表中。6.重新启动DNS服务。现在你就拥有了原DNS服务器的一个替代系统。要记住,如果你只想把一个区域的主服务器角色从一台机器转移到另一台机器,那么只需要把*.dns文件复制到目标计算机上就行了,然后再运行“新建区域”向导程序,告诉它你已经有了一个区域文件。 7.在目标 DNS 服务器上,启动 DNS 服务器服务。要开始注册服务器的 A 和 PTR 资源记录,请在命令提示符下运行以下命令:ipconfig /registerdns8.如果此服务器同时还是域控制器,请停止并重新启动 Net Logon 服务来注册服务 (SRV) 记录,或在命令提示符下运行以下命令:netdiag /fix 9. 如果替换 DNS 服务器是域控制器,则可将其上以前是 Active Directory 集成区域的标准区域转换回 Active Directory 集成区域。10.确认每个区域上的 SOA 资源记录包含正确的主服务器名,并且区域的 NS 资源记录正确无误。 脚本内容如下: @echo offrem 提取日期和时间,增强原来的P处理@set year=%date:~0,4%@set month=%date:~5,2%@set day=%date:~8,2% rem 创建文件夹rem 进入到e盘E:rem 进入到 backup目录cd backuprem 如果以当前日期的目录不存在,则创建以当前日期为名称的目录if not exist %year%%month%%day% mkdir %year%%month%%day% rem 将dns 注册表中的选项导出到当前的工作目录下面regedit /e .\%year%%month%%day%\dnsserver.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\" rem 将dns注册表中的选项导出到当前的工作目录下面regedit /e .\%year%%month%%day%\dns.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\" rem 拷贝dns 数据文件到当前目录下面copy C:\WINDOWS\system32\dns\*.* .\%year%%month%%day% 将相关目录修改成自己所需要的即可。然后将以上内容存为.bat 文件,运行即可备份如果要自动备份,将其加到计划任务中即可。
关于默认的Apache日志文件
Apache提供很多检测和日志工具来追踪服务器的正确运行。默认的Apache配置提供两个日志文件,放置在安装目录下的日志目录里面。access_log这个文件(在windows下对应access.log文件)包含了服务器已经处理过的请求的信息,比如说请求的URL,客户端的IP地址,请求是否被成功完成等。error_log 这个文件(在windows下对应error.log文件)包含了与错误情况相关的信息,以及服务器生命周期中不同的大事件。
创建日志格式
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%h %l %u %t "%r" %>s %b"
"%{Referer}i" "%{User-agent}i"" combined
LogFormat指令允许你告诉Apache你想要记录请求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:普通日志格式和整合日志格式。当Apache收到一个请求,他将会用相应的请求属性来替代以%为前缀的每一个域。如果您正在使用普通日志格式,您的日志文件里的每一项输入看起来都将是这样的:
192.168.200.4 - someuser [12/Jun/2005:08:33:34
+0500] "GET /example.png HTTP/1.0" 200 1234
如果您正在使用整合日志格式,您的日志文件里的每一项输入看起来则都将是这样的:
192.168.200.4 - someuser [12/Jun/2005:08:33:34
+0500] "GET /example.png HTTP/1.0" 200 1234
/ "Mozilla/5.0
(WindowsUWindows NT 5.1en-USrv:1.7.7)"尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域:
# %h: 客户端(例如,浏览器)向服务器发出连接请求时自己的当时的IP地址或域名(需开启HostNameLookups)。
# %u: 使用HTTP方式认证用户时,记录下的用户的编号。
# %t: 服务器接受到连接请求的时间。
# %r: 客户端发出的原始连接请求中的文本信息,包含所使用的HTTP方法。
# %>s: 服务器应答浏览器后的返回状态代码,200表示请求成功。.
# %b: 服务器应答浏览器发出的单个请求的回传对象的内容大小(字节为单位),不统计数据包头部字节。
整合日志格式在普通日志格式的基础上扩展出了两个附加的`域。定义为:
# %{Referer}i: 连接请求数据包包头,包含指向当前页面的文档关联信息。
# %{User-agent}i: 用户代理连接请求数据包包头,包含客户浏览器的信息。
创建一个自定义日志文件
CustomLog logs/access_log common
TransferLog logs/sample.log您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并保存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还可以用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只接受最后一个LogFormat指令提供的定义。
延伸阅读:
重导向日志到一个外部的程序
TransferLog "|bin/rotatelogs /var/logs/apachelog
86400"你也可以用CustomLog或TransferLog将日志的输出重导向(输出)到一个外部的程序,而不是一个文件。要做到这一点,首先您需要以输出字符"|"开头,跟着是接收日志标准输入信息的程序之路经。本例运用Apache自带的rotatelogs程序,在稍后的章节中会对其有所介绍。
当有一个外部程序被使用,它将作为启动mon env=!image
SetEnvIf Remote_Addr 192.168.200.5 specialmachine
CustomLog logs/special_access_log common env=specialmachine你可以根据可变的环境决定是否记录一个请求。这种可变可以根据许多参数,比如客户端的IP地址或请求中某个头部的存在,事先设置好。正如本例中所显示,CustomLog指令可以将可变的环境作为第三个参数来接受。如果存在可变的环境,它就将被记录,否则就不会。如果这个可变的环境被一个"!"开头否定,那么不存在可变的环境将会被记录。本例将告诉您如何避免在日志里以GIF和JPEG的格式记录图像,及如何从一个特定的IP地址记录请求道一个单独的日志文件。另一个例子请参加下一节。
谁在连接你的网站
SetEnvIfNoCase Refererinternalreferral
LogFormat "%{Referer}i ->%U" referer
CustomLog logs/referer.log referer env=!internalreferral可以通过记录Referer的值来检测哪些人连接了你的网站,Referer变量位于用户发送连接请求数据包的头部,数据包头中还包含了用户访问的目的网站的URL地址。通过这种方法可以记录下绝大部分网站访问者。也可以把来自特定网站()地址段的来访者排除出日志记录文件。
利用模块参数(mod_status)来监视Apache服务器
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 192.168.0
Apache服务器中可以使用的功能模块很多,有服务器内置的也有外挂的,这些模块工作的状态和性能就是通过mod_status参数来记录的,记录的内容有“哪些模块参与了网站应答服务、哪些模块处于空闲状态、服务器的开启/关闭时间。正在处理的连接请求数和访问者数量(需要指定ExtendedStatus记号)-该模块记录对高负荷网站服务器性能有很大影响”。例子中记录的模块状态统计结果可以用浏览器访问/server-status页面来查看。
通过SNMP协议来监视Apache服务器
SNMP是简单网管协议,支持SNMP的服务器或网络设备可以被OpenView、Tivoli等网管软件统一管理,目前有很多开源的SNMP模块可以加装到Apache网站服务器之上,对于Apache 1.3版来讲,mod_snmp模块可以支持第1版和2版的SNMP协议;对于Apache 2版来讲,mod_apache_snmp模块可以编译成Apache的DSO直接支持第1版、第2版和第3版的SNMP协议。有了SNMP模块,外部网管软件就可以对Apache网站服务器的各种实时性能参数进行查看了,这些参数包含“服务器连续在线时间、平均负载、一段时间内的错误数、提供网站服务的字节数和连接请求数”。SNMP模块遇到突然激增的并发连接请求数时会向控制台报警。管理SNMP资源的开源工具软件有:“net-snmp,OpenNMS,Najios等”。
用开源工具分析日志
有很多开源和商业版的工具软件可以对产生的Apache日志文件做分析和处理,通常的步骤是:
1.选取一个日志文件。
2.分析日志文件内容。
3.生成包含不同类别内容的统计信息网页输出。Webalizer(/software/去下载这些工具。
将连接请求日志记录到数据库
Apache本身没有将记录转发到数据库的功能,必须要第三方脚本和模块来支持。这里列举几个:mod_log_sql模块允许将连接请求直接记入MySQL数据库,然后用Apache LogView SQL工具来参看库中的记录;pglogd工具可以记录日志到PostgreSQL数据库中。
将日志文件转存和归档
CustomLog "|bin/rotatelogs /var/logs/apachelog
86400" common如果网站流量较高,日志文件很容易就会变得很大,需要进行转存和归档处理。转存日志文件时需要压缩和保存,在线进行这项工作可以使用Apache提供的rotatelogs来完成,类似工具还可以在.au/logtools/网页可以找到一些其他的日志工具。比如vlogger工具就可以替代cronologs来对单个服务器上的虚拟网站日志进行分别处理,该工具在
CustomLog logs/vhost1.example.com_log combined
ErrorLog logs/vhost2.example.com_log
.......
使用CustomLog标志段在Apache配置文件的 区块内实现虚拟网站日志文件的独立处理。
LogFormat "%v %h %l %u %t "%r" %>s %b" common_virtualhost
CustomLog logs/access_log common_virtualhost在Apache全局配置中配置方法,其中的v%负责把提供服务的虚拟网站记录下来,对于配置了很多虚拟网站的单台服务器来说,这种配置不错。如果不想记录虚拟服务器的日志只需要在配置文件中加入"CustomLog /dev/null"就可以了。
日志文件中常见的条目
缺少favicon.ico文件,该文件可在浏览器的标题栏显示网站的个性图案;
缺少robots.txt文件,利于站点复制工具和搜索引擎使用;
覆写httpd.pid文件,网站服务器不正常退出后遗留的PID记录文件;
陌生的长记录条,
"SEARCH /x90x02xb1x02xb1x02xb1x02 ..."
"GET /scripts/..%252f../winnt/system32/cmd.exe?/
c+dir HTTP/1.0..."
"GET /default.ida?NNNNNNN NNNNNNNNNNNNNNNNNN ..."类似的记录条表示访问者请求了网站上根本没有的cmd.exe,root.exe或dir等文件。
日志文件中的一些条目经常反映了那些自动探测网站服务器漏洞的动作,多数来源于针对IIS网站服务器的蠕虫和恶意程序。有时候也会发现一些针对Apache的漏洞,所以为了保证Apache的正常运行,用户应保持经常更新Apache软件。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)