Learnlife001/cyberrecon

GitHub: Learnlife001/cyberrecon

CyberRecon 是一个基于 FastAPI、Celery 和 Next.js 构建的全栈异步 Web 侦察与漏洞扫描平台,用于自动化执行授权范围内的目标信息收集与安全评估。

Stars: 0 | Forks: 0

# CyberRecon CyberRecon 是一个全栈异步侦察平台,专为安全学习和授权评估而设计。它结合了 Next.js 运维仪表板、FastAPI、持久化的 Redis/Celery 任务队列、PostgreSQL 持久化存储以及容器化部署。 ## 演示内容 - 自动化 DNS、WHOIS、IP、子域名、端口和技术发现 - 具有排队中、运行中、已完成和失败状态的持久化后台任务 - PostgreSQL 中的持久化扫描历史和结构化结果 - API key 认证、速率限制、CORS 控制和目标验证 - 防止扫描私有、环回、链路本地和保留网络 - Docker 化的 API、worker、PostgreSQL 和 Redis 服务 - 自动化的后端测试、前端检查、依赖审计和容器构建 ## 架构 ``` flowchart LR U[Analyst] --> UI[Next.js dashboard] UI -->|X-API-Key| API[FastAPI API] API --> DB[(PostgreSQL)] API --> Q[(Redis queue)] Q --> W[Celery worker] W --> R[Recon modules] R --> DNS[DNS / WHOIS / IP APIs] R --> NMAP[Nmap] W --> DB UI -->|poll job status| API ``` API 负责验证并将每个请求放入队列。一个独立的 Celery worker 执行侦察任务并将其结果存储在 PostgreSQL 中,因此 API 重启不会静默丢弃已排队的任务。仪表板会轮询 API 并渲染当前状态、情报面板和扫描历史。 ## 技术栈 | 层级 | 技术 | | --- | --- | | 前端 | Next.js, React, TypeScript, Tailwind CSS | | API | Python, FastAPI, SQLAlchemy, Uvicorn | | 任务 | Celery, Redis | | 数据 | PostgreSQL | | 侦察 | Nmap, DNS, WHOIS, IP 情报 | | 交付 | Docker Compose, GitHub Actions | ## 在本地运行生产级技术栈 前提条件:Docker Desktop 和 Docker Compose。 ``` git clone https://github.com/Learnlife001/cyberrecon.git cd cyberrecon Copy-Item .env.example .env ``` 为 `.env` 中的 `SCAN_API_KEY` 生成一个较长的随机值,然后启动服务: ``` docker compose up --build -d docker compose ps ``` API 可通过 `http://localhost:8000` 访问,交互式文档位于 `http://localhost:8000/docs`。单独配置前端: ``` Set-Location frontend Copy-Item .env.example .env.local npm install npm run dev ``` 打开 `http://localhost:3000`,在仪表板设置中输入相同的 API key,并提交一个授权的公共域名。 如果 8000 端口已被占用,请在 `.env` 中设置 `API_PORT`,例如 `API_PORT=8002`。 ## 配置 根目录下的 `.env.example` 记录了所有后端设置。重要的生产环境配置包括: | 变量 | 用途 | | --- | --- | | `DATABASE_URL` | PostgreSQL 连接字符串 | | `REDIS_URL` | Celery 使用的 Redis broker | | `TASK_QUEUE_MODE` | 使用 `celery` 进行持久化任务,或使用 `inprocess` 用于开发 | | `SCAN_API_KEY` | `X-API-Key` 请求头中所需的密钥 | | `ALLOWED_ORIGINS` | 逗号分隔的受信任前端源 | | `SCAN_RATE_LIMIT` | 每个速率窗口内的最大扫描提交次数 | | `NMAP_PATH` | 可选的 Nmap 可执行文件显式路径 | 密钥从环境中加载,严禁提交。`.env` 文件已被排除在 Git 和 Docker 构建上下文之外。 ## API 工作流 1. `POST /scan` 验证目标并返回任务标识符。 2. Redis 持久化保存任务,直到 Celery worker 接收。 3. `GET /results/{job_id}` 报告 `queued`、`running`、`completed` 或 `failed` 状态。 4. `GET /scans` 返回持久化的扫描历史。 5. `GET /health` 报告数据库健康状态和配置的队列模式。 受保护的端点需要: ``` X-API-Key: your-configured-key ``` ## 安全控制 - 域名在扫描前会进行标准化和解析。 - 解析到非公共地址范围的目标将被拒绝。 - 扫描端点需要 constant-time API key 验证。 - 扫描创建受客户端地址的速率限制。 - CORS 通过配置的源进行限制。 - 容器以非特权应用程序用户身份运行。 - CI 运行单元测试、Bandit、pip-audit、前端 lint/构建/审计以及 Docker 构建。 这些控制措施减少了意外误用;它们并不能将应用程序变成多租户的商业扫描服务。生产环境使用应添加集中式身份认证、分布式速率限制、审计日志、监控和显式授权记录。 ## 开发检查 ``` .\.venv\Scripts\python.exe -m unittest discover -s tests -v .\.venv\Scripts\python.exe -m compileall -q api_server.py worker.py modules Set-Location frontend npm run lint npm run build ``` ## 作品集亮点 - 设计了弹性的异步扫描工作流,而不是在请求处理程序中运行漫长的侦察任务。 - 在身份认证、公共目标验证、速率限制、密钥和容器权限周围实施了安全边界。 - 集成了响应式安全运维界面,具备持久化的情报和任务状态跟踪。 ## 作者 Chigozie Okuma — [GitHub](https://github.com/Learnlife001) · [LinkedIn](https://www.linkedin.com/in/cjokuma23/) · [作品集](https://learnlife-portfolio.vercel.app/)
标签:AV绕过, CTI, FastAPI, GitHub, Web侦察, 实时处理, 密码管理, 异步任务队列, 插件系统, 搜索引擎查询, 测试用例, 版权保护, 逆向工具