tum-esi/CyberSecDome-DAIR
GitHub: tum-esi/CyberSecDome-DAIR
基于强化学习的网络安全事件动态响应 API,根据入侵数据智能推荐处置策略并支持通过反馈持续优化模型。
Stars: 0 | Forks: 0
# DAIR REST API
本项目使用 Flask 实现了 DAIR 的 REST API。该系统利用 Q-learning(或 Deep Q-Learning)来为网络入侵提供应对建议。
## 目录
- 安装
- API 使用
- 端点
## 安装
1. 克隆仓库:
git clone https://github.com/tum-esi/CyberSecDome-DAIR.git
cd CyberSecDome-DAIR
2. 创建新的 Python 环境:
python -m venv .dairenv
3. 激活虚拟环境:
source .dairenv/bin/activate
仅适用于 Q-Learning:
4. a) 安装必要的包:
pip install -r requirements_QLearning.txt
仅适用于 Deep Q-Learning:
4. b) 安装必要的包:
pip install -r requirements_dqn.txt
## DAIR API
### 使用方法
运行 DAIR:
```
python dair_api.py
```
API 将通过您的 IP 地址(自动识别)的 `1234` 端口提供访问。
### 端点
### `POST /receive_playbook`
接收入侵数据并返回建议的响应。
* **URL**:/receive_playbook
* **方法**:POST
* **请求体**:
```
{
"incident_id": 123,
"source_ip_address": "192.168.1.1",
"target_ip_address": "192.168.1.1",
"source_port": 8080,
"target_port": 50,
"transport_protocol": ["TCP", "UDP"],
"app_protocol": ["HTTP", "FTP"],
"attack_type": "DOS",
"severity": 5
}
```
* **响应**:
```
{
"responses": [["Do Nothing"], ["Block IP", "Alert Admin"]]
}
```
### `POST /give_feedback`
接收关于建议响应的反馈,以更新 Q-learning 模型。
* **URL**:/give_feedback
* **方法**:POST
* **请求体**:
```
{
"incident_id": 123,
"feedback": [1, -1]
}
```
* **响应**:HTTP 返回代码(如果成功则为 `200`)
### `GET /get_ai_state`
获取 Q-Table 的序列化状态。
* **URL**:/get_ai_state
* **方法**:GET
* **响应**:(MIME 类型 `application/octet-stream`)
```
\x80\x04\x95\xd2\x00\x00\x00\x00\x00\x00\x00}\x94(K\x01\x85\x94KP\x85\x94K\x00\x85\x94K\x00\x85\x94K\x00K\x06t\x94\x8c\x15numpy.core.multiarray\x94\x8c\x0c_reconstruct\x94\x93\x94\x8c\x05numpy\x94\x8c\x07ndarray\x94\x93\x94K\x00\x85\x94C\x01b\x94\x87\x94R\x94(K\x01K\x06\x85\x94h\t\x8c\x05dtype\x94\x93\x94\x8c\x02f8\x94\x89\x88\x87\x94R\x94(K\x03\x8c\x01<\x94NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00t\x94b\x89C0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x99\x99\x99\x99\x99\xb9\xbfR\xb8\x1e\x85\xebQ\xc8\xbf\x94t\x94bs.
```
### `POST /send_ai_state`
发送 Q-Table 的序列化状态。
* **URL**:/send_ai_state
* **方法**:POST
* **请求体**:
```
\x80\x04\x95\xd2\x00\x00\x00\x00\x00\x00\x00}\x94(K\x01\x85\x94KP\x85\x94K\x00\x85\x94K\x00\x85\x94K\x00K\x06t\x94\x8c\x15numpy.core.multiarray\x94\x8c\x0c_reconstruct\x94\x93\x94\x8c\x05numpy\x94\x8c\x07ndarray\x94\x93\x94K\x00\x85\x94C\x01b\x94\x87\x94R\x94(K\x01K\x06\x85\x94h\t\x8c\x05dtype\x94\x93\x94\x8c\x02f8\x94\x89\x88\x87\x94R\x94(K\x03\x8c\x01<\x94NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00t\x94b\x89C0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x99\x99\x99\x99\x99\xb9\xbfR\xb8\x1e\x85\xebQ\xc8\xbf\x94t\x94bs.
```
* **响应**:HTTP 返回代码(如果成功则为 `200`)
本项目获得了欧盟资助项目 CyberSecDome(协议编号:101120779)的资金支持。详情:https://cybersecdome.eu/
标签:DNS 反向解析, Flask, Mr. Robot, Python, REST API, 库, 应急响应, 强化学习, 无后门, 网络安全, 逆向工具, 配置错误, 隐私保护