This-is-Akshay5/aib-shield
GitHub: This-is-Akshay5/aib-shield
一个结合 AI 实时检测与区块链审计的入侵防御系统,解决流量可见性与日志可信问题。
Stars: 0 | Forks: 0
# AIB Shield — AI + 区块链入侵防御系统
## 功能
- **AI 检测** — 随机森林分类器(scikit-learn)实时将每个网络数据包分类为正常或恶意
- **区块链日志** — 每个 AI 决策经过哈希(SHA-256)并通过 Ganache + Solidity 智能合约不可变存储到私有以太坊区块链
- **实时流量** — 通过 Scapy 捕获实时数据包,重放 NSL-KDD 数据集,或使用模拟流量
- **告警系统** — 邮件告警(Gmail)、浏览器推送通知以及仪表板中的威胁提示
- **登录告警** — 每次登录时向用户发送邮件通知
- **用户认证** — 使用 SQLite 用户数据库进行注册/登录,支持每位用户的邮件告警
- **深色/浅色主题** — 完整的主题切换
- **自动登出** — 60 秒无活动后自动锁定会话
- **攻击模拟器** — 演示模式(仅管理员)
- **实时仪表板** — 实时事件流、流量图表、区块链账本、IP 黑名单
## 项目结构
```
ai-ips/
├── main.py # Core IPS runner (CLI mode)
├── dashboard.py # Flask web dashboard (main file)
├── run.py # One-click launcher
├── traffic_capture.py # Live / NSL-KDD / simulated traffic engine
├── alert_system.py # ⚠️ NOT in repo — see setup below
├── user_db.py # ⚠️ NOT in repo — see setup below
├── alert_system.template.py # Template — copy and configure
├── user_db.template.py # Template — copy and configure
├── requirements.txt # Python dependencies
├── ai/
│ ├── train_model.py # Train and save Random Forest model
│ ├── detector.py # Real-time AI classification engine
│ └── model.pkl # ⚠️ NOT in repo — generated locally
├── blockchain/
│ ├── contracts/IPSLog.sol # Solidity smart contract
│ ├── migrations/ # Truffle deployment scripts
│ └── truffle-config.js # Ganache network config
├── integration/
│ └── blockchain_logger.py # Web3.py bridge to smart contract
└── data/
├── users.db # ⚠️ NOT in repo — generated locally
└── KDDTrain+.txt # ⚠️ NOT in repo — download separately
```
## 设置(Windows)
### 1. 安装前准备
请先安装以下组件:
- [Python 3.11](https://python.org/downloads) — 请勾选 **“Add to PATH”**
- [Node.js v18 LTS](https://nodejs.org)
```
npm install -g ganache truffle
```
### 2. 克隆仓库
```
git clone https://github.com/YOUR_USERNAME/aib-shield.git
cd aib-shield
```
### 3. 安装 Python 依赖
```
pip install -r requirements.txt
```
### 4. 配置凭据
**步骤 A** — 复制模板文件:
```
copy alert_system.template.py alert_system.py
copy user_db.template.py user_db.py
```
**步骤 B** — 编辑 `alert_system.py`:
```
GMAIL_SENDER = "your_gmail@gmail.com"
GMAIL_PASSWORD = "xxxx xxxx xxxx xxxx" # 16-char App Password
```
**步骤 C** — 编辑 `user_db.py`:
```
ADMIN_EMAIL = "your_gmail@gmail.com"
```
### 5. 训练 AI 模型
```
python ai\train_model.py
```
### 6. 运行全部服务
```
python run.py
```
此操作将自动:
- 启动 Ganache(本地区块链)
- 部署智能合约
- 启动仪表板
- 在浏览器中打开 `http://localhost:5000`
## 默认登录
| 用户名 | 密码 | 角色 |
|---|---|---|
| `admin` | `shield123` | 管理员 |
| `analyst` | `ips2024` | 分析师 |
或通过 **注册** 页面创建自己的账户。
## 流量来源
系统会自动选择最佳可用来源:
| 优先级 | 来源 | 启用方式 |
|---|---|---|
| 1st | 实时数据包捕获 | 以管理员身份运行 + `pip install scapy` |
| 2nd | NSL-KDD 数据集 | 将 `KDDTrain+.txt` 放入 `data/` 文件夹 |
| 3rd | 模拟流量 | 默认可用,无需配置 |
**下载 NSL-KDD 数据集:**
[kaggle.com/datasets/hassan06/nslkdd](https://www.kaggle.com/datasets/hassan06/nslkdd)
## 演示 — 模拟攻击
1. 以 `admin` 登录
2. 点击导航栏中的 **Simulate Attack**
3. 选择攻击类型:**DoS / Probe / R2L / U2R**
4. 观察仪表板检测、阻止、记录到区块链并发送告警
## 🛠 技术栈
| 工具 | 用途 |
|---|---|
| Python 3.11 | 核心语言 |
| scikit-learn | 随机森林 AI 模型 |
| Flask | Web 仪表板 |
| Ganache | 本地以太坊区块链 |
| Solidity | 智能合约(IPSLog.sol) |
| Truffle | 合约部署 |
| Web3.py | Python ↔ 区块链桥接 |
| Scapy | 实时数据包捕获 |
| SQLite | 用户数据库 |
| Chart.js | 实时流量图表 |
## 安全说明
以下文件通过 `.gitignore` 从本仓库排除,**切勿提交**:
| 文件 | 原因 |
|---|---|
| `alert_system.py` | 包含 Gmail 凭据 |
| `user_db.py` | 包含管理员邮箱 |
| `data/users.db` | 包含注册用户数据 |
| `ai/model.pkl` | 大型二进制文件 — 请本地重新生成 |
| `data/KDDTrain+.txt` | 大型数据集 — 请从 Kaggle 下载 |
| `blockchain/build/` | 生成的构建产物 — 运行 `truffle migrate` |
## 许可证
MIT 许可证 — 可自由使用、修改和分发。
*AIB Shield — AI + 区块链入侵防御系统*
标签:AI入侵检测, Ganache, IP黑名单, NSL-KDD数据集, Scapy, Scikit-learn, SHA-256, Solidity智能合约, SQLite用户认证, 主题切换, 亮色模式, 人工智能安全, 以太坊区块链, 仪表盘告警, 会话超时, 区块链审计, 去中心化日志, 合规性, 实时仪表盘, 实时威胁检测, 攻击模拟器, 暗色模式, 流量捕获, 浏览器推送通知, 混合安全系统, 登录通知, 网络入侵防御系统, 网络拓扑, 自动登出, 逆向工具, 邮件告警, 随机森林