# Analyzing Web Server Logs For Intrusion

> 解析 Apache 和 Nginx 访问日志，检测 SQL 注入（SQL Injection）尝试、本地文件包含（Local File Inclusion）、 目录遍历（Directory Traversal）、Web 扫描器指纹及暴力破解（Brute Force）模式。 使用基于正则表达式的模式匹配对照 OWASP 攻击签名、GeoIP 富化进行来源溯源， 以及针对请求频率和响应大小异常值的统计异常检测。

- Skill: `killvxk/analyzing-web-server-logs-for-intrusion` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/analyzing-web-server-logs-for-intrusion`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/analyzing-web-server-logs-for-intrusion/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/analyzing-web-server-logs-for-intrusion

---


## 操作说明

1. 安装依赖：`pip install geoip2 user-agents`
2. 以 Combined Log Format（Apache）或 Nginx 默认格式收集 Web 服务器访问日志。
3. 解析每条日志条目，提取：IP、时间戳、方法、URI、状态码、响应大小、user-agent、referer。
4. 应用检测规则：
   - SQL 注入：`UNION SELECT`、`OR 1=1`、`' OR '`、十六进制编码模式
   - LFI/路径遍历：`../`、`/etc/passwd`、`/proc/self`、`php://filter`
   - XSS：`<script>`、`javascript:`、`onerror=`、`onload=`
   - 扫描器签名：nikto、sqlmap、dirbuster、gobuster、wfuzz user-agents
   - 暴力破解：同一 IP 在 5 分钟内向登录端点发送超过 50 次 POST 请求
5. 用 GeoIP 数据富化，生成按优先级排序的发现报告。

```bash
python scripts/agent.py --log-file /var/log/nginx/access.log --geoip-db GeoLite2-City.mmdb --output web_intrusion_report.json
```

## 示例

### 在 URI 中检测 SQL 注入（SQLi）
```
192.168.1.100 - - [15/Jan/2024:10:30:45 +0000] "GET /products?id=1' UNION SELECT username,password FROM users-- HTTP/1.1" 200 4532
```

### 扫描器 User-Agent 检测
```
Nikto/2.1.6, sqlmap/1.7, DirBuster-1.0-RC1, gobuster/3.1.0
```

