Skip to content

在 Debian 12 上安装 Warpgate 配置堡垒机

Published: at 00:00编辑

警告!

该项目目前处于 Alpha 试验阶段,不建议用于生产环境!

Warpgate 是在跳板机上部署的服务,该服务将接收 SSH,HTTPS,MySQL 和 PostgreSQL 的流量并转发给目标地址,并提供(可选的)Web Admin UI。它通过特殊格式的凭据接收连接,在本地对用户进行身份验证,连接到目标本身,然后将双方连接在一起。

0x00 与其他竞品对比

你可能会说为什么不用 JumpServer 呢?

你说的对,但是 Warpgate 拥有相对轻量的架构,它是一个用 Rust 编写的单一二进制文件,并且提供官方的 Docker 镜像,也支持 systemd 守护运行,这使得部署和维护变得非常简单,尤其适合资源有限的小型团队或个人开发者。相比之下,JumpServer 是一个功能全面但更为复杂的系统,需要更多的服务器资源和更复杂的基础架构来运行,增加了运维成本。

JumpServer 是生产验证过的成熟系统,在部署的时候让我的物理机风扇起飞。Warpgate 同样提供了 WebUI,但是占用资源少,除了 RDP/Telnet 主流协议都支持。两者均支持会话回放审计

0x01 准备基础设施

出于安全原因,或者不想让文件系统一团糟,我选择使用 Docker 部署 Warpgate,方法也很简单,配置 docker-compose.yml 就好了:

services:
  warpgate:
    container_name: warpgate
    restart: unless-stopped
    image: ghcr.io/warp-tech/warpgate
    ports:
      - 2222:2222
      - 8888:8888
      - 33306:33306
    volumes:
      - ./data:/data
    stdin_open: true
    tty: true

  test: # 这是一个测试服务,如果你不需要,请删除
    container_name: test_ssh
    restart: unless-stopped
    image: alpine_sshd # Dockerfile 放在文末

但是在此之前,我们需要先执行 setup 脚本,在你的 docker-compose.yml 同级目录下执行:

docker run --rm -it -v ./data:/data ghcr.io/warp-tech/warpgate setup

脚本将要求你输入密码,可别忘记了,不然就要删掉 ./data 然后重新设置 (别问我怎么知道的)

如果你拥有有效的 SSL 证书和密钥,你可以替换 ./data 中自签名证书了。

0x02 访问 WebUI 添加目标

如果你通过文末的 Dockerfile 构建了测试环境,那么你可以访问 https://<IP>:<PORT>/@warpgate/admin 并用你在上一步设置的密码登陆。

添加 SSH 目标

Warpgate 有自己的 SSH Public Key,目标主机必须信任。SSH Public Key 按偏好顺序列出。复制其中之一并将其粘贴到主机上的 ~/.ssh/authorized_keys 文件的末尾(每个目标主机 OS 的用户都有自己的 authorized_keys 文件,如果尚不存在,则需要创建它) 。

登录 Warpgate Admin UI 并导航到 Config > Targets > Add target 并给新目标一个名称:

创建新目标

创建新目标

填写连接和身份验证信息,然后单击 Update configuration,例如:

填写认证信息

别忘了下方需要勾选上可以访问资源的角色(默认只有方框里的那一个),随后便可以在主页查看到资源了。

访问 SSH 目标

你需要把自己的公钥上传给 Warpgate 以认证身份,然后复制 Access instructions 里的 Example Command 到终端回车执行,这样不出意外你就可以连接到目标环境了。

连接测试环境

0x04 结语

感谢你阅读到这里,对本文有任何问题欢迎留言!

FROM alpine:latest

RUN sed -i 's#https\?://dl-cdn.alpinelinux.org/alpine#https://mirrors.tuna.tsinghua.edu.cn/alpine#g' /etc/apk/repositories \
    && apk add --no-cache openssh \
    && ssh-keygen -A \
    && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin without-password/' /etc/ssh/sshd_config \
    && mkdir -p /root/.ssh \
    && echo "ssh-ed25519 <这里换成你在 Warpgate WebUI 拿到的 SSH 公钥>" > /root/.ssh/authorized_keys \
    && chmod 700 /root/.ssh \
    && chmod 600 /root/.ssh/authorized_keys

EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]

上一篇
青年人的第一个运营商:注册一个 ASN
下一篇
在 Debian 12 上安装 Forgejo 配置私有 Git

人机验证:请刷新页面以加载评论区