mycybersecurity2026/New-Log
GitHub: mycybersecurity2026/New-Log
基于 Bash/AWK 的 Apache 访问日志分析工具,可自动提取流量统计指标并检测扫描、漏洞利用等安全威胁。
Stars: 0 | Forks: 0
# Apache 访问日志分析项目
**分析师:** Gibson Ukarioniso
**角色:** 日志分析师
**日期:** 2026年7月26日
**环境:** Kali Linux
**使用工具:** 'grep, 'awk', 'sort', 'uniq', 'wc'
## 概述
本仓库记录了对三个 Apache Web 服务器访问日志进行的日志分析练习。目的是解析原始访问日志,识别流量模式、错误趋势以及与安全相关的异常(扫描、代理滥用、漏洞利用尝试),并以可重现、可脚本化的格式呈现结果。
## 仓库结构
```
.
├── README.md # This file
├── logs/ # Raw Apache access logs (analysis input)
│ ├── access-1.log
│ ├── access-2.log
│ └── apache.logs
├── scripts/
│ └── analyze_logs.sh # Bash/AWK analyzer — generates the reports below
└── reports/ # Generated output (one report per log file)
├── access-1.log_report.txt
├── access-2.log_report.txt
└── apache.logs_report.txt
```
## 方法论
日志采用标准的 Apache **combined log format**(组合日志格式):
```
%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"
```
`scripts/analyze_logs.sh` 使用 `awk`/`grep` 针对每个文件提取并总结以下内容:
1. 总请求量
2. 按请求数排名前 10 的客户端 IP 地址
3. HTTP 状态码分布
4. 请求次数排名前 10 的资源/URL
5. 请求次数排名前 10 的 user agents
6. 服务器错误 (5xx) 计数
7. 客户端错误 (4xx) 计数
8. 可疑/侦察活动,与涵盖常见漏洞利用和扫描特征(`xmlrpc.php`、`wp-login`、`/CFIDE/`、目录遍历、Shellshock 风格的 payloads、`masscan`、`nmap`、`zgrab`、开放代理检查器、`sqlmap`、`nikto` 等)的签名列表进行匹配
9. HTTP 方法分解
每个报告都会写入 `reports/_report.txt`,并打印到控制台。
## 关键发现
### `access-1.log` (156 个请求)
- 主要客户端:`44.224.22.196`(40 个请求,约占流量的 26%)。
- 状态码:103× `200`,22× `400`,18× `404`。
- 重复请求 `/latest/dynamic/instance-identity/document` 和 AWS 实例元数据地址 `169.254.169.254` —— 这是一种符合 **SSRF/metadata-endpoint probing(元数据端点探测)** 的特征,常见于代理或扫描器测试服务器是否可以被诱骗访问内部云元数据服务时。
- 有 5 个请求匹配到了已知的扫描/漏洞利用特征。
- 请求字段中出现了几个原始 TLS ClientHello 字节序列,表明这是**发送至预期使用 TLS 端口的明文 HTTP 探测**,或者是畸形/非 HTTP 的连接尝试。
### `access-2.log` (100 个请求)
- 主要客户端:`80.82.70.24`(19 个请求)—— 重复的 SOCKS 握手字节序列(`\x04\x01...`, `\x05\x01\x00`)表明这是 **SOCKS 代理扫描**,这是 Rapid7/Sonar 及类似的全网扫描服务的一种已知行为。
- 100 个请求中有 33 个(33%)匹配到了可疑签名 —— 这对该文件而言是一个显著的高比例。
- 确认存在 **Shellshock 漏洞利用尝试**(在请求行和 User-Agent 中包含 `() { :; };` payload),来自 `61.161.130.241`,试图下载并执行远程 payload(`China.Z`)。
- 来自 `95.213.177.x` 子网的重复 `CONNECT check.proxyradar.com:80` 请求 —— 符合**开放代理滥用/验证流量**特征。
- 来自不同 IP 的多个 `GET /testproxy.php` 请求共享了完全相同的 Firefox 31 user agent —— 符合**自动化开放代理测试基础设施**特征。
- `GET /xmlrpc.php` 和 `GET /CFIDE/administrator/` 请求 —— 标准的 **WordPress/ColdFusion 漏洞扫描**。
- 19 个请求返回了 `502 Bad Gateway`,表明在部分捕获窗口期间存在后端/上游不稳定或反向代理配置错误。
### `apache.logs` (10,000 个请求 — semicomplete.com 博客数据集)
- 绝大多数为合法流量:9,126 个 `200` OK 响应(91.3%)。
- 顶级客户端 `66.249.73.135`(482 个请求)是 **Googlebot**,已通过 user agent 确认,表明这是常规的搜索引擎爬取,而非滥用。
- 请求次数最多的资源是静态资源(`/favicon.ico`, `/style2.css`, `/reset.css`,图像资源)和 RSS/Atom feed endpoints(`/blog/tags/puppet?flav=rss20`),符合**博客/feed 阅读器流量画像**。
- 极低的错误率:10,000 个请求中仅有 3 个 `500` 错误和 2 个 `403` 错误 —— 表明在捕获窗口期间,这是一个稳定、运行良好的生产服务器。
- 在此文件中未检测到高置信度的漏洞利用特征。
## 总结对比
| 指标 | access-1.log | access-2.log | apache.logs |
|----------------------------|:---:|:---:|:---:|
| 总请求数 | 156 | 100 | 10,000 |
| 唯一顶级 IP 占比 | ~26% | 19% | ~4.8% |
| 4xx 错误 | 40 | 37 | 213 |
| 5xx 错误 | 0 | 19 | 3 |
| 可疑签名命中数 | 5 (3.2%) | 33 (33%) | 0 |
| 整体流量画像 | 混合 bot/合法,SSRF 探测 | 高扫描/漏洞利用比例 | 绝大多数为合法 |
**风险排名(从高到低):** `access-2.log` > `access-1.log` > `apache.logs`
## 建议
1. 在每个报告中,封锁或对标记为“可疑/侦察活动”的 IP 进行限流,特别是 `61.161.130.241`(Shellshock 尝试)和 `95.213.177.0/24` 范围(代理检查扫描)。
2. 如果不需要,请禁用或限制 `xmlrpc.php` 以及任何未使用的 CMS/管理端点(`/CFIDE/`、`/manager/html`)。
3. 如果托管在云 VM 上,请阻止面向 Web 的进程对 `169.254.169.254` 的出站/入站访问,或者使用带有跳数限制保护的 IMDSv2,以缓解 SSRF 到元数据的攻击。
4. 调查 `access-2.log` 中重复出现 `502` 响应的原因 —— 这可能表明与扫描活动同时发生的上游不稳定,或者扫描器本身触发了后端故障。
5. 继续监控 `apache.logs` 风格的流量,将其作为健康基准,以便在未来的事件调查中进行对比。
## 如何重现
### 前置条件
- 具备 `bash`、`awk` 和 `grep` 的类 Unix 环境(Linux/macOS/WSL)(均为标准工具,无需额外安装)。
### 步骤
```
# 1. Clone the repository
git clone .git
cd
# 2. 使 script 可执行(仅首次)
chmod +x scripts/analyze_logs.sh
# 3. 对一个或多个 log 文件运行 analyzer
./scripts/analyze_logs.sh logs/access-1.log
./scripts/analyze_logs.sh logs/access-2.log
./scripts/analyze_logs.sh logs/apache.logs
# 或一次性对所有 logs 运行:
./scripts/analyze_logs.sh logs/*.log logs/*.logs
# 4. 报告写入 reports/_report.txt
cat reports/access-2.log_report.txt
```
## 发布此仓库 (GitHub) 的步骤
1. **创建本地项目文件夹并添加你的文件:**
mkdir apache-log-analysis && cd apache-log-analysis
mkdir -p logs scripts reports
# 将 README.md, scripts/analyze_logs.sh 以及你的 log 文件
# (access-1.log, access-2.log, apache.logs) 复制到相应的文件夹中
2. **初始化 git:**
git init
git add README.md scripts/analyze_logs.sh logs/ reports/
git commit -m "Initial commit: Apache log analysis by Gibson Ukarioniso"
3. **在 GitHub 上创建一个新的空仓库**(通过 github.com → New
repository)。**不要**使用 README 初始化它,因为你已经在本地有一个了。
4. **链接并推送:**
git remote add origin https://github.com//.git
git branch -M main
git push -u origin main
5. **验证:** 在浏览器中打开仓库 URL 并确认
`README.md`、`scripts/analyze_logs.sh`、`logs/` 和 `reports/` 均已存在。
## 许可证
如果此仓库将公开共享,请添加你选择的许可证(例如 MIT)。
*由日志分析师 Gibson Ukarioniso 编写。*
标签:Apache, Bash, 应用安全, 脚本, 运维工具