如何在 Debian 上使用 Warpgate 设置堡垒服务器
堡垒服务器是指专门设计和配置用于抵御计算机网络攻击的计算机/机器/服务器。堡垒服务器的功能类似于应用程序的代理或负载平衡器。它允许您访问位于 DMZ 网络中的计算机或服务器。
Warpgate 是一种现代解决方案,可用作堡垒服务器。它是用 Rust 编写的,并提供基于 Web 的管理仪表板。您可以将其安装在特定节点上,然后可以轻松添加位于私有基础设施上的目标节点或服务器。 Warpgate 目前可用作 SSH、MySQL/MariaDB 和 HTTP 的堡垒服务器。
在本教程中,您将使用 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 二进制文件。访问最新版本 Warpgate 的官方 GitHub 下载页面。
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
接下来,运行以下命令在系统上找到“warpgate”二进制文件。
which warpgate
现在验证 Warpgate 版本并列出“warpgate”命令的可用参数。
warpgate version
warpgate --help
您应该收到这样的输出。
将 Warpgate 配置为堡垒服务器
下载 Warpgate 二进制文件后,您现在将设置并配置 Warpgate 安装。这可以通过“warpgate”命令以交互方式完成。
执行以下命令将 Warpgate 配置为堡垒服务器。
warpgate setup
该命令执行后,会询问您以下配置:
- 您想在哪里存储扭曲门数据?将其保留为默认目录“/var/lib/warpgate”。
- Warpgate Web 管理仪表板的端点?将其保留为默认值,以在端口 8888 的内部/公共 IP 地址上运行 Warpgate。
- 接受 SSH 连接吗?输入 yes 启用 Warpgate 作为 SSH 堡垒服务器。
- SSH 堡垒服务器的端点?将其保留为默认值,以在端口 2222 的内部/公共 IP 地址上运行 SSH 堡垒服务器。
- 接受 MySQL 连接吗?输入 yes 启用 Warpgate 作为 MySQL 堡垒服务器。
- MySQL 堡垒服务器的端点?将其保留为默认端口 33306。
- 记录用户会话?输入 yes 启用它。
- 为默认用户 admin 设置密码。输入 Warpgate 安装的密码。
设置过程完成后,您应该收到如下输出。您还将看到在此过程中创建的 Warpgate 配置文件“/etc/warpgate.yaml”和数据目录“/var/lib/warpgate”。
现在运行以下命令来显示文件“/etc/warpgate.yaml”的内容以及“/var/lib/warpgate”上可用文件和目录的列表。
cat /etc/warpgate.yaml
ls /var/lib/warpgate
以下是将在您的终端上打印的输出。
现在执行以下命令来运行 Warpgate。您将看到输出“Warpgate is now running”,并为 SSH、MySQL 和 HTTP 连接打开 TCP 端口。
warpgate --config /etc/warpgate.yaml run
打开网络浏览器并访问端口 8888 的 Warpgate IP 地址(即:https://192.168.5.10:8888/)。成功后,您应该会看到 Warpgate 的登录页面。
返回终端并按 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
之后,验证Warpgate服务状态以确保该服务正在运行。
sudo systemctl status warpgate
下面的输出确认 Warpgate 服务正在运行。
如果检查服务器上的开放端口列表,您将看到多个端口 2222、8888 和 33306 处于 LISTEN 状态。运行下面的 ss 命令。
ss -tulpn
输出 :
设置 UFW
在本部分中,您将在 Debian 服务器上安装、运行并启用 UFW。您还将打开 Warpgate 使用的端口。
通过运行以下 apt 命令安装 UFW。
sudo apt install ufw
出现提示时,输入 y 进行确认,然后按 ENTER。
安装 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 将在系统启动时自动运行。
现在输入以下命令来验证 UFW 状态。您应该看到 UFW 的状态为“状态:活动”,并且具有 OpenSSH 服务、端口为 2222、8888 和 33306 > 添加。
sudo ufw status
输出 :
登录扭曲门
随着 Warpgate 作为 systemd 服务运行并且 UFW 运行,您现在将访问 Warpgate 安装。
打开网络浏览器并访问服务器 IP 地址和端口 8888(即:https://192.168.5.20:8888/),您将看到 Warpgate 登录页面。
输入默认用户“admin”和您配置的密码。然后点击登录继续。
以“管理员”身份登录后,单击菜单“管理 Warpgate”。
您现在应该看到 Warpgate 用户仪表板。
至此,您已经在 Debian 服务器上完成了 Warpgate 作为 SSH 和 MySQL Bastion 服务器的安装。您现在已准备好将服务器和 MySQL 服务器添加到 Warpgate。
添加 SSH 目标服务器
在本部分中,您将 IP 地址192.168.5.25和主机名“node1”的 Linux 服务器添加到 Warpgate Bastion 服务器。为此,您必须将 Warpgate SSH 公钥添加到目标服务器。
在 Warpgate 仪表板上,单击SSH菜单,您将看到将用于登录目标服务器的 Warpgate SSH 公钥和私钥。
将 SSH 公钥复制到您的笔记中。
现在登录到目标服务器,创建一个新目录“~/.ssh”,然后使用以下 nano 编辑器命令创建文件“authorized_keys”。
mkdir -p ~/.ssh/
nano ~/.ssh/authorized_keys
将 Warpgate SSH 公钥添加到其中。
接下来,移至 Warpgate 仪表板并单击配置菜单,然后单击“添加目标”。
输入目标服务器的主机名,选择类型为SSH,然后点击创建目标。
更改目标服务器IP地址和用于登录服务器的用户。至于身份验证,请选择“Warpgate 的私钥”。然后,您必须在“允许角色访问”部分启用“warpgate:admin”角色。
完成后,点击“更新配置”。
这样,目标服务器“node1”就被添加到 Warpgate 中。您现在可以通过 Warpgate 堡垒服务器连接到“node1”。
运行以下 ssh 命令以通过 Warpgate 堡垒服务器连接到“node1”。在此命令中,使用的格式为'角色:服务器名称',其中包含堡垒服务器 IP 地址 192.168.5.10 和端口 2222。
ssh 'admin:[email ' -p 2222
输入 yes 确认并添加目标的 SSH 指纹。当系统提示输入密码时,输入堡垒“admin”用户的密码。
连接成功后,您应该会得到诸如“Warpgate已连接”之类的输出。您将登录到目标服务器“node1”。
输入以下命令来验证您登录的当前服务器。您将看到您已通过 Warpgate SSH 堡垒服务器登录到“node1”服务器。
id
hostname
输出 :
如果您检查 Warpgate Web 管理仪表板,您应该会看到 SSH 目标服务器的指纹。
添加 MySQL/MariaDB 目标服务器
在本部分中,您将向 Warpgate 堡垒服务器添加 MariaDB 服务器。在此之前,您将设置 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”而不是默认的本地主机上运行。
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 客户端包。
通过以下命令安装“mariadb-client” 软件包。出现提示时输入 y,然后按 ENTER 继续。
sudo apt install mariadb-client
现在转到 Warpgate 服务器,将工作目录更改为“/var/lib/warpgate”,然后将 Warpgate TLS 证书复制到您的 MariaDB 客户端计算机。
cd /var/lib/warpgate/
sudo scp tls.certificate.pem tls.key.pem [email :/etc/mysql/
现在回到客户端计算机并使用以下 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 仪表板上,单击“配置”菜单,然后单击“添加目标”。
输入MariaDB服务器名称,选择类型“MySQL”,然后点击创建目标。
使用您的 MariaDB 用户详细信息更改详细主机、用户和密码。如果您有默认 TLS 证书,请务必关闭“验证证书”选项,然后在“允许访问”中启用“warpgate:admin” 角色角色”部分。
完成后点击“更新配置”。
将 MariaDB 服务器添加到 Warpgate 后,您现在可以通过 Warpgate MySQL Bastion 服务器访问 MariaDB 服务器。
在 MariaDB 客户端计算机上,输入以下命令以连接到 MariaDB 服务器。出现提示时,输入 Warpgate 管理员用户的密码。
mysql -u 'admin#mysql1' --host '192.168.5.10' --port 33306 --ssl -p
连接后,您应该会看到 MariaDB shell 提示符,例如“MySQL [(dbname)]>”。输入以下查询以确保您使用的用户在 MariaDB 服务器上可用。
SELECT host, user, plugin, authentication_string from mysql.user;
SHOW GRANTS FOR appuser@'%';
输出 :
至此,您现在已经通过 Warpgate MySQL/MariaDB Bastion 服务器连接到 MariaDB 服务器。
结论
在本教程中,您已在 Debian 11 上安装并配置了 Warpgate Bastion 服务器。您已将 Warpgate 配置为与 systemd 和 UFW 防火墙一起运行。除此之外,您已将 Warpgate 配置为 SSH 和 MySQL/MariaDB Bastion 服务器,添加了 SSH 目标服务器,还添加了 MySQL/MariaDB 目标服务器。
考虑到这一点,您现在可以设置新用户、角色,并向 Warpgate Bastion 服务器添加新连接。您可以通过单个集中式堡垒服务器集中用户连接和访问。要了解关于 Warpgate 的详细信息,请访问 Warpgate 官方文档。