运维利器:WEB日志分析场景介绍

本文介绍了Web日志分析的重要性,包括安全自检查、应急事件分析和业务行为统计。通过Apache访问日志示例展示了如何区分正常请求和恶意请求,并列举了一系列使用命令或工具进行日志分析的场景,如统计IP访问次数、URL访问频率、异常行为检测等。文章强调了日志分析在网络安全和业务理解中的关键作用。
摘要由CSDN通过智能技术生成

为什么要对 Web日志进行分析

随着 Web 技术不断发展,Web 被应用得越来越广泛,现在很多企业对外就一个网站来提供服务,所以网站的业务行为,安全性显得非常重要。正如安全行业的一句话:“世界上只有两种人,一种是知道自己被黑了的,另外一种是被黑了还不知道的”。对网站的业务行为分析,网站的安全性分析一个很重要的途径就是通过日志。通过WEB日志分析最直接明显的几个目的:

  • 一为网站安全自检查,了解服务器上正在发生的安全事件;
  • 二为应急事件中的分析取证;
  • 三是可根据日志分析一些常用的业务行为。

如何进行日志分析?

在进行日志分析之前,我们先来了解一下 Web服务器中产生的日志是什么样子。我们来看一条 Apache 的访问日志为例:

114.221.137.87 - - [10/Sep/2019:14:52:28 +0800] "GET /login HTTP/1.1" 200 1068 https://secilog.secisland.com/ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.40

通过以上信息,我们可以得知服务器会记录来自客户端的每一个请求,其中有大量来自正常用户的请求,当然也包括来自恶意攻击者的请求,那么我们如何区分正常请求和恶意攻击请求呢?

站在攻击者的角度,攻击者对网站进行渗透时,其中包含大量的扫描请求和执行恶意操作的请求,而这两者在日志中都有各自的特征,如扫描请求会访问大量不存在的地址,在日志中体现则为大量的响应状态码为404,而不同的恶意请求都有各自相应的特征。

如当有人对服务器进行SQL注入漏洞探测时会有类似:/login?attack=test’;select/* */1//from//1等内容。通过关键字分析可以分析哪些 IP 在进行攻击,可以进一步的进行处置,比如封ip等。

日志分析场景介绍

一般可以按照两种思路展开,逐步深入,还原整个攻击过程。

  • 第一种:确定入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。
  • 第二种:攻击者在入侵网站后,通常会留下后门权限,以方便再次访问,我们可以找到该文件,并以此为线索来展开分析。

曾经有人问过运维的人员的大神,该如何分析日志?大神回答了三个字:“用命令”。

因为站在脚本操作经验丰富的人角度来看,的确用命令足矣,可是对于一般的人员来说用Linux的shell命令还是稍显复杂。还是需要借助一些工具来提高效率。这里用了SECISLAND 新推出的免费工具 secsoso来作为示例:

spl 完整语法:secsoso ‘file=(“文件名”," ") 过滤|统计…’简化语法: secsoso ‘文件名 过滤|统计…’

secsoso是一个小工具,用来搜索、关联、统计文本数据,它结合了 SQL 的功能与 Unix 管道语法,可以对文本数据进行快速的定位,查找和分析,从而提高处理和解决问题的效率。

secsoso获取方式如下:
1、关注公众号“SECISLAND安全官”

2、公众号内发送“secsoso”,获取下载链接

业务行为统计

列出文件中访问次数最多的10个IP

secsoso 'file=("/export/home/20190613/access.log"," ")|stats  count($1) by $1|sort 10 -count_$1'

说明:其中/export/home/20190613/access.log为文件路径,“ ”为字段分割符。文件名可以是绝对路径(/export/home/20190613/access.log) 也可以是相对路径(access.log)。默认列名为$1,$2…, count($1)后的默认名称为count_$1。

结果如下:

$1                        count_$1
 101.226.68.137                 972
  163.177.71.12                 972
183.195.232.138                 971
111.192.165.229                 377
  114.252.89.91                 374
   66.249.66.84                 246
 222.70.152.149                 226
 220.181.89.174                 172
 111.194.118.58                 160
  60.247.77.253                 146

你也可以给字段重命名以友好方式显示,这个是简化语法:结果同上。

secsoso ‘access.log|rename $1 as ip |stats  count(ip) by ip|sort 10 -count_ip’

查看文件中有多少个不同的IP访问

secsoso  'access.log|rename $1 as ip |stats  dc(ip) '

结果如下:

dc_ip
1050

查看某一个页面被访问的次数

比如 /nodejs-underscore/?cf_action=sync_comments为访问页面

secsoso 'access.log "/nodejs-underscore/?cf_action=sync_comments"|eventcount'

“/nodejs-underscore/?cf_action=sync_comments”是过滤的含义,结果如下:

event_count
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值