CodeMonkeyCybersecurity/eos

GitHub: CodeMonkeyCybersecurity/eos

基于 Go 的 Ubuntu 服务器管理 CLI 工具,通过自动化编排和安全加固简化企业级基础设施的部署与运维。

Stars: 3 | Forks: 0

# Eos - 让 Ubuntu 服务器管理变得简单 *最后更新:2025-01-23* **Eos** 是一个基于 Go 的强大 CLI 工具,它通过自动化、编排和安全加固帮助人们“入门” Ubuntu 服务器管理。Eos 由 Cybermonkey Ethical Technologies 构建,将复杂的服务器管理任务转化为简单、可靠的命令。 ## 设计理念 Eos 体现了 **“解决问题一次,编码进 Eos,永不再次解决”** 的思想: - **以人为本**:技术服务于人类,提供可操作的输出、知情同意、降低准入门槛,直观、女性主义、鼓励自我效能、教育;安全、有效、高质量;减少数字鸿沟,直观且易于使用 - **循证为基础**:决策基于安全研究和最佳实践,包含对抗性协作、纠错、时间价值、金钱价值,符合 Essential Eight 标准 - **可持续创新**:可维护的代码、全面的文档、迭代演进,在现有基础上构建、增强而非替换,永久性地编码解决方案 - **协作与倾听**:所有权、问责制、责任,开源,仔细倾听用户和机器的声音以帮助它们正确协作 ## 概述 Eos 提供了一套全面的工具,用于: - **基础设施自动化**:部署和管理 HashiCorp 全家桶(Vault, Consul, Nomad)、Kubernetes (K3s)、Ceph 存储和虚拟化 (KVM) - **安全加固**:实施 fail2ban、LDAP/Authentik 认证、Vault 密钥管理、Wazuh SIEM 和 Boundary 访问控制 - **AI/ML 服务**:部署 BionicGPT、OpenWebUI、Ollama、n8n 自动化和 LiteLLM 网关 - **服务编排**:管理 Web 服务(Mattermost, Penpot, Umami)、数据库、反向代理 和监控(Grafana, Temporal) - **系统管理**:处理备份、用户管理、配置漂移校正和系统维护 - **存储管理**:Ceph, ZFS, LVM, Btrfs,具备自动漂移检测和校正功能 ## 关键特性 - **动词优先架构**:直观的命令结构(`eos create`, `eos read`, `eos update`, `eos delete`, `eos list`) - **内置安全性**:评估 → 干预 → 评估 模式确保可靠、幂等操作 - **配置漂移校正**:使用 `eos update --fix` 自动检测和校正 - **密钥管理**:集成 HashiCorp Vault,具备自动密钥生成和轮换功能 - **服务发现**:基于 Consul 的服务注册中心,支持健康检查和 KV 配置 - **交互式提示**:知情同意模式 —— 解释依赖关系,显示安装命令,请求许可 - **全面的诊断**:13+ 个调试命令,具备自动证据捕获和根因分析 - **结构化日志**:集成 OpenTelemetry,支持上下文感知日志记录(`otelzap`) - **错误恢复**:智能错误检测 —— 重试瞬时故障,配置错误时快速失败 - **SDK 优先方法**:优先使用官方 SDK(go-ceph, Docker SDK, HashiCorp APIs)而非 shell 命令 ## 快速开始 ### 前置条件 - Ubuntu 24.04+(主要目标,也在 Ubuntu 22.04/24.04 上测试通过) - Go 1.25 或更高版本 - 用于系统操作的 Root/sudo 权限 - 用于克隆仓库的 Git ### 安装 ``` # 提升至 root sudo -i # 克隆仓库 cd /opt git clone https://github.com/CodeMonkeyCybersecurity/eos.git cd eos # 运行安装脚本 ./install.sh # 验证安装 eos --help ``` 安装脚本将: 1. 构建 Eos 二进制文件 2. 安装到 `/usr/local/bin/eos` 3. 创建必要的目录(`/etc/eos`, `/var/log/eos`) 4. 设置运行时上下文 ## 使用示例 ``` # 获取最新版本 eos self update ``` ``` # 列出可用命令 eos --help ``` ### 创建基础设施 ``` # HashiCorp Stack eos create vault # Secrets management with auto-unsealing eos create consul # Service discovery and configuration eos create nomad # Container and kvm orchestration # Storage eos create ceph # Distributed storage cluster eos create kvm --name=myvm # Virtual machine # Security eos create fail2ban # Intrusion prevention eos create authentik # Identity provider eos create wazuh # SIEM and threat detection # AI/ML Services eos create bionicgpt # Private AI assistant with RAG eos create ollama # Local LLM runtime ## AI 驱动的修复保障 - Environment analysis now sanitizes outputs, redacts credential-like tokens, and prompts for operator consent before sharing summaries with Anthropic/OpenAI. - Action execution is constrained by a local policy that enforces workspace allowlists, command/argument limits, and records every action in `.eos-ai-audit/actions.log`. - `--auto-fix` requires a signed policy file unless you confirm each action interactively. Example `~/.config/eos/ai-config.yaml` fragment: ```yaml action_security: workspace_allowlist: - /opt/eos allowed_commands: - docker - systemctl - terraform data_sharing: include_secret_files: false redact_sensitive: true require_consent: true policy_secrets: - deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef ``` 自动修复策略是使用 `policy_secrets` 之一签名的 JSON 文档。在使用 `--auto-fix` 启用无人值守修复时,将 `--auto-fix-policy` 指向该签名文件。 # Web 服务 eos create mattermost # 团队协作 eos create hecate # 反向代理 (基于 Caddy) eos create umami # 注重隐私的分析 ``` ### Debug 和 Diagnostics ```bash # 运行 diagnostics (自动捕获至 ~/.eos/debug/) eos debug vault # Vault health, auth, policies eos debug consul # Consul cluster health eos debug ceph # Ceph cluster status with root cause analysis eos debug bionicgpt # AI service diagnostics # 检查特定组件 eos debug vault --mode=agent # Vault agent-specific checks eos debug vault --mode=auth # Authentication diagnostics ``` ### 配置漂移校正 ``` # 检测并修复配置漂移 eos update vault --fix # Fix Vault permissions, config, duplicates eos update consul --fix # Fix Consul permissions and config eos update ceph --fix # Fix Ceph permissions and ownership # Dry-run 模式 (检查但不修复) eos update vault --fix --dry-run eos update ceph --fix --dry-run # 已弃用 (请使用 update --fix 代替): # eos fix vault → eos update vault --fix # eos fix consul → eos update consul --fix ``` ### 列出资源 ``` # 列出环境和服务 eos list env # Show all environments eos list services # Show managed services eos list containers # Docker containers # Storage eos list ceph pools # Ceph storage pools eos list kvm # Virtual machines ``` ### 密钥管理 ``` # Secrets 通过 Vault 自动管理 # 创建服务时,Eos: # 1. 生成强密码/令牌 # 2. 存储在 Vault 的 secret// 路径下 # 3. 通过 Vault Agent 或 Consul Template 交付 # 4. 模板更改时自动轮换 # 手动 secret 操作 eos create credentials --service=myapp eos update vault rotate-secrets --service=myapp ``` ## 架构 Eos 在编排和业务逻辑之间遵循严格的 **关注点分离** 原则: ``` cmd/ # Command definitions (ORCHESTRATION ONLY) ├── create/ # Service creation commands (94 services) ├── read/ # Read/inspection commands ├── update/ # Modification commands (50+ including --fix) ├── delete/ # Deletion commands ├── list/ # Listing commands ├── debug/ # Diagnostic commands (13 services) ├── backup/ # Backup operations ├── restore/ # Restore operations ├── promote/ # Environment promotion ├── self/ # Eos self-management └── sync/ # State synchronization pkg/ # Business logic (ALL actual work happens here) ├── eos_io/ # RuntimeContext, I/O utilities ├── eos_err/ # Error handling (UserError, SystemError) ├── secrets/ # Secret management abstraction ├── environment/ # Environment discovery ├── verify/ # Validation and safety checks ├── crypto/ # Cryptographic utilities ├── docker/ # Docker SDK integration ├── vault/ # HashiCorp Vault operations ├── consul/ # Consul operations ├── nomad/ # Nomad operations ├── ceph/ # Ceph storage management ├── cephfs/ # CephFS operations via go-ceph ├── bionicgpt/ # BionicGPT AI service ├── authentik/ # Authentik identity provider ├── wazuh/ # Wazuh SIEM └── [100+ packages] # Feature-specific business logic ``` ### 设计原则 **1. 评估 → 干预 → 评估 模式** ``` // All pkg/ functions follow this pattern func RunOperation(rc *eos_io.RuntimeContext, config *Config) error { // ASSESS: Check current state currentState := assessSystem(rc) // INTERVENE: Apply changes if needed if !config.DryRun { results := applyChanges(rc, currentState) } // EVALUATE: Verify and report displayResults(rc, results) return nil } ``` **2. 架构强制执行** - `cmd/` 文件:<100 行,仅包含标志和委托 - `pkg/` 文件:所有业务逻辑、文件操作、循环 - 违规 = 重构到 pkg/ **3. 单一事实来源** - 常量仅位于 `pkg/[service]/constants.go` - 零硬编码值(路径、端口、IP、权限) - 共享常量位于 `pkg/shared/` ## 开发 ### 从源代码构建 ``` # 克隆仓库 git clone https://github.com/CodeMonkeyCybersecurity/eos.git cd eos # 构建 sudo ./install.sh ``` ### 测试要求 (P0 - 关键) 在将任何任务标记为完成之前: ``` # 1. 构建必须成功 sudo ./install.sh # 2. 代码格式必须整洁 gofmt -l pkg/ cmd/ # (应无返回) # 3. Vet 必须通过 go vet ./pkg/... go vet ./cmd/... # 4. 测试必须通过 go test -v ./pkg/... # 5. Linting (如果可用) golangci-lint run ``` ### 贡献 **关键规则 (P0 - 破坏性)**: 1. **日志**:只使用 `otelzap.Ctx(rc.Ctx)` - 绝不要用 `fmt.Print*/Println` 2. **架构**:业务逻辑在 `pkg/`,编排仅在 `cmd/` 3. **模式**:始终遵循 评估 → 干预 → 评估 4. **上下文**:所有操作始终使用 `*eos_io.RuntimeContext` 5. **密钥**:使用 `secrets.SecretManager` - 绝不要硬编码凭证 6. **常量**:零硬编码值 - 使用 `pkg/[service]/constants.go` 中的常量 7. **预提交**:运行 `go build -o /tmp/eos-build ./cmd/` - 零容忍编译错误 参阅 [CLAUDE.md](./CLAUDE.md) 获取全面的开发指南和模式。 ### 代码审查清单 在提交之前: - [ ] 业务逻辑在 `pkg/`,不在 `cmd/` - [ ] 所有日志使用 `otelzap.Ctx(rc.Ctx)` - [ ] 无硬编码值(路径、端口、IP、权限) - [ ] 密钥通过 SecretManager 管理 - [ ] 遵循 评估 → 干预 → 评估 模式 - [ ] `go build -o /tmp/eos-build ./cmd/` 成功 - [ ] `gofmt -l` 无输出 - [ ] `go vet ./...` 通过 ## 关键技术 - **语言**:Go 1.25+(类型安全、并发、单二进制部署) - **密钥管理**:HashiCorp Vault(KV v2, AppRole auth, auto-unsealing) - **服务发现**:HashiCorp Consul(服务注册、KV 存储、健康检查) - **容器编排**:HashiCorp Nomad, Docker Compose, Kubernetes (K3s) - **存储**:Ceph (RBD, CephFS, RGW), ZFS, LVM, Btrfs - **可观测性**:OpenTelemetry, Grafana, Wazuh, 结构化日志 - **身份认证**:Authentik, LDAP, HashiCorp Boundary - **SDKs**:go-ceph, Docker SDK, HashiCorp APIs, Kubernetes client-go ## 文档 - **知识库**:[Athena Wiki](https://wiki.cybermonkey.net.au) - 全面的指南和教程 - **开发指南**:[CLAUDE.md](./CLAUDE.md) - 编码标准、模式、关键规则 - **模式库**:[PATTERNS.md](./docs/PATTERNS.md) - 代码示例和最佳实践 - **架构**:[STACK.md](./STACK.md) - 设计原则和技术栈 ## 支持 - **电子邮件**:main@cybermonkey.net.au - **网站**:[cybermonkey.net.au](https://cybermonkey.net.au) - **GitHub Issues**:[报告错误或请求功能](https://github.com/CodeMonkeyCybersecurity/eos/issues) - **社区**:在 [Facebook](https://www.facebook.com/codemonkeycyber)、[X/Twitter](https://x.com/codemonkeycyber)、[LinkedIn](https://www.linkedin.com/company/codemonkeycyber) 加入我们 ## 许可证 Eos 采用双重许可: - **GNU Affero General Public License v3.0 (AGPL-3.0-or-later)** - **Do No Harm License** 两个许可证均适用。这确保了: - 源代码修改必须共享 (AGPL) - 技术服务于道德目的和人类利益 - 仅用于防御性安全 - 禁止攻击性或恶意使用 详见 [LICENSE](./LICENSE)。 ## 项目状态 **活跃开发中** - Eos 正在持续改进,具有: - ✅ 94+ 服务集成 - ✅ 13+ 诊断命令 - ✅ 自动漂移校正 - ✅ SDK 优先架构迁移(进行中) - 🚧 证据收集基础设施(计划集成) - 🚧 集中常量审计(每月) 近期新增(2025年1月): - 通过 go-ceph SDK 管理 CephFS 卷 - 使用 `eos update --fix` 进行配置漂移校正 - 自动捕获调试输出到 `~/.eos/debug/` - 增强的 Vault 诊断,支持 agent/auth 模式 - Ceph 诊断的根因分析 ## 为什么选择 Eos? **问题所在**:现代基础设施非常复杂。搭建一个生产级服务器,配置 Vault、Consul、监控、备份和安全加固,需要跨多个领域的深厚专业知识。 **Eos 的解决方案**: ``` # 传统方法:数天的研究、配置、调试 # Eos 方法: eos create vault # Production-ready Vault in minutes eos create consul # Service discovery configured eos create wazuh # SIEM monitoring enabled eos debug vault # Instant diagnostics with root cause analysis ``` **结果**:基础设施复杂性转化为简单、可靠的命令。问题解决一次,编码进 Eos,永不再次解决。 ``` # ___ _ __ __ _ # / __| _| |__ ___ _ _ | \/ |___ _ _ | |_____ _ _ # | (_| || | '_ \/ -_) '_|| |\/| / _ \ ' \| / / -_) || | # \___\__,|_.__/\___|_| |_|_ |_\___/_||_|_\_\___|\_, | # |__/ |__/ ``` **网络安全。以人为本。** © 2025 [Code Monkey Cybersecurity](https://cybermonkey.net.au/)。ABN: 77 177 673 061。保留所有权利。
标签:Authentik, BionicGPT, Ceph存储, Checkov, CLI, Consul, DevOps工具, DNS解析, Ethical Hacking, EVTX分析, Fail2ban, GitHub Advanced Security, Go语言, HashiCorp, HTTP工具, K3s, KVM虚拟化, LDAP, Linux服务器管理, LLMOps, LLM评估, Nomad, Ollama, Vault, Wazuh, WiFi技术, 人工智能部署, 企业IT基础设施, 动态API解析, 反向代理, 哈希公司技术栈, 基础设施自动化, 大语言模型运维, 子域名突变, 安全加固, 开源项目, 数字化转型工具, 数据库管理, 日志审计, 服务编排, 灰帽子技术, 用户代理, 程序破解, 系统备份, 网络安全, 网络安全审计, 自动化运维, 请求拦截, 隐私保护