跳到正文
V2EX·· 3 小时前AI 评分48

Casvisor:JumpServer 之外的开源堡垒机,Apache-2.0 许可,单个 Go 二进制支持 SSH、RDP、VNC 和 Telnet

Casvisor: JumpServer 之外的开源堡垒机, Apache-2.0,一个 Go 二进制装下 SSH / RDP / VNC / Telnet

AI 导读

Casvisor 是一款采用 Apache-2.0 许可的开源堡垒机,以单个 Go 二进制提供 SSH、RDP、VNC 和 Telnet 访问,并支持会话录像、权限控制与命令审计。它还提供 SSH 跳板和补丁管理,可通过 Casdoor 接入 SSO、MFA、LDAP 等;目前不支持数据库代理和 Kubernetes,录像也只能保存在本机目录。

正文

团队里管着几十台服务器,最后都会走到同一个问题:谁在什么时候连了哪台机器,做了什么?

常见的做法是共享账号、把 SSH 密码发在群里,或者大家一起用同一个跳板机账号。真出了事,登录日志里只有一行 IP ,查不到人;有人把密码带走,也无从知道。

堡垒机就是解决这个的。但看了一圈开源的选项:

  • JumpServer:国内事实标准,但 RDP 代理、数据库的原生客户端代理( Magnus )、远程应用这些放在企业版里;
  • Teleport:AGPL ,社区版二进制对企业规模和收入有限制;
  • Next Terminal:2.0 起服务端闭源,免费版限 100 个资产;
  • Boundary:仓库已经归档;
  • Warpgate:Apache-2.0 ,Rust ,单二进制,是目前最接近「完全开源」的对手。

我们想要的是:功能完整、一个二进制就能跑、能接自己的 SSO 。找不到,就自己写了 Casvisor 。

连接

SSH:网页里是 xterm.js 终端,旁边带一个文件面板,走 SFTP 上传下载。

RDP:自己写的纯 Go 客户端 gordp,支持 NLA 、GFX 图形管道( ClearCodec 和 RemoteFX Progressive ,和 Windows 自带客户端一样的画质路径)、高 DPI 下的清晰字体、远程光标、剪贴板、跟随窗口改大小、通过重定向的磁盘传文件。Windows Server 、Windows 10/11 都连过,FreeRDP 那一类主机也能连。

VNC:noVNC ,VNC 的认证由后端做,浏览器拿不到 VNC 密码。

Telnet:给交换机、老设备用,自动填资产里存的账号。

SSH 网关:ssh -p 2222 [email protected],scp 、sftp 、rsync 、Xshell 、VS Code Remote 都能用,用公钥登录,权限和网页里是同一套。

网域网关:机器在另一个机房、或者在公司 NAT 后面,Casvisor 直连不到时,用一个 SSH 跳板机中转;连跳板机都没有的网络,可以在里面随便找台机器跑 casvisor agent,它主动连出来,不监听端口。

密码和私钥都是加密存库的,SSH 主机密钥和 RDP 证书首次连接时记下来,之后变了就拒绝连接。用户全程看不到服务器的密码。

控制

权限按 用户 / 用户组 × 资产 / 资产标签 来配,动作有连接、复制、粘贴、上传、下载、端口转发,可以限来源 IP 段和有效期。用的是 Casbin 。

命令规则:正则匹配,命中就拦(不把回车发给目标机器,改发 Ctrl+C )或只告警。网页终端和 SSH 网关都生效。

撤销立即生效:改权限、删权限、权限到期,已经连着的会话会被断开。

审计

四种协议的会话都录像,回放就在浏览器里,用的是实时连接那套代码。SSH 和 Telnet 的录像还能下载成 asciicast 。

在线会话可以实时旁观,也可以直接断掉。

SSH/Telnet 的命令记录是从一个虚拟屏幕里读的,Tab 补全、上箭头调历史、中文、行内编辑都能记准; vi 、top 这种全屏程序里的回车和输密码不记。

文件传输和所有 API 改动都在操作日志里。

运维

顺带做了补丁管理:SSH 资产可以扫描待装的系统更新,一键安装、重启。Windows 走 Windows Update 的 COM 接口,Linux 支持 apt / dnf / yum 。

部署

docker run -d --name casvisor -p 19000:19000 -p 2222:2222 \
  -v casvisor-db:/db -v casvisor-recordings:/recordings casbin/casvisor

默认 SQLite + 自带账号,管理员口令打印在日志里,第一次登录后改掉。要 SSO 、MFA 、LDAP 、社交登录,接 Casdoor 就行; Casdoor 的用户组直接能用在权限里。

老实说的部分

  • 没有数据库代理( MySQL / PostgreSQL 的网页连接和 SQL 审计)和 K8s ,JumpServer 社区版这两个都有;
  • 一个资产只有一组系统账号,没有多账号、自动改密、访问申请工单;
  • 没有资产树和批量导入,资产多了管理起来比较笨;
  • 录像只能存在本机目录,还不能放 S3 / OSS ;
  • 本地账号模式没有 MFA ,要 MFA 得接 Casdoor ;
  • 命令审计靠读虚拟屏幕,不是把键盘输入全录下来,全屏程序里的操作看不到。

在线演示: https://demo.casvisor.com (有一个假的 SSH 和一个假的 VNC 可以连) 文档: https://casvisor.org 代码: https://github.com/casvisor/casvisor

Apache-2.0 ,欢迎 issue 和 PR 。

来源:V2EX · v2ex.com