Demos6668/CyNews

GitHub: Demos6668/CyNews

一个聚合 50+ 威胁情报源的网络安全态势感知平台,提供实时仪表板、CVE 追踪和威胁情报可视化。

Stars: 0 | Forks: 0

# CyNews **网络安全威胁情报与新闻聚合平台** 一个实时网络安全威胁情报仪表板,聚合来自 50 多个来源的新闻、公告和威胁数据。采用深色、专业的 SOC 风格界面构建。 ## 功能特性 - **实时仪表板** - 威胁概览,包含威胁等级仪表盘、统计卡片、严重性分布图表和实时活动流 - **50+ 订阅源** - 聚合来自 The Hacker News、BleepingComputer、Dark Reading、Krebs on Security、SANS ISC、CISA KEV 等数十个来源的信息 - **CERT-In 公告** - 印度 CERT 公告专用页面,支持按严重性筛选 - **威胁情报** - 威胁行为体档案、TTPs (MITRE ATT&CK)、IOC、恶意软件家族和攻击活动追踪 - **CVE 公告** - CVSS 评分、受影响产品、供应商信息、补丁状态和变通方案 - **印度范围检测** - AI 驱动的印度相关威胁与全球威胁分类,并检测涉及的邦/部门 - **网络相关性过滤** - 自动从订阅源中过滤非网络安全内容 - **导出与邮件** - 将公告导出为 HTML/CSV,使用可自定义模板生成邮件报告 - **WebSocket 实时更新** - 新威胁到达时的实时推送通知 - **RSS 订阅输出** - `/api/news/rss` 端点用于与其他工具集成 - **多工作区支持** - 跨工作区的基于产品的威胁匹配 - **全局搜索** - 同时搜索所有新闻、威胁和公告 ## 技术栈 | 层级 | 技术 | |-------|-----------| | **Frontend** | React 19, Vite 7, TypeScript 5.9 | | **Styling** | Tailwind CSS v4, Radix UI, Framer Motion | | **State** | TanStack React Query, Zustand | | **Backend** | Express 5, Node.js 24 | | **Database** | PostgreSQL, Drizzle ORM | | **Validation** | Zod v4, drizzle-zod | | **API Codegen** | Orval (from OpenAPI spec) | | **Routing** | Wouter | | **Security** | Helmet, express-rate-limit, CORS, input sanitization | | **Monorepo** | pnpm workspaces | ## 项目结构 ``` CyNews/ ├── artifacts/ │ ├── api-server/ # Express API server (port 8080) │ └── cyfy-news/ # React + Vite frontend ├── lib/ │ ├── api-spec/ # OpenAPI spec + Orval codegen │ ├── api-client-react/ # Generated React Query hooks │ ├── api-zod/ # Generated Zod schemas │ ├── db/ # Drizzle ORM schema + connection │ ├── feed-aggregator/ # RSS/API feed fetcher │ ├── india-detector/ # India scope classifier │ └── cyber-relevance-detector/ # Cyber content filter ├── scripts/ # Seed, reclassify, live-feed CLI ├── docker-compose.yml ├── Dockerfile └── pnpm-workspace.yaml ``` ## 快速开始 ### 前置条件 - [Node.js 24+](https://nodejs.org/) - [pnpm 9+](https://pnpm.io/installation) - [Docker](https://docs.docker.com/get-docker/) (用于 PostgreSQL) ### 一键设置 ``` git clone https://github.com/Demos6668/CyNews.git cd CyNews cp .env.example .env pnpm run setup pnpm dev ``` 此命令将安装依赖、在 Docker 中启动 PostgreSQL、推送数据库架构,并启动 API 服务器 (`:8080`) 和前端 (`:5173`)。 ### 手动设置(分步) ``` # 1. 克隆并安装 git clone https://github.com/Demos6668/CyNews.git cd CyNews pnpm install # 2. 配置环境 cp .env.example .env # 默认配置开箱即用 — 仅在需要时编辑 # 3. 启动 PostgreSQL pnpm run db:up # 4. 推送数据库 schema pnpm run db:push:force # 5. (可选) 填充演示数据 pnpm --filter @workspace/scripts run seed # 6. 启动开发服务器 (API + frontend) pnpm dev ``` 在浏览器中打开 http://localhost:5173。API 服务器运行在 http://localhost:8080。 ### Docker (生产环境) ``` cp .env.example .env # 编辑 POSTGRES_PASSWORD 为生产环境设置强密码 docker compose up -d ``` 这将启动 PostgreSQL、构建并运行 API 服务器,并在容器中提供前端服务。 ### 实时订阅源 API 服务器每 15 分钟自动运行订阅源调度程序。要手动触发刷新: ``` curl -X POST http://localhost:8080/api/scheduler/refresh ``` 或者运行独立的订阅源脚本: ``` # 从所有来源一次性抓取 pnpm --filter @workspace/scripts run live-feed # 每 15 分钟持续更新 pnpm --filter @workspace/scripts run live-feed:watch ``` ### 故障排除 | 问题 | 解决方案 | |---------|----------| | `database "cynews" does not exist` | 先运行 `pnpm run db:up` — Docker 会自动创建数据库 | | 端口 5432 上出现 `connection refused` | 确保 Docker 正在运行:`docker ps` 应显示 `cynews-db-1` 容器 | | 端口 5432 已被占用 | 本地 PostgreSQL 正在运行 — 停止它或在 `.env` 和 `docker-compose.yml` 中更改端口 | | 架构推送失败 | 在全新数据库上使用 `pnpm run db:push:force` 进行干净推送 | | API 返回 500 错误 | 检查数据库是否包含表:运行 `pnpm run db:push:force` | ## API 端点 | 方法 | 路径 | 描述 | |--------|------|-------------| | GET | `/api/healthz` | 健康检查 | | GET | `/api/dashboard/stats` | 仪表板统计 | | GET | `/api/news` | 带筛选的分页新闻 | | GET | `/api/news/:id` | 新闻详情 | | GET | `/api/news/rss` | RSS 订阅输出 | | GET | `/api/news/bookmarked` | 已收藏项目 | | POST | `/api/news/:id/bookmark` | 切换收藏状态 | | GET | `/api/advisories` | 分页公告 | | GET | `/api/advisories/cert-in` | CERT-In 公告 | | GET | `/api/advisories/:id` | 公告详情 | | GET | `/api/threats` | 分页威胁情报 | | GET | `/api/threats/:id` | 威胁详情 | | GET | `/api/threats/export` | 导出为 CSV/JSON | | GET | `/api/search?q=` | 全局搜索 | | GET | `/api/export/templates` | 邮件模板 | | POST | `/api/export/preview` | 预览邮件导出 | | POST | `/api/export/email` | 生成邮件导出 | | WS | `/ws` | 实时更新 | ## 订阅来源 **新闻:** The Hacker News, BleepingComputer, Dark Reading, Krebs on Security, SecurityWeek, The Record, CyberScoop, SC Magazine, Infosecurity Magazine 等 **威胁情报:** Cisco Talos, Unit 42, Mandiant, Microsoft Security, Google TAG, CrowdStrike, SentinelOne, Recorded Future, Proofpoint, Kaspersky SecureList 等 **公告:** CISA KEV, CERT-In, NVD, US-CERT **威胁源:** URLhaus, ThreatFox, Ransomware.live, Feodo Tracker ## 关键命令 ``` pnpm dev # Start API + frontend dev servers pnpm run setup # Full setup (install + DB + schema) pnpm run db:up # Start PostgreSQL container pnpm run db:push # Push DB schema (interactive) pnpm run db:push:force # Push DB schema (no prompts) pnpm run dev:api # Start API server only pnpm run dev:frontend # Start frontend only pnpm run typecheck # Full typecheck pnpm run build # Build all packages # 较少见 pnpm --filter @workspace/api-spec run codegen # Regenerate API types pnpm --filter @workspace/scripts run seed # Seed demo data pnpm --filter @workspace/scripts run live-feed # Fetch real data ``` ## 许可证 MIT
标签:ATT&CK框架, CERT advisories, CVE追踪, CVSS评分, DAST, Drizzle ORM, Express, GNU通用公共许可证, GPT, HTTP/HTTPS抓包, IoC, MITM代理, Node.js, PostgreSQL, React, RSS订阅, Syscalls, Tailwind CSS, TTPs, TypeScript, Vite, WebSocket, Zustand, 仪表盘, 依赖分析, 入侵指标, 印度网络安全, 威胁情报, 威胁行为者, 安全插件, 安全数据可视化, 安全运营中心, 安全预警, 开发者工具, 态势感知, 恶意软件分析, 情报平台, 攻击战术与技术, 新闻聚合, 测试用例, 漏洞管理, 网络安全, 网络映射, 自动化攻击, 请求拦截, 隐私保护