lucycoding/ip-ban-hammer
GitHub: lucycoding/ip-ban-hammer
一款 Linux 服务器日志分析工具,自动检测 Web 攻击 IP 并通过 iptables 封禁,保护网站安全。
Stars: 1 | Forks: 0
# IP Ban Hammer
[](LICENSE)
[]()
[]()
[]()
**自动分析网站日志,检测攻击IP并封禁**
[English](#english) | [中文](#中文)
## 中文
### 功能特点
- 交互式安装:10步引导,自动检测日志、本机IP,场景化配置
- 多日志源支持:可配置多个日志文件路径(逗号分隔)
- 中英文切换:安装时选择,运行时通过配置切换
- 自动封禁:检测攻击IP并自动添加到iptables
- 白名单支持:支持单个IP和CIDR网段,白名单IP不会被封禁
- 私有IP跳过:自动跳过内网IP封禁,防止误封
- 告警通知:支持 Webhook 和 Email 告警通知
- 预览模式:`--preview` 预览将要封禁的IP,不实际写入
- 完整卸载:支持完全卸载,不影响其他iptables规则
- 性能优化:大文件反向读取,快速定位最近日志
- 全量扫描:支持全量日志分析,带进度条显示
- systemd支持:可选 systemd timers 替代 cron
- 备份回滚:支持备份和恢复 iptables 规则与数据文件
- 配置备份:配置修改时自动备份,支持查看和恢复历史配置
### 环境要求
| 组件 | 最低版本 | 推荐版本 | 说明 |
|-----|---------|---------|------|
| **Linux** | CentOS 7+ / Ubuntu 16.04+ / Debian 9+ | CentOS 8+ / Ubuntu 20.04+ | 需支持systemd |
| **Python** | 3.6+ | 3.8+ | 核心分析脚本(仅标准库,无第三方依赖) |
| **Bash** | 4.0+ | 4.2+ | Shell脚本(需要关联数组支持) |
| **iptables** | 1.4.21+ | 1.6+ | 防火墙管理 |
### 快速安装
cd ip-ban-hammer
chmod +x install.sh
./install.sh
安装过程(10步):
1. **创建目录** - 创建安装目录、配置目录、数据目录、日志目录
2. **检测日志文件** - 自动检测 `/www/wwwlogs/*.log`、`/var/log/nginx/access.log` 等
3. **配置白名单IP** - 自动检测本机IP(内网+公网),询问是否添加
4. **选择封禁策略** - 根据网站类型选择预设策略或自定义
5. **高级配置** - 可选配置iptables链名、历史保留天数、cron频率
6. **复制脚本** - 复制可执行脚本到 `/opt/ip-ban-hammer/bin/`
7. **生成配置** - 根据安装选项生成运行时配置文件
8. **设置权限** - 配置文件和数据文件权限设为 600
9. **配置定时任务** - 添加日志分析、应用封禁、清理历史的cron任务
10. **安装命令** - 创建 `ipban` 命令链接和Shell补全
### 封禁策略预设
| 策略 | 攻击阈值 | 时间窗口 | 适用场景 |
|-----|---------|---------|---------|
| 个人博客/小型网站 | 3次 | 30分钟 | 快速响应,低流量 |
| 企业官网/中型网站 | 5次 | 30分钟 | 平衡模式,推荐选择 |
| 电商平台/大型网站 | 10次 | 20分钟 | 避免误封,高流量 |
| API服务/高频请求 | 15次 | 10分钟 | 短窗口,高频请求 |
### 攻击检测类型
系统检测以下11种攻击类型:
| 类型 | 检测内容 |
|-----|---------|
| **SQL Injection** | UNION SELECT, INSERT INTO, DROP TABLE, SLEEP(), BENCHMARK() 等 |
| **XSS Attack** | javascript:, on\*=, \