本页内容

  • 环境要求
  • 下载 Warpgate 二进制文件
  • 将 Warpgate 配置为 Bastion 服务器
  • 将 Warpgate 作为 Systemd 服务运行
  • 配置 UFW
  • 登录 Warpgate
  • 添加 SSH 目标服务器
  • 添加 MySQL/MariaDB 目标服务器
  • 总结

Bastion 服务器是指专门设计并配置用于抵御计算机网络攻击的计算机/机器/服务器。Bastion 服务器的功能类似于应用程序的代理或负载均衡器。它允许你访问位于 DMZ 网络中的计算机或服务器。

Warpgate 是一个可当作 Bastion 服务器使用的现代解决方案。它使用 Rust 编写,并提供一个基于 Web 的管理仪表盘。你可以将它安装在特定的节点上,然后轻松添加位于你私有基础设施上的目标节点或服务器。Warpgate 目前可用作 SSH、MySQL/MariaDB 和 HTTP 的 Bastion 服务器。

在本教程中,你将使用 Warpgate 在 Debian 11 服务器上搭建一个用于 SSH 和 MySQL/MariaDB 连接的 Bastion 服务器。你将在 Debian 服务器上安装并配置 Warpgate,然后将 SSH 目标服务器和 MySQL 服务器添加到 Warpgate。最后,你将通过连接目标主机的 SSH 服务器和 MySQL 服务器来确认 Warpgate Bastion 服务器工作正常。

环境要求

完成本教程需要准备以下条件:

  • 一台运行 Debian 11 的 Linux 服务器 —— 本示例使用主机名为 'warpgate-debian'、IP 地址为 '192.168.5.10' 的服务器。
  • 一个具有 sudo/root 管理员权限的非 root 用户。

下载 Warpgate 二进制文件

在本节中,你将手动从 GitHub 下载 Warpgate 二进制文件,然后将其移动到系统的 'bin' 目录。安装 Warpgate 的另一种方式是从源代码编译,或者使用 Warpgate 的 Docker 版本。

首先,运行以下 wget 命令下载 Warpgate 二进制文件。请访问官方 GitHub 下载页面获取 Warpgate 的最新版本。

wget -q https://github.com/warp-tech/warpgate/releases/download/v0.7.0/warpgate-v0.7.0-x86_64-linux

下载完成后,将 Warpgate 二进制文件移动到 '/usr/local/bin/warpgate'。然后,使用 'chmod +x' 命令使其可执行。

mv warpgate-v0.7.0-x86_64-linux /usr/local/bin/warpgate
sudo chmod +x /usr/local/bin/warpgate

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

接下来,运行以下命令来定位你系统上的 'warpgate' 二进制文件。

which warpgate

现在验证 Warpgate 的版本并列出 'warpgate' 命令的可用参数。

warpgate version
warpgate --help

你应该会看到类似这样的输出。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

将 Warpgate 配置为 Bastion 服务器

下载好 Warpgate 二进制文件后,你现在将搭建并配置你的 Warpgate 安装。这可以通过 'warpgate' 命令以交互方式完成。

执行以下命令,将 Warpgate 配置为 bastion 服务器。

warpgate setup

命令执行后,系统会询问你以下配置:

  • 你希望将 Warpgate 数据存储在何处?保留默认值,即 '/var/lib/warpgate' 目录。
  • Warpgate Web 管理仪表盘的端点?保留默认值,使 Warpgate 运行在你的内网/公网 IP 地址的 8888 端口。
  • 是否接受 SSH 连接?输入 yes 以将 Warpgate 启用为 SSH bastion 服务器。
  • SSH bastion 服务器的端点?保留默认值,使 SSH bastion 服务器运行在内网/公网 IP 地址的 2222 端口。
  • 是否接受 MySQL 连接?输入 yes 以将 Warpgate 启用为 MySQL bastion 服务器。
  • MySQL bastion 服务器的端点?保留默认值,端口为 33306。
  • 是否记录用户会话?输入 yes 以启用该功能。
  • 为默认用户 admin 设置密码。输入你的 Warpgate 安装的密码。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

设置过程完成后,你应该会收到类似这样的输出。你还会看到在此过程中创建的 Warpgate 配置文件 '/etc/warpgate.yaml' 以及数据目录 '/var/lib/warpgate'。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

现在运行以下命令,显示文件 '/etc/warpgate.yaml' 的内容,以及 '/var/lib/warpgate' 下可用文件和目录的列表。

cat /etc/warpgate.yaml
ls /var/lib/warpgate

以下是将输出到你终端的内容。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

现在执行以下命令来运行 Warpgate。你会看到 'Warpgate is now running' 的输出,并为 SSH、MySQL 和 HTTP 连接打开 TCP 端口。

warpgate --config /etc/warpgate.yaml run

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

打开你的 Web 浏览器,访问带有 8888 端口的 Warpgate IP 地址(例如:https://192.168.5.10:8888/)。成功后,你应该会看到 Warpgate 的登录页面。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

回到终端,按 Ctrl+c 终止 Warpgate 进程。

将 Warpgate 作为 Systemd 服务运行

在本节中,你将搭建并配置 Warpgate 以配合 Systemd 运行。这样你可以在后台运行 Warpgate,并且更易于通过 systemctl 命令工具进行管理。

使用以下 nano 编辑器命令创建一个新的 systemd 单元文件 '/etc/systemd/system/warpgate.service'。

sudo nano /etc/systemd/system/warpgate.service

将以下 systemd 单元配置添加到该文件中。

[Unit]
Description=Warpgate
After=network.target
StartLimitIntervalSec=0
[Service]
Type=notify
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/warpgate --config /etc/warpgate.yaml run
[Install]
WantedBy=multi-user.target

完成后保存文件并退出编辑器。

运行以下命令以重新加载 systemd 管理器并应用更改。

sudo systemctl daemon-reload

然后使用以下 systemctl 命令工具启动并启用 Warpgate 服务。

sudo systemctl start warpgate
sudo systemctl enable warpgate

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

之后,验证 Warpgate 服务状态,确保服务正在运行。

sudo systemctl status warpgate

以下输出确认 Warpgate 服务正在运行。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

如果你检查服务器上开放的端口列表,你会看到多个端口 2222、8888 和 33306 处于 LISTEN 状态。运行以下 ss 命令。

ss -tulpn

输出:

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

配置 UFW

在本节中,你将在 Debian 服务器上安装、运行并启用 UFW。你还会开放 Warpgate 使用的端口。

通过运行以下 apt 命令安装 UFW。

sudo apt install ufw

出现提示时,输入 y 确认并按 ENTER。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

UFW 安装完成后,运行以下命令以开放 OpenSSH 服务以及 Warpgate 的端口 2222、8888 和 33306。

sudo ufw allow OpenSSH
sudo ufw allow 8888/tcp
sudo ufw allow 2222/tcp
sudo ufw allow 33306/tcp

然后使用以下命令启动并启用 UFW。出现提示时输入 y 并按 ENTER 继续。

sudo ufw enable

执行以下命令后,UFW 应该处于运行并启用状态,这意味着 UFW 会在系统启动时自动运行。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

现在输入以下命令验证 UFW 状态。你应该会看到 UFW 显示 'Status: Active',并添加了 OpenSSH 服务、端口 2222、8888 和 33306。

sudo ufw status

输出:

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

登录 Warpgate

Warpgate 作为 systemd 服务运行且 UFW 也处于运行状态后,你现在可以访问 Warpgate 的安装。

打开你的 Web 浏览器,访问服务器 IP 地址加上 8888 端口(例如:https://192.168.5.20:8888/),你将看到 Warpgate 登录页面。

输入默认用户 'admin' 以及你配置的密码。然后点击 Login 继续。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

以 'admin' 身份登录后,点击 'Manage Warpgate' 菜单。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

你现在应该会看到 Warpgate 用户仪表盘。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

至此,你已完成在 Debian 服务器上将 Warpgate 安装为 SSH 和 MySQL Bastion 服务器。你现在可以将你的服务器和 MySQL 服务器添加到 Warpgate 了。

添加 SSH 目标服务器

在本节中,你将把 IP 地址为 192.168.5.25、主机名为 'node1' 的 Linux 服务器添加到 Warpgate Bastion 服务器。为此,你必须将 Warpgate 的 SSH 公钥添加到你的目标服务器。

在 Warpgate 仪表盘上,点击 SSH 菜单,你将看到用于登录目标服务器的 Warpgate SSH 公钥和私钥。

将 SSH 公钥复制到你的记事本中。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

现在登录目标服务器,使用以下 nano 编辑器命令创建一个新的目录 '~/.ssh',然后创建文件 'authorized_keys'。

mkdir -p ~/.ssh/
nano ~/.ssh/authorized_keys

将 Warpgate 的 SSH 公钥添加到其中。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

接下来,回到 Warpgate 仪表盘,点击 Config 菜单,然后点击 'Add a target'。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

输入目标服务器的主机名,将类型选择为 SSH,然后点击 Create target。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

修改目标服务器的 IP 地址以及用于登录该服务器的用户。在认证方式上,选择 'Warpgate's private keys'。然后,你必须在 'Allow access for roles' 部分启用 'warpgate:admin' 角色。

完成后,点击 'Update configurations'。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

至此,目标服务器 'node1' 已添加到 Warpgate。你现在可以通过 Warpgate bastion 服务器连接到 'node1'。

运行以下 ssh 命令,通过 Warpgate bastion 服务器连接到 'node1'。在此命令中,使用的格式为 'role: server-name',其中 bastion 服务器 IP 地址为 192.168.5.10,端口为 2222。

ssh 'admin:
[email protected]
' -p 2222

输入 yes 确认并添加目标的 SSH 指纹。当提示输入密码时,输入 bastion 'admin' 用户的密码。

连接成功时,你应该会看到类似 'Warpgate connected' 的输出。并且你将登录到目标服务器 'node1'。

输入以下命令,验证你当前登录的服务器。你将看到你是通过 Warpgate SSH bastion 服务器登录到 'node1' 服务器的。

id
hostname

输出:

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

如果你查看 Warpgate Web 管理仪表盘,应该会看到你的 SSH 目标服务器的指纹。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

添加 MySQL/MariaDB 目标服务器

在本节中,你将把一个 MariaDB 服务器添加到 Warpgate bastion 服务器。在此之前,你将把 MariaDB 服务器配置为运行在私有/内网 IP 地址上,并创建一个用于远程连接的新 MariaDB 用户。

登录 MariaDB 服务器,使用以下 nano 编辑器命令打开配置文件 '/etc/mysql/mariadb.conf.d/50-server.cnf'。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

取消注释 'bind-address' 参数,并将其值改为你的内网 IP 地址。在本示例中,MariaDB 服务器将运行在私有 IP 地址 '192.168.5.25'。

bind-address            = 192.168.5.25

保存文件,然后编辑该编辑器。

输入以下命令以重启 MariaDB 服务并应用更改。重启后,MariaDB 应该运行在 IP 地址 '192.168.5.25' 上,而不是默认的 localhost。

sudo systemctl restart mariadb

接下来,以 root 用户身份登录 MariaDB shell,以创建并设置新用户。

sudo mariadb -u root -p

输入以下查询语句,创建一个新 MariaDB 用户 'appuser',并允许该用户访问 MariaDB 服务器上的所有数据库。同时,请务必修改以下查询中的密码。

CREATE USER 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' IDENTIFIED BY 'p4@@w0rd';
FLUSH PRIVILEGES;
EXIT;

接下来,你将在用于连接 MariaDB 服务器的机器上安装 MariaDB 客户端软件包。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

通过以下命令安装 'mariadb-client' 软件包。出现提示时输入 y 并按 ENTER 继续。

sudo apt install mariadb-client

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

现在回到 Warpgate 服务器,将工作目录切换到 '/var/lib/warpgate',然后将 Warpgate 的 TLS 证书复制到你的 MariaDB 客户端机器上。

cd /var/lib/warpgate/
sudo scp tls.certificate.pem tls.key.pem 
[email protected]
:/etc/mysql/

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

现在回到客户端机器,使用以下 nano 编辑器命令打开 MariaDB 客户端配置 '/etc/mysql/mariadb.conf.d/50-client.cnf'。

sudo nano /etc/mysql/mariadb.conf.d/50-client.cnf

将以下配置添加到 '[client]' 部分,以启用安全的客户端连接。

[client]
....
ssl-cert=/etc/mysql/tls.certificate.pem
ssl-key=/etc/mysql/tls.key.pem

保存文件,完成后编辑该编辑器。

现在在 Warpgate 仪表盘上,点击 'Config' 菜单,然后点击 'Add a target'。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

输入 MariaDB 服务器名称,将类型选择为 'MySQL',然后点击 Create target。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

将主机、用户和密码信息修改为你的 MariaDB 用户详情。如果你使用的是默认 TLS 证书,请务必关闭 'Verify certificate' 选项,然后在 'Allow access for roles' 部分启用 'warpgate:admin' 角色。

完成后点击 'Update configuration'。

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

MariaDB 服务器添加到 Warpgate 后,你现在可以通过 Warpgate MySQL Bastion 服务器访问 MariaDB 服务器。

在 MariaDB 客户端机器上,输入以下命令连接到 MariaDB 服务器。出现提示时,输入 Warpgate admin 用户的密码。

mysql -u 'admin#mysql1' --host '192.168.5.10' --port 33306 --ssl -p

连接成功后,你应该会看到类似 'MySQL [(dbname)]>' 的 MariaDB shell 提示符。输入以下查询语句,确认你正在使用的用户在 MariaDB 服务器上可用。

SELECT host, user, plugin, authentication_string from mysql.user;
SHOW GRANTS FOR appuser@'%';

输出:

如何在 Debian 上使用 Warpgate 搭建 Bastion 服务器

至此,你已通过 Warpgate MySQL/MariaDB Bastion 服务器连接到 MariaDB 服务器。

总结

在本教程中,你已在 Debian 11 上安装并配置了 Warpgate Bastion 服务器。你已将 Warpgate 配置为配合 systemd 和 UFW 防火墙运行。此外,你还将 Warpgate 配置为 SSH 和 MySQL/MariaDB Bastion 服务器,添加了 SSH 目标服务器,也添加了 MySQL/MariaDB 目标服务器。

考虑到这一点,你现在可以在 Warpgate Bastion 服务器上设置新用户、新角色并添加新的连接。你还可以通过单一集中的 Bastion 服务器来集中管理用户的连接和访问。要了解 Warpgate 的详细信息,请访问 Warpgate 官方文档。