通过日志分析恶意访问地址
适用场景
如果您的加速域名遭受攻击,想要加固安全防护配置,比如配置防盗链、IP黑白名单等,您可以通过分析攻击时段对应的日志实现。
[05/Feb/2018:07:54:52 +0800] x.x.x.x 1 "-" "HTTP/1.1" "GET" "www.test.com" "/test/1234.apk" 206 720 HIT "Mozilla/5.0 (Linux; U; Android 6.0; zh-cn; EVA-AL10 Build/HUAWEIEVA-AL10) AppleWebKit/533.1 (KHTML,like Gecko) Mobile Safari/533.1" "bytes=-256" x.x.x.x
各字段从左到右含义如表1所示。
| 序号 | 字段含义 | 字段示例 |
|---|---|---|
| 1 | 日志生成时间 | [05/Feb/2018:07:54:52 +0800] |
| 2 | 访问IP地址 | x.x.x.x |
| 3 | 响应时间(单位ms) | 1 |
| 4 | Referer信息 | - |
| 5 | HTTP协议标识 | HTTP/1.1 |
| 6 | HTTP请求方式 | GET |
| 7 | CDN加速域名 | www.test.com |
| 8 | 请求路径 | /test/1234.apk |
| 9 | HTTP状态码 | 206 |
| 10 | 返回字节数大小 | 720 |
| 11 | 缓存命中状态 | HIT |
| 12 | User-Agent信息,其作用是让服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本信息等。 | Mozilla/5.0 (Linux; U; Android 6.0; zh-cn; EVA-AL10 Build/HUAWEIEVA-AL10) AppleWebKit/533.1 (KHTML,like Gecko) Mobile Safari/533.1 |
| 13 | Range信息,其作用是在HTTP请求头中指定返回数据的范围,即第一个字节的位置和最后一个字节的位置。 bytes参数值表示方法一般分为如下三类:
| bytes=-256 |
| 14 | 服务端IP:CDN服务端响应IP。 | x.x.x.x |
操作步骤
- 登录CDN控制台。
- 在左侧菜单栏中,选择。
- 选择需要查询的加速域名和日期。
- 在需要下载的日志行单击“下载”,即可将日志下载到本地。
- 日志下载后,将日志解压。如果想要分析多个日志文件,可以在Windows系统下合并多个日志文件。
copy *.com-cn hebing.txt
- 将日志上传至本地Linux系统服务器。
- 分析用户访问的资源:如果访问的资源比较集中,访客IP较分散,可能是新增了资源。
统计访问排名前100的URL
awk '{print $9}' hebing.txt | sort -n |uniq -c | sort -nr| head -n 100 - 分析访客IP:如果较集中在某些IP段且访问量很大,访问的URL具体资源比较集中,有可能这些访客IP是恶意访问,可将这些IP添加黑名单,请参考IP黑名单完成配置。 列出访问前100的IP地址
awk '{print $3}' hebing.txt | sort -n |uniq -c | sort -nr| head -n 100
awk '{print $3}':提取日志文件的第三列(列之间使用空格隔开),即访问IP地址。
hebing.txt:合并后的日志文件名称,如果使用单个日志文件,使用日志名称替换即可。
sort -n:IP地址排序。
sort -nr:按降序排列。
uniq -c:统计每个IP地址出现的次数。
head -n 100:提取排名在前100的访问IP。
- 分析User-Agent信息:通过UA请求头看是否存在不常见和空的UA头,判断是否属于攻击行为,可参考UA黑名单配置配置访问控制。
提取日志中的访问量排名前10位的User-Agent信息
grep -o 'Mozilla[^"]*' hebing.txt | sort -n | uniq -c | sort -nr | head -n 10
排除常见的User-Agent的User-Agent信息
grep -o 'Mozilla[^"]*' hebing.txt|grep -v -E "Firefox|Chrome|Safari|Edge"
统计空User-Agent的行数,即访问次数
awk '!/Mozilla/' hebing.txt | wc -l
grep -o:只输出匹配的内容。
grep -v -E:排除符合条件的字符。
wc -l:统计数量。
- 状态码分析:可以通过分析日志中异常状态码来识别恶意访问。如果某IP有大量异常访问状态码(4xx或5xx),说明可能在进行攻击。
- 也可通过其他字段,如:referer、缓存命中状态或者多个字段进行结合过滤筛选,从而判断共性的部分,加固对应的防护配置。
- 分析用户访问的资源:如果访问的资源比较集中,访客IP较分散,可能是新增了资源。