
# 通过日志分析恶意访问地址
#### 适用场景
如果您的加速域名遭受攻击，想要加固安全防护配置，比如配置防盗链、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]所示。
 表1CDN日志字段说明 
| 序号 | 字段含义                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 字段示例                                                                                                                               |
|:---|:---|:---|
| 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控制台](https://console.huaweicloud.com/cdn/?locale=zh-cn#/cdn/overview)。
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黑名单](https://support.huaweicloud.com/usermanual-cdn/cdn_01_0015.html)完成配置。
     列出访问前100的IP地址
     ```
     awk '{print $3}' hebing.txt | sort -n |uniq -c | sort -nr| head -n 100
     ```
     ![](https://support.huaweicloud.com/bestpractice-cdn/public_sys-resources/note_3.0-zh-cn.png)
     awk '{print $3}'：提取日志文件的第三列（列之间使用空格隔开），即访问IP地址。
     hebing.txt：合并后的日志文件名称，如果使用单个日志文件，使用日志名称替换即可。
     sort -n：IP地址排序。
     sort -nr：按降序排列。
     uniq -c：统计每个IP地址出现的次数。
     head -n 100：提取排名在前100的访问IP。
     
   
   - **分析User-Agent信息** ：通过UA请求头看是否存在不常见和空的UA头，判断是否属于攻击行为，可参考[UA黑名单配置](https://support.huaweicloud.com/usermanual-cdn/cdn_01_0154.html)配置访问控制。
     提取日志中的访问量排名前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
     ```
     ![](https://support.huaweicloud.com/bestpractice-cdn/public_sys-resources/note_3.0-zh-cn.png)
     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、缓存命中状态或者多个字段进行结合过滤筛选，从而判断共性的部分，加固对应的防护配置。
    
 
