高效分析日志文件(上)

 
   | |

导读:本文介绍如何高效分析日志文件,重点介绍通过egrep工具使用正则表达式。egrep提供了一种很简单的搜索文件的语法并且几乎在当前流行的所有操作系统上都可以用。

关键词:日志文件 分析 egrep 正则表达式 搜索 操作系统

 
正在加载数据...

【TechTarget中国原创】日志的分析工作需要有完善的搜索技能作基础,那样你才能找出问题所在。现在似乎所有的新设备、工具、甚至桌面软件都可以生成日志或基于文本(text-based)的数据了。与此同时,迅猛产生的日志数据也给日志分析带来了不少挑战。首当其冲的就是日志的……

【TechTarget中国原创】日志的分析工作需要有完善的搜索技能作基础,那样你才能找出问题所在。

  现在似乎所有的新设备、工具、甚至桌面软件都可以生成日志或基于文本(text-based)的数据了。与此同时,迅猛产生的日志数据也给日志分析带来了不少挑战。

  首当其冲的就是日志的集中采集和存储。幸好现在我们有几种办法可用。日志通常都被集中转储到位于网络中心的syslog,日志管理或SIM系统里。因此,现在面临的最大问题就是如何才能有效地筛选这些日志数据并从中找出所需的相关安全信息。
 
  虽然有好几种开源或商业软件可以进行一度程序的日志分析,但是有一个工具是它们都用到的--正则表达式(regex)。从根本上来说正则表达式就是一串字符串,它使得几乎任何一种语言或搜索工具都可以对大量的文本数据执行快速、高级的搜索操作。正则表达式现在有好几个变种,使用得最广泛的一种是Perl风格的正则表达式。.NET Framework,Python,Java,Javascript ,所采用的格式都属于Perl风格,当然Perl里用的也是。结合任何一种搜索工具或脚本语言使用这种正则表达式,你都可以从大量的数据里快速、高效地解析出有用信息。
 
  Apache,或者说httpd的日志是我们检查得最频繁的,我们时不时就得看看日志里有没有出现什么问题。这些Web日志里往往隐藏着许多重要信息。比如说攻击尝试、攻击成功的迹象,甚至还能发现攻击的征兆。
 
  我们将重点介绍通过egrep工具使用正则表达式。egrep提供了一种很简单的搜索文件的语法并且几乎在当前流行的所有操作系统上都可以用。( Windows用户可以 从各种 来源下载到它的免费版本)
 
  另外,记住所有能在egrep下使用的正则表达式在其它程序或脚本语言里也一样能兼容。
 
  在本文中,我们将用Apache日志进行示范。但是这种通过正则表达式、egrep处理httpd日志的方法可以在数百种其它的平台、工具以及日志类型上借用。理解什么是危险以及如何找出危险对于发现你们的安全隐患是非常重要的。
 
  第一步:了解日志格式

  要编写针对这些日志格式的正则表达式,我们首先就得理解它的结构。Aapche会保留服务器访问记录之类的信息,通常是在/etc/httpd/logs目录下,日志文件一般以access_log这样的方式命名。
 
  你可以配置Apache让它把日志记录发送到一个syslog或SIM系统上去,如果是这样的话,你的日志格式可能与默认格式略有不同。Apache会按如下格式保存用回车符分隔开的日志条目。

10.10.10.10 - frank [10/Oct/2007:
13:55:36 -0700] “GET /apache_pb.gif
HTTP/1.0” 200 2326

  让我们一点一点地分开看。第一个值,10.10.10.10就是客户端的IP地址,如果HostnameLookups启用了的话,接下来紧跟的就是客户端的主机名。往下来是日期和时间戳,10/Oct/2007:11:55:36 -0700。这对于某些与时间相关的操作是至关重要的。
 
  接下来,我们看到的是HTTP头信息。这个信息是非常重要,因为它让我们了解到用户发出的是哪种类型的请求。在本例中 “GET/apache_pb.gif HTTP/1.0 ”表示的是一个GET方式的请求,请求的目标是位于httpd服务器根目录下名为apache_pb.gif的这个图片文件。
 
  最后,服务器返回响应代码, 200 ,表示该请求已经成功处理了。余下的那一点信息则是服务器响应内容的长度。
 
  第二步:开始下手

  理解了日志格式的各个部分之后,我们就可以开始着手检查日志里的可疑请求记录了。例如,那些请求WebMin这个Web管理工具的记录,还有请求admin这样的管理界面的记录都是非常可疑的。
 
  大多数情况下这些特征字串都是日志记录里的一部分。知道这一点后,我们就可以把这些字串当作正则表达式用egrep处理。

>egrep –n webmin access_log

  这很容易看懂:先是egrep命令,然后跟上它的配置参数,然后是搜索条件,最后是要进行搜索的那个文件的文件名。
 
  加上-n参数后,就能显示出匹配的行的行号,以方便后面我们引用它。上面这条命令执行后应该要显示出所有在请求的URL里包含有webmin的日志条目, 比如像下面这个样子:

57:10.10.10.10 - bob
[10/Oct/2007:20:24:18 -0700] “GET /
webmin HTTP/1.0” 404 726

  结果显示在日志文件的第57行,有一条发生在10月10日下午8:44的请求记录,所请求的是Webmin目录。我们还看到服务器返回了一个404错误,表示无法定位到该目录。这样做是很有必要的,因为那有应该有访问权限的用户肯定已经明确知道文件的具体路径(而不用请求整个目录)。如果不处理好的话,Bob这样找着找着就能发现我们服务器的漏洞。

 
查看全文
 
 
 
 
 

日志管理

 
在面对SIEM与日志管理之间的选择时,价钱成了大企业或小公司考虑的关键。SIEM很容易一单就超过十万美元的门槛,如果是那些大公司的话,达到7位数字的金额也不足为奇……
 
现如今,你的整个网络所产生的大量日志数据足以把人吞没。所有的设备都在以纳秒为单位记录着整个企业网络里的一举一动。你能从一大堆的日志数据里找出要取证的目标吗?
 
估算日志产生率是一项非常棘手的工作,而且很难创建可靠的通用评估工具。很多安全信息和事件管理(SIM/SIEM)厂商都有一些基于Excel的私有计算工具……
 
日志的分析工作需要有完善的搜索技能作基础,那样你才能找出问题所在。现在似乎所有的新设备、工具、甚至桌面软件都可以生成日志或基于文本的数据了……
 
日志的分析工作需要有完善的搜索技能作基础,那样你才能找出问题所在。现在似乎所有的新设备、工具、甚至桌面软件都可以生成日志或基于文本的数据了……
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录