Fajarlaksana/secure-ops

GitHub: Fajarlaksana/secure-ops

SecureOps是一个基于Web的SOC仪表板,用于实时监控和检测登录攻击(暴力破解、凭证填充、密码喷洒等),帮助安全分析师快速发现和响应可疑登录活动。

Stars: 0 | Forks: 0


``` 🔐 S E C U R E O P S ``` ### *监控。检测。响应 — 安全运营中心的登录攻击监控仪表板。*
[![React](https://img.shields.io/badge/React-Vite-61DAFB?style=flat-square&logo=react&logoColor=white)](https://react.dev/) [![Node.js](https://img.shields.io/badge/Node.js-Express-339933?style=flat-square&logo=nodedotjs&logoColor=white)](https://nodejs.org/) [![Socket.io](https://img.shields.io/badge/Socket.io-Real--time-010101?style=flat-square&logo=socketdotio&logoColor=white)](https://socket.io/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-Database-336791?style=flat-square&logo=postgresql&logoColor=white)](https://www.postgresql.org/) [![Redis](https://img.shields.io/badge/Redis-Cache-DC382D?style=flat-square&logo=redis&logoColor=white)](https://redis.io/) [![Docker](https://img.shields.io/badge/Docker-Compose-2496ED?style=flat-square&logo=docker&logoColor=white)](https://www.docker.com/) [![Wazuh](https://img.shields.io/badge/Wazuh-SIEM-00A8E0?style=flat-square)](https://wazuh.com/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](LICENSE) [![Status](https://img.shields.io/badge/Status-MVP_In_Progress-7C3AED?style=flat-square)]() [![Contributions Welcome](https://img.shields.io/badge/Contributions-Welcome-orange?style=flat-square)]()

[🚀 在线演示](#) · [📖 文档](#-daftar-isi--table-of-contents) · [🐛 报告问题](mailto:fajarlaksana13@gmail.com) · [✨ 功能请求](mailto:fajarlaksana13@gmail.com)
## 📸 截图
## 📋 目录 - [关于项目](#-tentang-proyek--about) - [项目状态](#-status-proyek--project-status) - [技术栈](#-tech-stack) - [功能特性](#-fitur--features) - [架构设计](#-arsitektur--architecture) - [数据库结构](#-database-schema) - [快速开始](#-memulai--getting-started) - [项目结构](#-struktur-proyek--project-structure) - [API 接口](#-api-endpoints) - [路线图](#-roadmap) - [开发者笔记](#-catatan-developer--developer-notes) - [贡献指南](#-kontribusi--contributing) - [联系方式](#-kontak--contact) - [许可证](#-lisensi--license)
## 🌟 关于项目 **SecureOps** 是一个基于 Web 的 SOC 仪表板,专注于**登录攻击监控**。该系统旨在帮助安全分析师和管理员实时监控可疑登录活动,检测暴力破解攻击、凭证填充、密码喷洒以及来自各种日志源的可疑登录模式。
## 📋 项目状态 该项目目前处于 **MVP (v1.0)** 开发阶段。核心仪表板功能和检测引擎正在构建中。MVP 之后的开发重点是**与 PostgreSQL、Redis 和 Wazuh 的真实后端集成**。
| 组件 | 状态 | |---|---| | 身份验证和受保护路由 | ✅ 已完成 | | 仪表板主页面 + 统计卡片 | ✅ 已完成 | | 登录趋势图表 | ✅ 已完成 | | 严重程度环形图 | ✅ 已完成 | | 威胁地图 | ✅ 已完成 | | 告警管理页面 | ✅ 已完成 | | 实时 Socket.io 更新 | ✅ 已完成 | | 模拟数据生成器 | ✅ 已完成 | | 基础暴力破解检测 | ✅ 已完成 | | Wazuh 占位符集成 | ✅ 已完成 | | 调查面板 | ⏳ 待完成 | | PostgreSQL 持久化 | ⏳ 待完成 | | Redis 滑动窗口检测 | ⏳ 待完成 | | 真实 Wazuh 集成 | ⏳ 待完成 | | 自动 IP 封禁 | ⏳ 待完成 |
## 🛠 技术栈 | 层级 | 技术 | |---|---| | **前端** | [React](https://react.dev/) + [Vite](https://vitejs.dev/), [Tailwind CSS](https://tailwindcss.com/), [Recharts](https://recharts.org/), [Framer Motion](https://www.framer.com/motion/), [Socket.io-client](https://socket.io/) | | **后端** | [Node.js](https://nodejs.org/), [Express](https://expressjs.com/), [Socket.io](https://socket.io/) | | **数据库** | [PostgreSQL](https://www.postgresql.org/) | | **缓存/检测** | [Redis](https://redis.io/) (滑动窗口) | | **身份验证** | JWT | | **SIEM** | [Wazuh REST API](https://wazuh.com/) | | **部署** | [Docker](https://www.docker.com/) + Docker Compose | | **字体** | Geist Mono, JetBrains Mono | | **运行模式 (开发)** | 模拟模式 — 无需数据库 | | **运行模式 (生产)** | 真实模式 — PostgreSQL + Redis + Wazuh | **支持的登录源:** Linux 服务器 · Windows 终端 · 网站登录 · Wazuh 管理器 · Syslog 服务器
## ✨ 功能特性 ### 🏠 仪表板主页面 - 统计卡片:登录失败总数、登录成功数、高严重程度告警数、攻击者 IP 数 - 登录趋势图表(按小时/按天),支持日期范围筛选 - 严重程度环形图:低 · 中 · 高 · 严重 - 活跃威胁面板和威胁趋势 ### 🗺️ 威胁地图 - 攻击者 IP 在世界地图上的可视化展示 - 根据严重程度显示不同颜色的标记 - 弹出详情:IP、国家、城市、ISP、攻击类型、攻击次数 ### 🚨 告警管理 - 带有严重程度徽章和时间戳的告警列表 - 按状态和严重程度筛选 - 操作:**指派 · 调查 · 更新状态 · 忽略** ### 🔬 调查面板 - 告警详情和相关事件时间线 - 原始事件数据查看器 - 分析师评论区域 - 状态:`新 → 已确认 → 调查中 → 已解决 → 误报` ### 🤖 检测引擎 | 检测类型 | 描述 | |---|---| | **暴力破解** | 来自同一 IP 的重复登录失败 | | **凭证填充** | 一个 IP 尝试多个不同用户名 | | **密码喷洒** | 一个密码尝试多个账户 | | **不可能的旅行** | 短时间内来自不可能位置的登录 | | **已知恶意 IP** | 来自黑名单或 TOR 出口节点的 IP | ### 🛡️ 响应引擎 - 如果严重程度为**严重**则自动封禁 IP - 手动封禁/解封 IP - 实时更新封禁状态 ### 🔌 Wazuh 集成 - 连接到 Wazuh REST API 并轮询身份验证日志 - 同步代理列表并显示连接状态
## 🏛 架构设计 数据从登录源流向分析师视图的流程: ``` ┌─────────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ Login Sources │────▶│ Wazuh │────▶│ SecureOps Backend │ │ │ │ Manager │ │ Node.js + Express │ │ · Linux Server │ └──────────────┘ └──────────┬───────────┘ │ · Windows │ │ │ · Web Login │ ┌──────────▼───────────┐ │ · Syslog │ │ Detection Engine │ └─────────────────┘ │ PostgreSQL + Redis │ └──────────┬───────────┘ │ Socket.io ┌──────────▼───────────┐ │ React Dashboard │ │ Analyst View │ └──────────────────────┘ ```
## 🗄 数据库结构 ### 表 | 表 | 描述 | |---|---| | `login_events` | 来自 Wazuh、网站、syslog、终端的所有登录事件 | | `alerts` | 检测引擎生成的告警 | | `blocked_ips` | 响应引擎封禁的 IP | | `correlation_rules` | 检测阈值和规则 | ### 关系 ``` login_events ──▶ alerts (triggered by) alerts ──▶ blocked_ips (may block) correlation_rules ▶ alerts (creates) ```
## 🚀 快速开始 ### 前置条件 请确保已安装: - [Node.js](https://nodejs.org/) `>= 18.x` - [npm](https://www.npmjs.com/) 或 [yarn](https://yarnpkg.com/) - [Docker](https://www.docker.com/) & Docker Compose *(用于真实模式)* ### 安装 ``` # 克隆此仓库 git clone https://github.com/Fajarlaksana/secureops.git # 进入目录 cd secureops # 安装依赖项 npm install cd client && npm install && cd .. # 设置环境变量 cp .env.example .env # 以模拟模式运行(无需数据库) npm run dev:mock # 在浏览器中打开 ``` 在浏览器中打开 [http://localhost:5173](http://localhost:5173)。 ### 默认凭据 ``` Email : admin@secureops.local Password : admin123 ``` ### 环境变量 根据模板创建 `.env` 文件: ``` cp .env.example .env ``` ``` # 应用 NODE_ENV=development PORT=3001 JWT_SECRET=your-secret-key-here MOCK_MODE=true # 数据库(仅真实模式) DATABASE_URL=postgresql://user:password@localhost:5432/secureops # Redis(仅真实模式) REDIS_URL=redis://localhost:6379 # Wazuh(可选) WAZUH_API_URL=https://wazuh-manager:55000 WAZUH_USERNAME=wazuh-api-user WAZUH_PASSWORD=your-wazuh-password # 前端 VITE_API_URL=http://localhost:3001 VITE_SOCKET_URL=http://localhost:3001 ``` ### 脚本 ``` npm run dev:mock # Mock mode — tanpa DB / without DB npm run dev # Real mode — dengan DB & Wazuh / with DB & Wazuh npm run build # Production build npm run lint # Run ESLint ``` ### Docker 部署 ``` # 构建并启动所有服务 docker compose up -d # 停止服务 docker compose down # 查看日志 docker compose logs -f backend ```
## 📁 项目结构 ``` secureops/ │ ├── 📄 docker-compose.yml # Full stack deployment ├── 📄 .env.example # Environment variables template ├── 📄 package.json # Root scripts │ ├── 📂 client/ # React + Vite frontend │ └── src/ │ ├── 📂 components/ │ │ ├── dashboard/ # Stat cards, trend chart, donut chart │ │ ├── alerts/ # Alert list & management │ │ ├── map/ # Threat map (Leaflet / Recharts) │ │ ├── investigation/ # Investigation panel, timeline │ │ └── ui/ # Shared UI components │ ├── 📂 pages/ # Route pages │ ├── 📂 hooks/ # Custom React hooks │ ├── 📂 lib/ # Socket.io client, API helpers │ └── 📂 store/ # State management │ └── 📂 server/ # Node.js + Express backend ├── 📂 routes/ # API routes ├── 📂 controllers/ # Route controllers ├── 📂 services/ │ ├── detection/ # Brute force, stuffing, spray engine │ ├── wazuh/ # Wazuh API integration │ └── mock/ # Mock data generator ├── 📂 models/ # DB models ├── 📂 middleware/ # Auth, validation └── 📂 socket/ # Socket.io event handlers ```
## 🔌 API 接口 ### 身份验证 | 方法 | 端点 | 描述 | |---|---|---| | `POST` | `/api/auth/login` | 登录并获取 JWT 令牌 | | `POST` | `/api/auth/logout` | 登出 | | `GET` | `/api/auth/me` | 获取当前用户 | ### 仪表板 | 方法 | 端点 | 描述 | |---|---|---| | `GET` | `/api/stats` | 汇总统计 | | `GET` | `/api/events/trend` | 登录趋势图表数据 | | `GET` | `/api/events/severity` | 严重程度分布 | ### 告警 | 方法 | 端点 | 描述 | |---|---|---| | `GET` |api/alerts` | 列出所有告警 | | `GET` | `/api/alerts/:id` | 告警详情和时间线 | | `PATCH` | `/api/alerts/:id/status` | 更新告警状态 | | `POST` | `/api/alerts/:id/assign` | 指派给分析师 | | `POST` | `/api/alerts/:id/comment` | 添加评论 | ### 封禁 IP | 方法 | 端点 | 描述 | |---|---|---| | `GET` | `/api/blocked-ips` | 列出封禁的 IP | | `POST` | `/api/blocked-ips` | 封禁一个 IP | | `DELETE` | `/api/blocked-ips/:ip` | 解封一个 IP | ### Wazuh | 方法 | 端点 | 描述 | |---|---|---| | `GET` | `/api/wazuh/status` | 连接状态 | | `GET` | `/api/wazuh/agents` | 代理列表 |
## 🗺️ 路线图 ``` Phase 1 — MVP v1.0 ████████████████████ ⏳ In Progress Phase 2 — Real Backend ░░░░░░░░░░░░░░░░░░░░ 🔜 Planned Phase 3 — Enterprise ░░░░░░░░░░░░░░░░░░░░ 🔜 Future ``` ### ⏳ 阶段 1 — MVP v1.0 *(进行中)* - [x] 身份验证和受保护路由 - [x] 仪表板主页面和统计卡片 - [x] 登录趋势图表 - [x] 严重程度环形图 - [x] 威胁地图 - [x] 告警页面 - [x] 实时 Socket.io 更新 - [x] 模拟数据生成器 - [x] 基础暴力破解检测 - [x] Wazuh 占位符集成 - [ ] 带时间线和评论的调查面板 - [ ] 深色/浅色模式切换 ### 🔜 阶段 2 — 真实后端 *(计划中)* - [ ] 真实 Wazuh REST API 集成 - [ ] PostgreSQL 持久化 - [ ] 基于 Redis 的滑动窗口检测 - [ ] 自动 IP 封禁(严重程度为严重时) - [ ] 调查评论区域 - [ ] 规则编辑器 UI ### 🔜 阶段 3 — 企业版 *(未来)* - [ ] 多用户支持和 RBAC 权限 - [ ] 导出 PDF 报告 - [ ] 邮件/ Telegram/ Slack 通知 - [ ] 终端监控 - [ ] 恶意软件监控 - [ ] 防火墙日志监控
## 📌 开发者笔记 ### ⚠️ 当前模式状态 当前应用程序运行在**模拟模式**下——所有数据由模拟数据生成器自动生成,无需真实的数据库。这非常适合开发和演示,但存在以下限制: | 限制 | | |---|---| | ❌ 数据不持久化 | 重启后数据会重置 | | ❌ 检测引擎尚未完全真实 | 检测引擎尚未完全实现 | | ❌ Wazuh 尚未连接 | Wazuh 尚未连接 | | ❌ IP 封禁尚未激活 | IP 封禁尚未激活 | | ❌ 调查面板尚不可用 | 调查面板尚不可用 | ### 💡 推荐的解决方案 要在真实生产模式下运行 SecureOps,需要以下组件: | 组件 | 模拟模式 | 真实模式 | |---|---|---| | 数据持久化 | ❌ 内存中 | ✅ PostgreSQL | | 检测滑动窗口 | ❌ 简化版 | ✅ Redis | | 登录源 | ❌ 生成数据 | ✅ Wazuh / Syslog | | IP 封禁 | ❌ 模拟 | ✅ 活动防火墙 | | 部署 | ✅ `npm run dev:mock` | ✅ Docker Compose |
## 🤝 贡献指南 非常欢迎贡献!该项目对任何想要帮助开发 SecureOps 的人开放。 ``` # 1. 派生此仓库 # 2. 创建新分支 git checkout -b feature/nama-fitur # 3. 提交更改 git commit -m "feat: tambah fitur X" # 4. 推送到分支 git push origin feature/nama-fitur # 5. 打开 Pull Request ``` ### 贡献优先级 | 优先级 | 任务 | |---|---| | 🔴 **高** | 真实 Wazuh REST API 集成 | | 🔴 **高** | PostgreSQL + Prisma 持久化层 | | 🔴 **高** | Redis 滑动窗口检测引擎 | | 🟡 **中** | 调查面板(时间线 + 评论) | | 🟡 **中** | 自动 IP 封禁(严重程度为严重时) | | 🟡 **中** | 深色/浅色模式切换 | | 🟢 **低** | 导出 PDF 报告 | | 🟢 **低** | 邮件/ Telegram/ Slack 通知 |
## 📬 联系方式 如果您有兴趣继续、参与或支持这个项目,请随时联系:
**Fajar Laksana** 📧 [fajarlaksana13@gmail.com](mailto:fajarlaksana13@gmail.com) 🔗 [github.com/Fajarlaksana](https://github.com/Fajarlaksana)

使用 🔐 为安全运营中心构建 *SecureOps — 监控。检测。响应。*
标签:AMSI绕过, Docker, Express, GNU通用公共许可证, MITM代理, Node.js, PB级数据处理, PostgreSQL, React, Redis, Socket.io, SOC安全运营中心, StruQ, Syscalls, Wazuh, Web安全, 免杀技术, 凭证填充检测, 后端开发, 威胁检测, 安全仪表盘, 安全运维, 安全防御评估, 实时数据处理, 密码喷洒检测, 搜索引擎查询, 暴力破解检测, 测试用例, 登录攻击监控, 红队行动, 蓝队分析, 请求拦截