mcpField
K
kastell

kastell

本地服务
github.com/kastelldev安全6016 周前更新

关于 kastell

Kastell 是一个服务器安全命令行工具,可对服务器进行安全审计、修复、加固与监控,并支持 Hetzner、DigitalOcean、Vultr 和 Linode 的云服务器部署。它面向需要统一管理多台服务器的运维人员,内置 MCP 服务,便于 AI 智能体直接管理服务器。

主要功能

  1. 01包含 449 项检查的安全审计
  2. 02安全修复与 24 步生产环境加固
  3. 03服务器备份、恢复与快照管理
  4. 04支持 4 家云服务商的部署
  5. 05内置 MCP 服务,默认启用 SAFE_MODE

适用场景

  1. 01对已有服务器进行安全审计并按建议修复
  2. 02在上线前对生产服务器进行加固
  3. 03通过 AI 智能体批量查看多台服务器的状态

MCP 相关

Kastell 内置 MCP 服务,向 Claude、Cursor 等客户端暴露 17 个工具,用于管理服务器。默认开启 SAFE_MODE,会阻止所有破坏性操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kastelldev-kastell": {
"command": "npx",
"args": [
"-y",
"kastell"
],
"env": {
"HETZNER_TOKEN": "<HETZNER_TOKEN>",
"DIGITALOCEAN_TOKEN": "<DIGITALOCEAN_TOKEN>",
"VULTR_TOKEN": "<VULTR_TOKEN>",
"LINODE_TOKEN": "<LINODE_TOKEN>"
}
}
}
}
启动命令npx -y kastell
需要配置的环境变量
HETZNER_TOKEN密钥Hetzner Cloud API token (optional — only for Hetzner servers)
DIGITALOCEAN_TOKEN密钥DigitalOcean API token (optional — only for DigitalOcean servers)
VULTR_TOKEN密钥Vultr API token (optional — only for Vultr servers)
LINODE_TOKEN密钥Linode API token (optional — only for Linode servers)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmkastell1.14.0

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
modeenum否“sizes”操作的服务器模式筛选条件。Coolify 至少需要 2 GB RAM。默认值:coolifycoolify | bare
actionenum是要执行的操作:'list' 列出所有服务器,'status' 检查服务器/云状态,'health' 检查 Coolify 可达性(或裸机服务器的 SSH 可达性),'sizes' 列出某个提供商和区域可用的服务器类型及价格list | status | health | sizes
regionstring否区域/位置 ID('sizes' 操作必填,例如 Hetzner 使用 'nbg1',DigitalOcean 使用 'fra1')
serverstring否服务器名称或 IP。查询单台服务器的 status/health 时必填。省略则针对所有服务器。
providerenum否云服务提供商('sizes' 操作必填)hetzner | digitalocean | vultr | linode

详细介绍

Kastell

Kastell

加固您的基础设施。

English | 土耳其语

Tests Coverage npm Downloads License GitHub stars Socket Badge Snyk Website DeepWiki Zero Telemetry

为什么选择 Kastell?

服务器安全领域各自为政。Lynis 可以扫描,但不会修复。OpenSCAP 功能强大,却很复杂。自定义脚本在失效前一直能用——而且没人维护。每种工具都有自己的输出格式、更新周期和学习曲线。

**Kastell 采用了不同的方法:**通过一个 CLI 完成审计、修复、加固和监控。扫描服务器、应用安全修复、将其锁定到生产标准,并持续监控——全程只需使用同一款工具。

**从第一天起就以 AI 为核心。**Kastell 内置 MCP 服务,因此 Claude、Cursor 或任何兼容 MCP 的 AI Agent 都能直接管理您的服务器。从一句提示词到完成生产环境加固,只需几秒钟。

保护服务器,无需四款独立工具。

快速开始

# Interactive mode -- no commands to memorize
npx kastell

不带任何参数运行 kastell,即可启动交互式搜索菜单,其中包含渐变 ASCII 横幅和快速入门示例。按表情符号分类浏览操作,输入内容即可即时筛选结果,并逐步配置选项——无需记住任何命令名称或标志。

 ██╗  ██╗  ██████╗  ███████╗████████╗███████╗██╗     ██╗
 ██║ ██╔╝  ██╔══██╗ ██╔════╝╚══██╔══╝██╔════╝██║     ██║
 █████╔╝   ███████║ ███████╗   ██║   █████╗  ██║     ██║
 ██╔═██╗   ██╔══██║ ╚════██║   ██║   ██╔══╝  ██║     ██║
 ██║  ██╗  ██║  ██║ ███████║   ██║   ███████╗███████╗███████╗
 ╚═╝  ╚═╝  ╚═╝  ╚═╝ ╚══════╝   ╚═╝   ╚══════╝╚══════╝╚══════╝

  KASTELL  v2.3.1  ·  Your infrastructure, fortified.

  $ kastell init --template production  → deploy a new server
  $ kastell status --all                → check all servers
  $ kastell secure setup                → harden SSH + fail2ban
  $ kastell maintain --all              → full maintenance cycle

? What would you like to do?
   Server Management
❯    Deploy a new server
     Add an existing server
     List all servers
     ...
   Security
     Harden SSH & fail2ban
     Manage firewall (UFW)
     ...

每项操作都包含子选项(服务器模式、模板、日志来源、端口号等),以及可随时返回主菜单的 <- Back 选项。

如果您已经熟悉这些命令,也可以直接使用:

kastell init                    # Deploy a new server
kastell status my-server        # Check server status
kastell backup --all            # Backup all servers

Kastell 会自动处理服务器配置、SSH 密钥设置、防火墙配置和平台安装。

Kastell 有何不同?

问题解决方案
更新导致服务器故障?通过 maintain 提供更新前快照保护
不清楚服务器运行是否正常?内置监控、健康检查和 doctor 诊断
把安全问题留到最后才考虑?内置防火墙、SSH 加固、SSL 和安全审计
备份?也许以后再说……一条命令即可备份和还原,并跟踪清单
要管理多台服务器?备份、维护、状态和健康检查都支持 --all 标志
现有服务器尚未纳入管理?kastell add 可将任意服务器纳入管理
不想记住命令?只需运行 kastell——交互式菜单会为您引导

Kastell 与其他方案对比

功能KastellLynisOpenSCAP
安装npm i -g kastell包管理器包管理器
语言TypeScriptShellC/Python
安全检查449300+因配置文件而异
自动修复安全级别仅提供建议仅提供建议
MCP(AI Agent)17 个工具----
合规性CIS、PCI-DSS、HIPAACIS、HIPAACIS、STIG、PCI-DSS
云资源配置4 家提供商----
加固(锁定)24 步----
远程监控Guard 守护进程----
Telegram 机器人内置----
平台支持Linux(SSH)Linux/macOS/BSDLinux
许可证Apache 2.0GPL-3.0LGPL-2.1

可以做什么?

部署
kastell                               # Interactive menu (recommended)
kastell init                          # Interactive setup (direct)
kastell init --provider hetzner       # Non-interactive
kastell init --config kastell.yml     # From YAML config
kastell init --template production    # Use a template
kastell init --mode bare              # Generic VPS (no platform)
kastell init --mode dokploy           # Dokploy (Docker Swarm PaaS)
管理
kastell list                  # List all servers
kastell status my-server      # Check server status
kastell status --all          # Check all servers
kastell ssh my-server         # SSH into server
kastell restart my-server     # Restart server
kastell destroy my-server     # Destroy cloud server entirely
kastell add                   # Add existing server
kastell remove my-server      # Remove from local config
kastell config set key value  # Manage default configuration
kastell config validate       # Validate servers.yaml structure and types
kastell export                # Export server list to JSON
kastell import servers.json   # Import servers from JSON
更新与维护
kastell update my-server              # Update platform (Coolify or Dokploy, auto-detected)
kastell update my-server --dry-run    # Preview update without executing
kastell maintain my-server            # Full maintenance (snapshot + update + health + reboot)
kastell maintain my-server --dry-run  # Preview maintenance steps
kastell maintain --all                # Maintain all servers
备份与恢复
kastell backup my-server      # Backup DB + config
kastell backup --all          # Backup all servers
kastell restore my-server     # Restore from backup
快照
kastell snapshot create my-server   # Create VPS snapshot (with cost estimate)
kastell snapshot list my-server     # List snapshots
kastell snapshot list --all         # List all snapshots across servers
kastell snapshot delete my-server   # Delete a snapshot
安全
kastell firewall status my-server   # Check firewall
kastell firewall setup my-server    # Configure UFW
kastell secure audit my-server      # Security audit
kastell secure setup my-server      # SSH hardening + fail2ban
kastell domain add my-server --domain example.com  # Set domain + SSL
安全审计
kastell audit my-server                  # Full security audit (31 categories, 449 checks)
kastell audit my-server --json           # JSON output for automation
kastell audit my-server --threshold 70   # Exit code 1 if score below threshold
kastell audit my-server --fix            # Interactive fix mode (prompts per severity)
kastell audit my-server --fix --dry-run  # Preview fixes without executing
kastell audit my-server --watch          # Re-audit every 5 min, show only changes
kastell audit my-server --watch 60       # Custom interval (60 seconds)
kastell audit --host [email protected]       # Audit unregistered server
kastell audit my-server --badge          # SVG badge output
kastell audit my-server --report html    # Full HTML report
kastell audit my-server --score-only     # Just the score (CI-friendly)
kastell audit my-server --summary        # Compact dashboard view
kastell audit my-server --explain        # Explain failed checks with remediation guidance
kastell audit my-server --compliance cis # Filter by compliance framework (cis-level1, cis-level2, pci-dss, hipaa)
安全加固
kastell lock my-server                        # 24-step production hardening (SSH + UFW + sysctl + auditd + AIDE + Docker)
kastell lock my-server --dry-run              # Preview hardening steps without applying
监控与调试
kastell monitor my-server             # CPU, RAM, disk usage
kastell logs my-server                 # View platform logs (Coolify or Dokploy)
kastell logs my-server -f              # Follow logs
kastell health                         # Health check all servers
kastell doctor                         # Check local environment

支持的提供商

提供商状态区域起步价格
Hetzner Cloud稳定欧盟、美国~€4/月
DigitalOcean稳定全球~$18/月
Vultr稳定全球~$12/月
Linode (Akamai)Beta全球~$12/月

价格按至少配备 2 GB RAM 的最低价套餐计算(Coolify 和 Dokploy 需要此配置)。Bare 模式没有最低配置要求——根据提供商不同,套餐起价约为 ~$2.50/月。设置时可选择其他规格。Linode 支持目前处于 beta 阶段,欢迎社区测试。

支持的平台

平台模式标志最低 RAM最低 CPU描述
Coolify--mode coolify(默认)2 GB2 vCPU基于 Docker 的 PaaS(端口 8000)
Dokploy--mode dokploy2 GB2 vCPU基于 Docker Swarm 的 PaaS(端口 3000)
Bare--mode bare——通用 VPS,无平台开销

Kastell 采用 PlatformAdapter 架构——相同的命令(update、maintain、logs、health)可在所有平台上使用。平台信息会存储在服务器记录中,并在每次执行命令时自动检测。

开发者体验

功能命令 / 标志描述
试运行--dry-run预览破坏性命令,不实际执行。适用于:destroy、update、restart、remove、maintain、restore、firewall、domain、backup、snapshot、secure。
Shell 补全kastell completions bash|zsh|fish生成 Shell 补全脚本,以便通过 Tab 键补全命令和选项。
配置验证kastell config validate使用 Zod 严格模式架构检查 servers.yaml 中的结构和类型错误。
版本检查kastell --version显示当前版本,并在 npm 上有更新版本时发出通知。

YAML 配置

使用单个配置文件进行部署:

# kastell.yml
provider: hetzner
region: nbg1
size: cax11
name: my-coolify
fullSetup: true
domain: coolify.example.com
kastell init --config kastell.yml

模板

模板适用场景包含内容
starter测试、个人项目1-2 vCPU、2-4 GB RAM
production正式应用2-4 vCPU、4-8 GB RAM、完整加固
dev开发与 CI/CD与 starter 相同,不含加固
kastell init --template production --provider hetzner

安全性

Kastell 将安全性放在首位——在 380 个测试套件中共有 12,132 项测试,其中包括专门的安全测试套件。

  • API 令牌绝不会存储在磁盘上——运行时提示输入或通过环境变量提供
  • 必要时自动生成 SSH 密钥(Ed25519)
  • 所有 SSH 连接均使用 StrictHostKeyChecking=accept-new,并进行 IP 验证(八位组范围)和环境过滤
  • 对所有面向用户的输入进行 Shell 注入防护(spawn/spawnSync,不使用 execSync)
  • 对提供商错误消息进行清理,防止令牌泄露
  • 对 stderr 进行清理,从错误输出中隐藏 IP、主目录路径、令牌和机密信息
  • 检测配置文件中的令牌(22 种以上密钥模式,不区分大小写,支持嵌套)
  • 导入/导出操作会移除敏感字段,并强制执行严格的文件权限(0o600)
  • --full-setup 会自动启用 UFW 防火墙并强化 SSH 安全
  • MCP:SAFE_MODE(默认:开启)会阻止所有破坏性操作;对所有输入进行 Zod 架构验证;在备份还原时防止路径遍历
  • Claude Code hooks:destroy-block 可防止未使用 --force 时意外执行 kastell destroy;pre-commit audit guard 会在评分下降时发出警告
  • 零遥测——Kastell 不会收集任何使用数据、分析数据或遥测数据。您的服务器数据绝不会离开您的设备。

安全行为(v2.3.1)

本节介绍 v2.3.1 中发布的安全保障。未来的工作将在其他位置说明(即将发布的条目请参阅 CHANGELOG.md)。

  • KASTELL_STRICT_HOST_KEY=true——设置后,Kastell 会直接拒绝未知的 SSH 主机密钥。直接 SSH 连接(即通过 accept-new 建立的连接)会显示一次性 TOFU(首次使用时信任)警告,提醒运维人员注意风险;若同时设置 KASTELL_STRICT_HOST_KEY=true,该警告将升级为硬性错误。
  • 非 TTY 破坏性命令——在非交互环境(CI、脚本、自动化)中,破坏性操作必须显式指定 --force 标志或该命令文档中说明的选择加入标志。若未指定,命令将以非零状态码退出并显示明确的错误信息。
  • 结构化跳过项——被跳过的检查(例如,与 VPS 无关、平台不匹配、缺少前置条件)会在审计输出中显示为中性且可见的结果,而不会被静默忽略。运维人员可以准确查看哪些检查未运行以及原因。
  • Windows 机密文件——Kastell 在 Windows 上写入的机密文件会设置严格的 ACL(仅所有者可访问)。Linux/macOS 上的 0o600 POSIX 权限仍是权威标准;Windows 使用等效的 DACL。
  • QuickWin JSON 结构——现在,audit --json 中的 QuickWin 条目除现有的 description 和 commands 外,还包含稳定的 id(检查 ID)和 severity 字段。因此,QuickWin 可以通过程序处理,无需解析面向用户的描述。
  • FORBIDDEN 预览包含原因——使用 --dry-run 预览修复(或通过 server_fix MCP dry-run 预览)时,每个 FORBIDDEN 级别的修复现在都会显示简短原因,说明该修复为何被归类为 FORBIDDEN(例如,“需要重启”“会中断活动的 SSH 会话”)。原因取自检查项的 forbiddenReason 字段。

安装

# Run directly (recommended)
npx kastell <command>

# Or install globally
npm install -g kastell
kastell <command>

需要 Node.js 20 或更高版本。

安全模式

KASTELL_SAFE_MODE 环境变量用于控制破坏性操作:

  • MCP 默认值: true——provision、destroy、restore 会被阻止
  • CLI 默认值: false——所有操作均已启用
  • 覆盖设置: KASTELL_SAFE_MODE=true kastell destroy <server> → 将被拒绝

受影响的命令:init、destroy、backup-restore、snapshot-restore、snapshot-delete、restart、maintain。

故障排除

服务创建失败? 运行 kastell doctor --check-tokens,验证 API 令牌和本地环境。

服务没有响应? 使用 kastell status my-server --autostart 检查平台状态,并在需要时自动重启;也可以使用 kastell health 一次性检查所有服务。

需要重新开始? kastell destroy my-server 会彻底移除云服务。

参与贡献

开发环境设置、测试和贡献指南请参见 CONTRIBUTING.md。

Kastell 在 344 个测试套件中包含 11,206 个测试。提交 PR 前请运行 npm test。

MCP 服务(AI 集成)

Kastell 内置了一个用于 AI 驱动的服务管理的 Model Context Protocol 服务。可与 Claude Code、Cursor、Windsurf 和其他兼容 MCP 的客户端配合使用。

{
  "mcpServers": {
    "kastell": {
      "command": "npx",
      "args": ["-y", "-p", "kastell", "kastell-mcp"],
      "env": {
        "HETZNER_TOKEN": "your-token",
        "DIGITALOCEAN_TOKEN": "your-token",
        "VULTR_TOKEN": "your-token",
        "LINODE_TOKEN": "your-token"
      }
    }
  }
}

可用工具:

工具操作描述
server_infolist, status, health, sizes查询服务信息,检查云服务提供商和平台状态
server_logslogs, monitor通过 SSH 获取平台/Docker 日志和系统指标
server_manageadd, remove, destroy注册、注销或销毁云服务
server_maintainupdate, restart, maintain更新平台、重启服务并执行完整维护
server_securesecure, firewall, domainSSH 加固、防火墙规则、域名/SSL 管理(10 个子命令)
server_backupbackup, snapshot备份/恢复数据库并创建/管理 VPS 快照
server_provisioncreate在云服务提供商上配置新服务
server_auditaudit执行包含 449 项检查的安全审计,并按合规框架筛选;使用 --explain 获取修复指导
server_evidencecollect收集带校验和的取证证据包
server_guardstart, stop, status管理自主安全监控守护进程
server_doctordiagnose主动健康分析并提供修复命令
server_lockharden执行 24 步生产环境加固(SSH、UFW、sysctl、auditd、AIDE、Docker)
server_fleetoverview全服务群健康状况和安全态势仪表板
server_fixfix --safe通过备份应用安全自动修复(仅 SAFE 层级,默认 dryRun)

所有破坏性操作(destroy、restore、snapshot-delete、provision、restart、maintain、snapshot-create)都需要设置 SAFE_MODE=false 才能执行。

Claude Code 插件

Kastell 可作为 Claude Code 插件 在 Anthropic 市场中使用。该插件包含:

  • 4 项技能:kastell-ops(架构参考)、kastell-scaffold(组件生成)、kastell-careful(破坏性操作防护)、kastell-research(代码库探索)
  • 2 个 Agent:kastell-auditor(并行审计分析器)、kastell-fixer(隔离于工作树的自动修复器)
  • 5 个钩子:destroy-block、session-audit、session-log、pre-commit-audit-guard、stop-quality-check

通过 Claude Code 插件管理器安装,或使用 claude --plugin-dir kastell-plugin 直接调用。

MCP 平台设置
平台配置位置指南
Claude Codeclaude mcp add 或 .mcp.json设置指南
Claude Desktopclaude_desktop_config.json设置指南
VS Code / Copilot.vscode/mcp.json设置指南
Cursor.cursor/mcp.json设置指南

更多平台(JetBrains、Windsurf、Gemini 等)将在 v2.0 中推出。

AI 可发现性

Kastell 为 AI 爬虫提供 llms.txt,并以 io.github.kastelldev/kastell 的名称列入 MCP Registry。

v2.3 可靠性契约

这些契约适用于 CLI 和 MCP 服务。

配置行为

server_provision 会在提供商创建服务器且 Kastell 将其持久注册后返回。readiness.status 可能为 pending;请使用 server_info status 或 server_info health 跟进检查。交互式 kastell init 命令会继续等待,直到现有就绪检查通过。

自动化约定
  • 不支持的 CLI 操作和失败的 CLI 操作返回退出代码 1。
  • 有效的空结果和用户取消返回 0。
  • 混合 --all 失败返回 1。
  • audit --json 和 audit --ci 将标准输出专用于一个 JSON 负载。

CI/CD 集成

在 CI 流水线中使用 kastell audit 来强制执行安全基线:

# .github/workflows/security-audit.yml
name: Security Audit
on:
  schedule:
    - cron: '0 6 * * 1'  # Weekly Monday 6 AM
  workflow_dispatch:
jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm install -g kastell
      - run: kastell audit --host root@${{ secrets.SERVER_IP }} --threshold 70 --json > audit-result.json
      - uses: actions/upload-artifact@v4
        with:
          name: audit-report
          path: audit-result.json

如果分数低于目标,--threshold 标志会导致返回非零退出代码,从而自动使 CI 任务失败。

后续计划

  • 测试卓越性:变异测试、覆盖率缺口、集成测试(v1.14)
  • 插件生态系统与市场分发(v2.0)
  • 仪表板和托管服务(v3.0)

理念

基础设施应该简单、可预测且安全。

Kastell 不只是一个脚本。它是你可自托管基础设施的 DevOps 安全层。

许可证

Apache 2.0 —— 参见 LICENSE

支持


由 @omrfc 构建

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。