CodeFortifyCloud/scanops
GitHub: CodeFortifyCloud/scanops
ScanOps 是一个围绕 Nmap 扫描工作流构建的内部授权网络安全运营平台,提供多用户协作、角色权限管控和资产扫描管理能力。
Stars: 0 | Forks: 1
# ScanOps
ScanOps 是一个内部授权使用的网络/安全运营平台,使用 Django MVT、HTML 模板和 HTMX 构建。
## 技术栈
- Django 4.2 (MVT)
- HTMX + 服务器渲染模板
- Docker 中的 Gunicorn
- Docker 中的 PostgreSQL (默认运行时数据库)
## 快速 Docker 部署 (本地或 VPS)
1. 确保已安装 Docker Engine + Docker Compose 插件。
2. 创建一次运行时环境文件:
```
cp .env.example .env
```
3. 至少更新以下内容:
- `JTRO_SECRET_KEY`
- `SCANOPS_DB_PASSWORD`
- `JTRO_ALLOWED_HOSTS` (用于 VPS/公共主机名)
4. 部署:
```
./scripts/deploy_and_run.sh up
```
访问:
- `http://127.0.0.1:8008/login/`
- `http://0.0.0.0:8008/login/`
## Docker 操作
```
./scripts/deploy_and_run.sh ps
./scripts/deploy_and_run.sh logs
./scripts/deploy_and_run.sh restart
./scripts/deploy_and_run.sh down
```
## 数据库迁移辅助工具
从当前配置的本地数据库 (`.env`) 创建备份:
```
./scripts/deploy_and_run.sh backup-local-db
```
将 SQL 备份恢复到 Docker PostgreSQL 中:
```
./scripts/deploy_and_run.sh restore-db --backup-file dbbackup/migration/.sql
```
您也可以在启动时自动恢复:
```
./scripts/deploy_and_run.sh up --restore-db --backup-file dbbackup/migration/.sql
```
## 本地非 Docker 开发 (可选)
您仍然可以直接运行 Django:
```
python manage.py migrate
python manage.py runserver 0.0.0.0:8008
```
## 文档
- Docker 工作流程:`DOCKER_README.md`
- 备份计划程序和恢复说明:`BACKUP_README.md`
## 账户管理
ScanOps 包含完整的账户自助服务身份验证流程:
- 注册:`/register/`
- 注册成功:`/register/success/`
- 忘记密码:`/password-reset/`
- 密码重置邮件已发送:`/password-reset/done/`
- 确认密码重置:`/reset///`
- 密码重置完成:`/reset/done/`
- 修改密码 (已登录):`/password-change/`
- 密码修改完成:`/password-change/done/`
### 注册策略
注册行为由环境变量驱动:
- `SCANOPS_SELF_REGISTRATION_ENABLED` (默认值: `True`)
- `SCANOPS_SELF_REGISTRATION_REQUIRES_APPROVAL` (默认值: `False`)
- `SCANOPS_SELF_REGISTRATION_DEFAULT_ROLE` (默认值: `viewer`)
默认情况下,新用户使用最低权限角色 `viewer` 创建。
### 邮件后端配置
密码重置使用 Django 的安全令牌流程,并通过环境变量发送邮件:
- `EMAIL_BACKEND`
- `EMAIL_HOST`
- `EMAIL_PORT`
- `EMAIL_USE_TLS`
- `EMAIL_USE_SSL`
- `EMAIL_HOST_USER`
- `EMAIL_HOST_PASSWORD`
- `DEFAULT_FROM_EMAIL`
对于本地开发,请使用:
- `EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend`
使用控制台后端时,重置链接将打印在应用程序日志/终端输出中。
## 阅读文档页面
ScanOps 包含一个公开的产品文档页面:
- URL:`/documentation/`
- 公开访问:无需登录即可从登录页面通过 **阅读文档** 访问
- 应用内访问:已认证用户可通过侧边栏的 **阅读文档** 访问
该页面记录了核心模块和安全的操作工作流程,而不会暴露敏感的运行时数据。
## 反馈渠道
ScanOps 包含两个面向用户和访客的反馈收集途径:
- 建议:`/feedback/suggestions/`
- 问题:`/feedback/issues/`
建议用于收集改进意见。问题用于收集操作缺陷,并可以包含可选的证据附件 (`jpg`, `jpeg`, `png`, `webp`, `mp4`, `webm`, `mov`,最大 `25MB`)。
## 公开的新扫描访问
`新扫描` 页面 (`/scans/new/`) 可通过两种模式访问:
- 访客 (未登录):只能在公开安全的预览模式下打开该页面。提交操作被阻止,并且会提示他们登录/注册。
- 已认证用户 (所有角色):可以使用范围限定为用户的目标和配置文件创建扫描请求。
后端对目标/配置文件的选择强制执行所有权过滤,并阻止匿名的 POST 提交。
## 用户所有的数据隔离
ScanOps 对操作数据强制执行后端所有权过滤。
- 范围限定角色 (`analyst`, `operator`, `viewer`) 只能访问自己的记录。
- 全局角色 (`super_admin`, `security_admin`) 可以访问所有操作记录。
- 隔离应用于列表视图、详情视图、POST 操作、HTMX 部分端点和表单下拉查询集。
所有权通过以下文件中的集中式可见性辅助工具进行评估:
- `apps/ops/services/data_visibility_service.py`
### 公开计划访问
计划模块支持公开安全访问:
- 访客 (未登录):只能以只读模式浏览公开计划 (`is_public=True`)。
- 已认证用户:只能创建/管理自己的计划,并且可以查看公开计划。
- Super Admin / Security Admin:可以查看和管理所有计划。
敏感的计划详情在公开模式下受到限制 (目标/配置文件详情被隐藏)。
### 所有权回填
如果遗留数据行缺少所有权引用,请运行:
```
./.venv/bin/python manage.py backfill_user_ownership
```
可选的空运行 (dry run):
```
./.venv/bin/python manage.py backfill_user_ownership --dry-run
```
## 安全提示
ScanOps 仅适用于内部授权操作。请勿使用本项目扫描未经授权的系统或网络。
## 许可证
本项目基于 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
标签:AES-256, DevSecOps, Django, Django 4.2, Docker, Docker Compose, Gunicorn, HTMX, NIDS, Nmap, PB级数据处理, PostgreSQL, Python, SEO, Web安全, 上游代理, 云存储安全, 企业安全, 内部授权扫描, 后端开发, 多模态安全, 安全合规, 安全运维, 安全防御评估, 容器化, 容器部署, 开源, 批量查询, 插件系统, 数据库备份, 数据统计, 无后门, 无线安全, 测试用例, 漏洞评估, 用户认证, 端口扫描, 网络代理, 网络安全, 网络扫描, 网络资产管理, 蓝队分析, 虚拟驱动器, 请求拦截, 资产安全, 资产探测, 逆向工具, 隐私保护