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, 仪表盘, 依赖分析, 入侵指标, 印度网络安全, 威胁情报, 威胁行为者, 安全插件, 安全数据可视化, 安全运营中心, 安全预警, 开发者工具, 态势感知, 恶意软件分析, 情报平台, 攻击战术与技术, 新闻聚合, 测试用例, 漏洞管理, 网络安全, 网络映射, 自动化攻击, 请求拦截, 隐私保护