4. 使用指南¶
analog 是一款命令行下的Web日志审计工具,旨在帮助使用者能够在终端上快速得进行Web日志审计和排查,包含了日志审计、统计的终端图形化和机器学习识别恶意请求的功能
经过安装以及配置文件,现在已经可以使用 analog 进行日志审计了,但要使用机器学习识别恶意请求的功能则还需要进行一定量的训练数据筛选和黑白测试样本的选择 详细步骤点击这里
4.1. 语法¶
让我们来看一下语法的整体架构和具体功能:
- show
展示各类功能
- statistics <requests | ip | ua | url>
统计功能。当统计量为requests时,将统计时间范围内的访问请求数量,给出统计柱状图。其他则为统计表。
- current <hour | day | week | month | year>
给出统计的日志时间范围:当前小时、天、周、月、年
- top <N>
给出统计结果的前多少个(默认前10,倒序)
- 例子
show statistics requests current day
show statistics ip current week top 20
- log
表格展示访问日志,用作日志可视化审计
- current <hour | day| week | month | year>
给出统计的日志时间范围:当前小时、天、周、月、年
- 例子
show log current hour
show log current week
show log of ip 8.8.8.8
- analysis
对日志进行恶意分析,做出分析报告
- current <hour|day|week|month|year>
给出分析的日志时间范围:当前小时、天、周、月、年
- 例子
show analysis current week
show analysis current month
- train | retrain
开始训练模型
- locate
用IP库定位某个具体IP
- ip <query_ip>
固定字段ip, your_ip为查询ip
- 例子
locate ip 8.8.8.8
- set
设置变量
- <day | month | year | date>
设置当前日期(注:date格式如2020/2/10, day | month | year 格式则为纯数字)
- offset
设置当前日志的偏移,用于日志审计模式
- get
- <hour | day | month | year | date>
显示当前设置的日期
- offset
显示当前偏移
- progress
获取模型训练进度
基本语法可以在通过analog控制台中输入 help 获取帮助:
analog> help
Usage:
show <statistics|analysis|log> <IP|requests|UA|url> <current|last> <day|week|month|year|all> (top N)
Example:
show statistics requests current day Draw a chart to show statistics of website visit
show statistics url last week top 10 Draw a chart to show statistics of requests
show analysis current day Display log analysis using abnormal detection model.
show log current day Display the log in a table.
More:
train|retrain Train your model
get progress Get progress of training model
get time|date|offset Display values
set date 2019/8/3 Set date
set day|month|year|offset N Set values
get <values> Get values
More information:
<https://www.testzero-wz.com>
<https://github.com/Testzero-wz>
接下来将以各个功能为例子逐个介绍应该如何使用analog。
4.2. 各功能示例详解¶
4.2.1. 统计¶
4.2.1.1. 访问量柱状图¶
year, month, week, day, hour
示例命令:
analog> show statistics requests current month
analog> show statistics requests current day
log
目录下的日志为2020年2月3日到2月8日的,则可以输入一下命令改变统计时间节点:analog> set date 2020/2/3
# 或者逐级设置
analog> set year 2020
analog> set month 2
analog> set day 3
更详细的时间设置请参照 日期设置 。
4.2.1.2. 访问统计¶
analog> show statistics IP current year
可以通过在命令后增加top <N>字段修改展示的统计量
analog> show statistics IP current year top 30
统计当前年份请求路径url的访问次数(降序)。
analog> show statistics IP current year
统计当天User-Agent的访问次数(降序)。
analog> show statistics IP current year
统计UA的访问次数可以更好的了解当前时间段内最多次数访问者的UA情况(假设UA不变的话,如搜索引擎的爬虫),这里仅提供一种分析角度。
Tip
统计模式支持的最小时间范围为小时,即我们可以轻松地统计某个小时内的访问。
4.2.2. 日志审查¶
access.log
又着实不优雅,遇到gz压缩后的文件则更加让人没有想查看的“欲望”。于是乎,analog提供了更直观的日志审查方式。analog> show log current day
analog> get time
[*] time => 2020/03/30 21:00:00
analog> set day 20
[*] time was set to 2020/03/20 21:00:00
Note
PS: 我们可以随时按ESC键退出审计模式回到 正常模式。
analog> set offset 100
Warning
为了查询性能,analog单次仅查询5000条日志,当翻页达到5000,或者说偏移到达5000时,analog会自动查询下一5000条数据,以此类推。 若你的性能足够,可以通过配置config.ini中的 [log] 的字段 logs_per_query ,将默认值5000换成可以接受的数值。
analog> show log of ip 18.27.197.252
4.2.3. 恶意请求分析¶
analog> show analysis current month
异常访问IP的统计(IP视角)
异常访问的请求URL的统计(URL视角)
异常访问IP的物理地区的归并统计(IP地区视角)
该时间段内的恶意请求和正常请求的百分比(恶意请求百分比视角)
总而言之,我们可以通过 analysis 命令轻松地得到一个该时间段从多个视角归并的访问情况的概述。
4.2.4. 参数设置¶
analog 内置了一些可设置的参数,我们可以根据具体情况进行设置。
4.2.4.1. 日期设置¶
基本上 analog 的命令都是要基于一个时间节点然后选取范围的,而 analog 默认的时间取的是当前的系统时间,那么当我们需要读取几个月前的日志数据就会显得很不方便。
analog> set <hour | day | month | year> N
直接设置当前日期命令(注:date格式如2020/2/10):
analog> set date 2020/2/10
4.2.4.2. 日志偏移设置¶
根据我们的需求设置当前日志读取的偏移,其中 N 为纯数字:
analog> set offset N
Tip
当再次启动 日志模式 时,offset 将会自动地重新设置为0。
4.2.5. 定位IP¶
analog> locate ip <query_ip>
locate 命令有一个固定格式,即 locate 后面需要加上固定搭配 ip , 而 your_ip 为想要查询的ip,如:
analog> locate ip 106.11.159.21
[*] 106.11.159.21 => 中国-浙江-杭州
4.2.6. 重新加载日志文件¶
如果我们需要重新加载日志文件,我们可以键入以下命令重新加载日志文件。
analog> reload
config.ini
的 initial 字段将被程序自动设置为0。analog> reload
[!] Reload option will duplicate your logs if you don't erase DB table first.
[!] Would you like to erase table?[Y/n]
y
[!] Erased table `weblog`.
[*] Please start analog once again.
4.2.8. 清屏¶
analog> clear
4.3. 实时更新日志文件¶
Note
目前只是很简单地支持了实时文件更新的功能,可能会存在一些BUG。
Tip
还是那句话,欢迎动手,Geek : )