文档首页/ 内容分发网络 CDN/ 最佳实践/ 通过日志分析恶意访问地址
更新时间:2026-04-21 GMT+08:00
分享

通过日志分析恶意访问地址

适用场景

如果您的加速域名遭受攻击,想要加固安全防护配置,比如配置防盗链、IP黑白名单等,您可以通过分析攻击时段对应的日志实现。

CDN日志包含了终端用户访问的信息,日志内容示例如下:
[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 CDN日志字段说明

序号

字段含义

字段示例

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=x-y:表示请求第x个字节到第y个字节的数据内容。
  • bytes=-y:表示请求最后y个字节的数据内容。
  • bytes=x-:表示请求第x字节到最后一个字节的数据内容。

bytes=-256

14

服务端IP:CDN服务端响应IP。

x.x.x.x

操作步骤

  1. 登录CDN控制台
  2. 在左侧菜单栏中,选择日志管理
  3. 选择需要查询的加速域名和日期。
  4. 在需要下载的日志行单击“下载”,即可将日志下载到本地。
  5. 日志下载后,将日志解压。如果想要分析多个日志文件,可以在Windows系统下合并多个日志文件。
    copy *.com-cn  hebing.txt
  6. 将日志上传至本地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),说明可能在进行攻击。
      筛选排名前10的状态码
      awk '{print $10}' hebing.txt | sort -n | uniq -c | sort -nr| head -n 10
    • 也可通过其他字段,如:referer、缓存命中状态或者多个字段进行结合过滤筛选,从而判断共性的部分,加固对应的防护配置。

相关文档