关于 kastell
Kastell 是一个服务器安全命令行工具,可对服务器进行安全审计、修复、加固与监控,并支持 Hetzner、DigitalOcean、Vultr 和 Linode 的云服务器部署。它面向需要统一管理多台服务器的运维人员,内置 MCP 服务,便于 AI 智能体直接管理服务器。
主要功能
- 01包含 449 项检查的安全审计
- 02安全修复与 24 步生产环境加固
- 03服务器备份、恢复与快照管理
- 04支持 4 家云服务商的部署
- 05内置 MCP 服务,默认启用 SAFE_MODE
适用场景
- 01对已有服务器进行安全审计并按建议修复
- 02在上线前对生产服务器进行加固
- 03通过 AI 智能体批量查看多台服务器的状态
MCP 相关
Kastell 内置 MCP 服务,向 Claude、Cursor 等客户端暴露 17 个工具,用于管理服务器。默认开启 SAFE_MODE,会阻止所有破坏性操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y kastellHETZNER_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
13收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | enum | 否 | “sizes”操作的服务器模式筛选条件。Coolify 至少需要 2 GB RAM。默认值:coolifycoolify | bare |
| action | enum | 是 | 要执行的操作:'list' 列出所有服务器,'status' 检查服务器/云状态,'health' 检查 Coolify 可达性(或裸机服务器的 SSH 可达性),'sizes' 列出某个提供商和区域可用的服务器类型及价格list | status | health | sizes |
| region | string | 否 | 区域/位置 ID('sizes' 操作必填,例如 Hetzner 使用 'nbg1',DigitalOcean 使用 'fra1') |
| server | string | 否 | 服务器名称或 IP。查询单台服务器的 status/health 时必填。省略则针对所有服务器。 |
| provider | enum | 否 | 云服务提供商('sizes' 操作必填)hetzner | digitalocean | vultr | linode |
详细介绍
Kastell
加固您的基础设施。
English | 土耳其语
为什么选择 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 与其他方案对比
| 功能 | Kastell | Lynis | OpenSCAP |
|---|---|---|---|
| 安装 | npm i -g kastell | 包管理器 | 包管理器 |
| 语言 | TypeScript | Shell | C/Python |
| 安全检查 | 449 | 300+ | 因配置文件而异 |
| 自动修复 | 安全级别 | 仅提供建议 | 仅提供建议 |
| MCP(AI Agent) | 17 个工具 | -- | -- |
| 合规性 | CIS、PCI-DSS、HIPAA | CIS、HIPAA | CIS、STIG、PCI-DSS |
| 云资源配置 | 4 家提供商 | -- | -- |
| 加固(锁定) | 24 步 | -- | -- |
| 远程监控 | Guard 守护进程 | -- | -- |
| Telegram 机器人 | 内置 | -- | -- |
| 平台支持 | Linux(SSH) | Linux/macOS/BSD | Linux |
| 许可证 | Apache 2.0 | GPL-3.0 | LGPL-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 GB | 2 vCPU | 基于 Docker 的 PaaS(端口 8000) |
| Dokploy | --mode dokploy | 2 GB | 2 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 上的
0o600POSIX 权限仍是权威标准;Windows 使用等效的 DACL。 - QuickWin JSON 结构——现在,
audit --json中的 QuickWin 条目除现有的description和commands外,还包含稳定的id(检查 ID)和severity字段。因此,QuickWin 可以通过程序处理,无需解析面向用户的描述。 - FORBIDDEN 预览包含原因——使用
--dry-run预览修复(或通过server_fixMCP 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_info | list, status, health, sizes | 查询服务信息,检查云服务提供商和平台状态 |
server_logs | logs, monitor | 通过 SSH 获取平台/Docker 日志和系统指标 |
server_manage | add, remove, destroy | 注册、注销或销毁云服务 |
server_maintain | update, restart, maintain | 更新平台、重启服务并执行完整维护 |
server_secure | secure, firewall, domain | SSH 加固、防火墙规则、域名/SSL 管理(10 个子命令) |
server_backup | backup, snapshot | 备份/恢复数据库并创建/管理 VPS 快照 |
server_provision | create | 在云服务提供商上配置新服务 |
server_audit | audit | 执行包含 449 项检查的安全审计,并按合规框架筛选;使用 --explain 获取修复指导 |
server_evidence | collect | 收集带校验和的取证证据包 |
server_guard | start, stop, status | 管理自主安全监控守护进程 |
server_doctor | diagnose | 主动健康分析并提供修复命令 |
server_lock | harden | 执行 24 步生产环境加固(SSH、UFW、sysctl、auditd、AIDE、Docker) |
server_fleet | overview | 全服务群健康状况和安全态势仪表板 |
server_fix | fix --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 Code | claude mcp add 或 .mcp.json | 设置指南 |
| Claude Desktop | claude_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
支持
- GitHub Issues —— 错误报告和功能请求
- 更新日志 —— 版本历史
由 @omrfc 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。