Montimage/cti4bc-backend
GitHub: Montimage/cti4bc-backend
面向关键基础设施的网络威胁情报共享平台后端,整合 MISP 实现情报的采集、富化与跨组织互操作。
Stars: 0 | Forks: 0
CTI4BC (CTI for Business Continuity)
## 简介
为 Dynabic 组件收集的用于处理信息共享 (IS) 和网络威胁情报 (CTI) 平台的核心功能。
本项目为所有项目合作伙伴选定的 IS 是 [MISP](https://www.misp-project.org/),这样我们可以共享/优化/测试对每个人都有用的功能,从而在此过程中节省时间。
CTI4BC 是 [Dynabic (欧盟 Horizon Europe) 项目](https://dynabic.eu/)的一个组件。
## 安装
如需独立使用核心库:
```
# 下载或克隆 repo
git clone https://github.com/Montimage/cti4bc-backend
# 作为 *development* package 安装
# 这将安装 aiohttp 和 pytest packages
pip install -e "./cti4bc-backend/src"
# 可选,创建 virtual env
# 可选,使用 $PYTHONPATH 安装
```
## 配置
- 方案 a - 使用环境变量。*这应该是核心库贡献者的首选方式*。该库需要 url 和 misp api key。推荐的做法是将它们添加到环境变量 `MISP_URL` 和 `MISP_TOKEN` 中(在 /etc/environment 或 .env 文件或 activate 文件等中),但用户可以自行决定是在环境中设置这些凭证,还是在调用 `misp.configure(url, key)` 方法时传入。对于与风险相关的功能,请设置 `RISK_URL` 和 `RISK_TOKEN`。
- 方案 b - 使用显式的 `configure(url,token)` 方法。*这应该是核心库外部使用者的首选方式*。在启动应用程序时,我们可以通过在某些模块上调用 configure() 方法来设置/覆盖端点。
配置参数示例:
```
MISP_TOKEN="kajeucn09876njeudnenSAFBXxs"
MISP_URL="https://misp.example.com"
RISK_URL="https://risk.example.com"
RISK_TOKEN='82jeNajeucneDsxzyq'
```
## 用法
示例(更多示例请参见 tests 文件夹):
```
import asyncio
import cti4bc.misp as misp
# (或者) from cti4bc import misp
async def main():
try:
# Optional
# misp.configure(url,api_key)
events = await misp.event.list()
id = events[0]['id']
event = await misp.event.get(id)
print(event)
except Exception as e:
# handle e.code, e.status
print(e)
asyncio.run(main())
```
### VSCODE 使用提示(仅适用于非默认 VSCODE)
最简单的方法是将该库作为开发包安装(如上文所述),并从安装文件夹启动 VSCODE。运行/调试按钮和自动补全功能应该可以正常工作。
另外,采用其他开发路径也有其原因。例如,有人希望将项目作为子文件夹添加(不在 VSCODE 工作区中,也不作为根文件夹),有人希望将此项目和其他包作为文件夹处理而不通过 pip 安装,或者出于其他任何原因。在这些情况下,VSCODE 将无法找到该包,因此在输入时 `Debug` 或 `Autocomplete (intellisense)` 功能将不可用。额外的配置步骤如下:
- 对于运行/调试:为了在运行/调试/或终端中找到模块,请将 PYTHONPATH 添加到环境中。例如,如果使用的是虚拟环境,请将其添加到 `.venv/bin/activate` 中。然后重启 VSCODE 或打开一个新的终端,或者重新激活虚拟环境以使更改生效。PYTHONPATH 类似于 Java 中的 classpath,有了它就可以直接找到并执行代码,无需经过安装步骤。
```
PYTHONPATH="$PYTHONPATH:/YOUR/DYNABIC/FOLDER/cti4bc/src"
export PYTHONPATH
```
- 对于自动补全/intellisense:将以下属性添加到 settings.json(位于用户、工作区或文件夹中)中:
```
"python.analysis.extraPaths": [
"/YOUR/DYNABIC/FOLDER/cti4bc/src"
]
```
## 库中的模块
### skeletons
具有默认值的数据类型。这样每个人都可以在此放置一个精心设计的骨架,其他开发人员无需了解该对象,只需获取副本并更新 1 到 2 个字段即可。既然 Python 不是一种编译型、严格类型的语言,那就让我们优先考虑生产力。使用简单的对象,当确实需要复杂对象时,再将其放入 skeletons 列表中。
### misp
与 MISP 服务器交互的最小操作集合。请参阅您的 MISP 实例中的 `API` 导航选项卡(注意:此模块并不是要成为一个自动生成的、包含所有服务和模型的 OpenAPI。我们会花更多时间处理 Dynabic 数据模型……)。
## 作为 Django 应用程序安装
1. 前提条件:
- Python 3.11 或更高版本
- 用于虚拟环境管理的 pip 和 venv
- PostgreSQL 13+(已配置且可访问)
2. 克隆仓库:
```
git clone git@github.com:Montimage/cti4bc-backend.git
cd cti4bc-backend
```
3. 创建并激活虚拟环境:
```
python3 -m venv .venv
source .venv/bin/activate
```
4. 安装依赖项:
```
pip install -r requirements.txt
```
5. 创建包含所需配置变量的 .env 环境配置文件:
```
# -------------------------------
# Database 配置 (PostgreSQL)
# -------------------------------
DB_NAME=cti4bc_db # Name of the PostgreSQL database
DB_USER=cti4bc_user # Database username
DB_PASSWORD=change-me # Database password
DB_HOST=cti4bc-postgres-service # Hostname or service name of the database
DB_PORT=5432 # Database port (default for PostgreSQL)
# -------------------------------
# Kafka 配置
# -------------------------------
KAFKA_SERVER=kafka-broker:9092 # Kafka bootstrap server address
KAFKA_USERNAME=kafka_user # Username for Kafka authentication (if required)
KAFKA_PASSWORD=kafka_password # Password for Kafka authentication (if required)
# -------------------------------
# Kafka Topics
# -------------------------------
CTI_REMOTE_TOPIC= CTI4BC.events # Topic for sharing CTI events with other organizations
RISK_TOPIC=RISK4BC.riskProfile # Topic for receiving risk assessment information from RISK4BC
```
6. 执行数据库迁移并创建管理员用户:
```
python manage.py migrate
python manage.py createsuperuser
```
7. 运行开发服务器:
```
python manage.py runserver
```
## 部署
CTI4BC 后端可以作为 Docker 容器进行构建和部署。
1. 构建 Docker 镜像
- 标准构建:
```
docker build -t cti4bc-backend .
```
- 适用于 Apple Silicon (M1/M2) 或多平台构建:
```
docker buildx build \
--no-cache \
--platform linux/amd64 \
--build-arg REACT_APP_API_URL= https://your-api-url.com \
-t cti4bc-backend \
--load .
```
## 致谢
*本项目已获得欧盟 Horizon Europe 研究与创新项目第 101070455 号资助协议的资金支持。*
Dynabic (欧盟 Horizon Europe) 项目](https://dynabic.eu/)标签:Burp项目解析, Django, Python, 后端开发, 威胁情报, 开发者工具, 数据共享, 无后门, 测试用例, 网络安全, 请求拦截, 逆向工具, 隐私保护