微信公众号:计算机与网络安全
▼
Web服务器的日志文件多种多样,本文仅介绍常见的几种应用程序日志:IIS(Internet Information Service)日志分析、Apache日志分析和代理服务器Squid日志。这类日志信息与网络中心的安全紧密相关,反映了局域网用户的行为和网络受到入侵时的相关信息,可以帮助对网络中心的安全事件进行取证。目前国内外虽然有一些日志工具(如Log Explorer、Webtrends、Logsufer和Swatch等)能分析日志数据,但是仅局限于单一系统的应用。大部分防火墙、入侵检测系统、网络监控和审计系统的日志管理功能也仅作为辅助工具,还没有形成一套比较完整的日志管理整体解决方案。网络浏览行为在Web服务器上会留下全部的访问情况记录。
计算机取证人员应该不会放过一个可能的主页位置或其他的确定攻击者的线索。这些信息如表1所示。
表1 常用Web服务器日志信息
1. IIS日志分析
日志的重要性已经越来越受到计算机取证人员的重视。IIS的日志更是不言而喻一般地,系统建议IIS日志使用W3C扩充日志文件格式,这也是IIS 5.0以上的默认格式。它可以指定每天记录客户IP地址、用户名、服务器端口、方法、URI资源、URI查询、协议状态、用户代理,每天要审查日志。
IIS的日志文件都是文本文件,可以使用任何编辑器或相关软件打开,如记事本程序、AWStats工具。开头4行都是日志的说明信息,如表2所示。
表2 日志说明信息的含义
日志的主体是一条一条的请求信息,请求信息的格式由#Fields定义,每个字段都有空格隔开。Microsoft IIS日志字段的定义如表3所示。
展开全文
表3 Microsoft IIS 日志字段定义
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2021-12-10 01:32:07
#Fields: time cip csmethod csuristem scstatus
02:14:20 210.12.195.2 [1]USER administator 331
(IP地址为210.12.195.2用户名为administator的用户试图登录)
02:15:12 210.12.195.2 [1]PASS - 530(登录失败)
02:16:16 210.12.195.2 [1]USER administrator 331
(IP地址为210.12.195.2用户名为administrator的用户试图登录)
02:19:24 210.12.195.2 [1]PASS - 230(登录成功)
02:19:49 210.12.195.2 [1]MKD brght 550(新建目录失败)
02:25:26 210.12.195.2 [1]QUIT - 550(退出FTP程序)
通过这段FTP日志文件的内容可以看出,来自IP地址210.12.195.2的远程客户从2021年12月10日02:14开始试图登录此服务器,先后换了两次用户名和口令才成功,最终以administrator的账户成功登录。这时候就应该提高警惕,因为administrator账户极有可能泄密了,为了安全考虑,应该给此账户更换密码或者重新命名。
通过IIS日志可以判断网站是否曾被SQL注入攻击过、是怎样被入侵的。在网站IIS日志中,计算机取证人员可以搜索%20和,(单引号,半角的),看看是否有相关的页面存在,因为常见黑客的SQL注入都是通过%20和,(单引号)进行的。
2. Apache日志分析
如果安装Apache服务器的时候选择默认安装方式,那么服务器一旦启动就会生成两个日志文件,分别是access_log和error_log。这些文件可以在/usr/local/apache/logs下找到。
对于Windows系统,这些日志文件分别是access.log和error.log,它们保存在Apache安装目录的logs子目录。不同的包管理器会把日志文件放到各种不同的位置。其中,访问日志access_log记录下了所有对Web服务器的访问活动。下例是一个访问日志中典型的记录:210.45.118.9 - - [10/Feb/2016:06:32:46-0400]“GET /HTTP/2.0”200 654。这行内容由7项构成,有两项空白,但整行内容仍旧分成了7项。
第一项信息是远程主机的地址,即表明访问网站的究竟是谁。在上例中,访问网站的主机是210.45.118.9。仅从日志记录的第一项出发,取证人员就可以得到访问者的不少信息。默认情况下,第一项信息只是远程主机的IP地址,但我们可以要求Apache查出所有的主机名字,并在日志文件中用主机名字替代IP地址。然而,这种做法通常不推荐,因为它将极大地影响服务器记录日志的速度,从而降低整个网站的效率。另外,有许多工具能够将日志文件中的IP地址转换成主机名字,因此要求Apache记录主机名字替代IP地址是得不偿失的。如果确实有必要让Apache找出远程主机的名字,那么可以使用指令HostNameLookups on。如果HostNameLookups设置成double而不是on,日志记录程序将对它找到的主机名字进行反向查找,验证该主机名字确实指向了原来出现的IP地址。默认情况下HostNameLookups设置为off。
第二项是空白,用一个“-”占位符替代。实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的E-mail地址或者其他唯一标识符。这个信息由identd返回,或者直接由浏览器返回很早的时候,Netscape 0.9还占据着统治地位,这个位置往往记录着浏览者的E-mail地址。然而,由于有人用它收集邮件地址和发送垃圾邮件,所以它未能保留太久很久之前市场上几乎所有的浏览器就取消了这项功能。因此,到了今天,我们在日志记录的第二项看到E-mail地址的机会已经微乎其微。
第三项也是空白。这个位置用于记录浏览者进行身份验证时提供的名字。当然如果网站的某些内容要求用户进行身份验证,那么这项信息是不会空白的。但对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。
第四项是请求的时间。这个信息用方括号包围,而且采用“公共日志格式”或“标准英文格式”。因此,上例日志记录表示请求的时间是2016年2月10日星期三06:32:46。时间信息最后的“-0400”表示服务器所处时区位于UTC之前的4小时。
第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL即“方法资源 协议”。在本例中,METHOD是GET,其他经常可能出现的METHOD还有POST和HEAD。此外还有不少可能出现的合法METHOD,但主要就是这三种。RESOURCE是指浏览者向服务器请求的文档或URL。在这个例子中,浏览者请求的是“/”,即网站的主页或根。大多数情况下,“/”指向DocumentRoot目录的index.html文档,但根据服务器配置的不同,它也可能指向其他文件。PROTOCOL通常是HTTP,后面再加上版本号。版本号或者是1.0;或者是1.1;或者是2.0。但目前出现2.0的时候比较多。HTTP是Web得以工作的基础,HTTP/1.0是HTTP的早期版本,而2.0是最近的版本。当前大多数Web客户程序使用的是2.0版本的HTTP。
第六项信息是状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。此处不给出状态代码的完整清单以及解释它们的含义,请参考相关资料了解这方面的信息。但一般地,以2开头的状态代码表示成功,以3开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置,以4开头的状态代码表示客户端存在某种错误,以5开头的状态代码表示服务器遇到了某个错误。
第七项表示发送给客户端的总字节数。它告诉我们传输是否被打断(即该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天一周或者一月内发送了多少数据。
3. 代理服务器Squid日志
代理服务是指由一台拥有标准IP地址的机器代替若干没有标准IP地址的机器和Internet上的其他主机打交道,提供代理服务的这台机器称为代理服务器。代理服务器的作用就是沟通内部网和Internet,解决内部网访问Internet的问题。这种代理是不可逆的,Internet上的主机不能访问任何一台拥有内部地址的机器,这样代理服务既可以解决IP地址资源紧缺问题,又可以保障内部资料的安全性。Squid是一款功能强大的代理软件,是美国国家网络应用研究室的Duane Wessels主持开发的。它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户要下载一个主页时,他向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户,同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。目前,Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS协议。Squid可以工作在多种操作系统中,如AIX、Digital Unix、FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2等,也有不少人在其他操作系统中重新编译Squid。
Squid提供多个日志,如缓存日志、用户代理日志、错误日志、存储日志等,我们主要关注它的访问日志(access log),它主要记录了系统注册用户通过代理访问外界对象的详细信息。访问日志有两种形式:一种是CLF格式,和arpache的日志格式一样;另一种是它自身的日志格式(native log format),脚本squid2common.pl可以将Squid自身的日志格式转化为CLF形式,下面介绍native log日志格式。
squid 1.0 的格式:time elapsed remotehost codeatus/peerstatus bytes method URL。
squid 1.1的格式:time elapsed remotehost codeatus bytes method URL rfc931 eerstatus/peerhost type。
native log日志格式主要包括代理访问的时间(Unix时间格式)、总的消耗时间、远程目标主机(一般为代理用户的IP地址)、状态码、获取或发送信息的字节数、访问方法、访问目标的链接(URL)、用户标识(一般为邮件地址或注册的用户名)、远端目标的状态、访问对象的类型等信息,具体信息请参考http://www.squidcache.org/Doc/FAQ/FAQ-6.html。可以通过分析Squid访问日志来统计用户的行为,发现用户的异常行为。
▲
- The end -