barateza/ddos-analysis

GitHub: barateza/ddos-analysis

一款高性能 Bash 工具集,用于 Plesk 服务器的 DDoS 实时检测与事后日志取证分析。

Stars: 0 | Forks: 0

# DDoS 分析自动化脚本 欢迎,守护者。本脚本将原本繁琐的恶意流量排查过程,转化为一个针对 Plesk 服务器的流线型、自动化调查工具。它能跨多个虚拟主机收集、过滤并报告 HTTP 日志——还支持通过 AbuseIPDB 进行可选的信誉检查。 ## 关键特性 ### 实时攻击检测 (`--real-time`) - **实时连接监控**:通过 `ss` 快照跟踪 ESTABLISHED、SYN_RECV 和 TIME_WAIT 状态 - **SYN-Flood 检测**:当 SYN_RECV 计数超过配置的阈值时自动报警 - **目标 IP 识别**:在多 IP 环境中识别受攻击的具体服务器 IP - **域名负载跟踪**:实时尾随日志(Log tailing),在攻击展开时识别最受攻击的域名 ### 事后分析 (默认模式) - **取证调查**:提取所有虚拟主机在指定攻击日期的日志条目 - **零拷贝流式处理**:直接从 gzip/纯文本源分析日志 —— 比基于拷贝的方式快约 90% - **IP 信誉**:可选的 AbuseIPDB 集成,用于自动评分(Python 3 原生解析器) - **域名到 IP 关联**:生成详细报告,准确显示每个 IP 攻击了哪些域名 ### 小时级模式分析 (`--hourly-analysis`) - **基线异常检测**:使用可配置的阈值标记流量峰值(默认:基线以上 200%) - **攻击窗口**:精确识别事件的开始、峰值和恢复时间 - **CSV 导出**:生成可用于电子表格和利益相关者报告的可操作指标 ### 架构与安全性 - **Dry-Run 模式**:在执行前预览所有操作 - **双栈支持**:完全兼容 IPv4 和 IPv6,包括内部范围过滤 - **可移植性**:跨 Linux 发行版运行,依赖项极少 ## 前置条件 - **操作系统**:Linux(已在 Ubuntu、Debian、RHEL、CentOS 上测试) - **权限**:需要 Root 权限(系统日志和网络状态) - **工具**:`bash`、`grep`、`find`、`curl`、`python3`(用于 AbuseIPDB)、`ss`(实时模式)、`awk`(小时级分析) ## 快速开始 ``` # Make 可执行 chmod +x ddos-analysis.sh # 事后分析 (交互式) sudo ./ddos-analysis.sh --log-days 3 # 实时监控 sudo ./ddos-analysis.sh --real-time --refresh-rate 2 # With IP 信誉查询 export ABUSEIPDB_API_KEY="your_api_key_here" sudo ./ddos-analysis.sh --with-abuseipdb-query ``` ## 核心选项 | 标志 | 用途 | |---|---| | `-d`, `--dry-run` | 预览操作而不进行修改 | | `-l`, `--log-days DAYS` | 日志收集的时间窗口(默认:3) | | `--date DATE` | 指定攻击日期(例如 `15/Jan/2026`)用于非交互式使用 | | `--target-ip IP` | 将调查范围过滤到特定的服务器 IP | | `--no-cleanup` | 退出时保留带有时间戳的调查目录 | | `--baseline-threshold %` | 小时级异常检测的灵敏度(默认:200) | | `--export-csv` | 将小时级分析导出为 CSV | ## 示例 ``` # Non-interactive 事后分析 With 信誉查询 ./ddos-analysis.sh --date "15/Jan/2026" --target-ip "203.0.113.5" --with-abuseipdb-query # 高敏感度实时监控 ./ddos-analysis.sh --real-time --syn-threshold 100 --refresh-rate 1 ``` ## 工作原理 ### 实时模式 1. 使用 `ss` 跟踪 ESTABLISHED 和 SYN_RECV 连接数 2. 当 SYN_RECV 阈值被超过时发出警报 3. 按活动连接数对源 IP 进行排名 4. 显示哪些服务器 IP 正在遭受攻击 5. 尾随最近的访问日志以识别最受攻击的域名 ### 事后模式 1. 在 `/tmp/ddos_investigation_` 下创建安全的工作目录 2. 流式传输所有 vhost 目录中的 `access*` 文件 3. 按指定的攻击日期过滤条目 4. 统计并排序顶级 IP;运行可选的 AbuseIPDB 查询 5. 将每个 IP 映射到其攻击的域名 ## 故障排除 | 问题 | 解决方法 | |---|---| | 权限被拒绝 | 使用 `sudo` 运行 | | `ss` 未找到 | 安装 `iproute2` | | AbuseIPDB 错误 | 验证 `ABUSEIPDB_API_KEY` 已设置且 `python3` 可用 | ## 链接 - [ROADMAP.md](ROADMAP.md) — 开发历史和计划阶段 - [CHANGELOG.md](CHANGELOG.md) — 发布历史 - [Apache License 2.0](LICENSE) - [Plesk KB Article #12377282594199](https://support.plesk.com/hc/en-us/articles/12377282594199) — 相关知识库参考
标签:AbuseIPDB, certspotter, DDoS检测, HTTP日志, IPv6, IP信誉, Linux运维, Plesk, PowerShell, SYN泛洪, Ubuntu, 事后取证, 密码管理, 应用安全, 异常检测, 插件系统, 网络安全, 配置错误, 隐私保护