更新时间:2023-02-28 10:23:56浏览次数:780+次
本文介绍在Linux系统上安装和配置Warpgate的方法,安装后用户可以自由的使用Warpgate设置SSH和MySQL Bastion服务器。Warpgate是一种易于配置的服务,支持智能SSH、HTTPS和MySQL,此服务不需要任何特殊的客户端应用程序即可工作,一旦部署在Linux主机上,它将接受SSH、HTTPS和MySQL连接,并提供web管理UI。
安装和配置Warpgate的方法
1、在Linux上安装Warpgate
Warpgate可以轻松地安装在所需的Linux主机上,只需使用一个二进制文件即可轻松安装,无需依赖。最新的二进制文件可以从GitHub版本下载,下载地址在https://github.com/warp-tech/warpgate/releases。
您也可以从终端下载二进制文件。首先,导出所需版本:
ver=v0.7.0
在编写本文文时,最新版本为0.7.0。使用以下命令继续并下载导出的版本:
##For x86_64-linux
wget https://github.com/warp-tech/warpgate/releases/download/$ver/warpgate-$ver-x86_64-linux
##For arm64-linux
wget https://github.com/warp-tech/warpgate/releases/download/$ver/warpgate-$ver-arm64-linux
下载后,使二进制文件可执行:
chmod +x warpgate-*
现在将二进制文件移动到PATH:
sudo mv warpgate-* /usr/bin/warpgate
2、在Linux上配置Warpgate
一旦安装,Warpgate可以根据需要使用进行配置。如果要使用非默认配置文件(而不是/etc/warpgate.yaml),则需要使用--config <path>参数传递它。您还可以使用-database-url mysql://…或--database-url postgres://...使用内置SQLite以外的外部数据库。
在本文中,我们将通过运行以下命令来使用交互式设置模式:
sudo warpgate setup
如下所示:
08:49:56 INFO Welcome to Warpgate 0.7.0
08:49:56 INFO Let's do some basic setup first.
08:49:56 INFO The new config will be written in /etc/warpgate.yaml.
08:49:56 INFO * Paths can be either absolute or relative to /etc.
? Directory to store app data (up to a few MB) in (/var/lib/warpgate) › Press Enter
? Endpoint to listen for HTTP connections on (0.0.0.0:8888) ›
08:53:35 INFO You will now choose specific protocol listeners to be enabled.
08:53:35 INFO
08:53:35 INFO NB: Nothing will be exposed by default -
08:53:35 INFO you'll set target hosts in the config file later.
? Accept SSH connections? (y/n) › yes
? Endpoint to listen for SSH connections on (0.0.0.0:2222) ›
? Accept MySQL connections? (y/n) › yes
? Endpoint to listen for MySQL connections on (0.0.0.0:33306) ›
? Do you want to record user sessions? (y/n) › yes
? Set a password for the Warpgate admin user › ********
08:54:20 INFO Generated configuration:
sso_providers: []
recordings:
08:54:20 INFO Saved into /etc/warpgate.yaml
08:54:20 INFO Using config: "/etc/warpgate.yaml"
此时,您将在/etc/warpgate.yaml中生成一个配置。如果要删除或重新开始,请重新运行命令warpgate setup。
允许设置的端口通过防火墙:
#For UFW
sudo ufw allow 8888
sudo ufw allow 2222
sudo ufw allow 33306
##For Firewalld
sudo firewall-cmd --add-port=8888/tcp --permanent
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --add-port=33306/tcp --permanent
sudo firewall-cmd --reload
配置完成后,可以使用以下命令启动Warpgate:
$ sudo warpgate run
08:58:02 INFO Warpgate version=0.7.0
08:58:02 INFO Using config: "/etc/warpgate.yaml"
08:58:02 INFO -------------------
08:58:02 INFO Warpgate is now running.
08:58:02 INFO Accepting SSH connections on 0.0.0.0:2222
08:58:02 INFO Accepting HTTP connections on https://0.0.0.0:8888
08:58:02 INFO Accepting MySQL connections on 0.0.0.0:33306
08:58:02 INFO -------------------
08:58:02 INFO Listening address=0.0.0.0:2222
08:58:02 INFO Listening address=0.0.0.0:8888
08:58:02 INFO Listening address=0.0.0.0:33306
如果您在另一个目录中有配置,请使用:
sudo warpgate run --config <path>
您现在可以使用URL访问web管理UI,地址格式为https://IP_Address:8888/@warpgate/admin,如下图所示:
使用创建的用户登录,您将看到下面的仪表板:
3、为Warpgate创建系统服务
为了避免手动启动Warpgate服务,我们将创建一个Systemd服务。首先使用以下命令创建服务文件:
sudo tee /etc/systemd/system/warpgate.service<<EOF
[Unit]
Description=Warpgate
After=network.target
StartLimitIntervalSec=0
[Service]
Type=notify
Restart=always
RestartSec=5
ExecStart=/usr/bin/warpgate --config /etc/warpgate.yaml run
[Install]
WantedBy=multi-user.target
EOF
创建文件后,重新加载系统守护程序:
sudo systemctl daemon-reload
确保服务已停止,端口2222和8888上没有运行任何内容:
sudo killall -9 warpgate
在基于Rhel的系统上,修改SELinux:
sudo /sbin/restorecon -v /usr/bin/warpgate
现在启动并启用服务:
sudo systemctl enable--现在是warpgate
检查服务状态:
$ systemctl status warpgate
warpgate.service - Warpgate
Loaded: loaded (/etc/systemd/system/warpgate.service; enabled; vendor preset: enabled)
Active: active (running)
Warpgate使用方法示例:在Warpgate上添加SSH目标和在Warpgate上添加MySQL目标
1、在Warpgate上添加SSH目标
现在,为了能够使用Warpgate将SSH连接到其他系统,我们需要添加目标。Warpgate有自己的一组SSH密钥,目标主机必须信任这些密钥才能建立连接。可以在管理UI的SSH选项卡中查看密钥:
也可以使用以下命令从命令行查看关键点:
sudo warpgate client-keys
这些键按优先顺序列出。复制其中一个密钥并粘贴到客户端计算机上的~/.ssh/authorized_keys中。如果机器没有文件,请手动创建并添加密钥:
##在目标主机上
vim ~/.ssh/authorized_keys
在文件中,将复制的关键点粘贴到末尾并保存。
除了使用SSH密钥之外,您还有一种不建议使用的替代密码验证方法。
现在,在管理UI上,通过导航到Config > Targets > Add target来添加目标主机:
在下一页上,提供远程系统的用户名和IP地址:
更改完成后,单击更新配置。添加后,系统应显示在主页上,如图所示:
现在,要从Warpgate主机连接到远程系统,请使用具有以下语法的命令:
ssh admin:<target-name>@<Host> -p 2222
此处的值为:
Host:Warpgate主机。
Port:Warpgate SSH端口(默认值:2222)。
Username:admin:<target-name>,在本例中:admin:ubuntu11。
Password:您的Warpgate管理员密码。
要查看确切的连接命令,请单击添加的主机。例如:
ssh admin:ubuntu11@192.168.205.11 -p 2222
提供要进行连接的Warpgate管理员密码:
2、在Warpgate上添加MySQL目标
在继续此设置之前,请确保已安装的数据库支持TLS。在MySQL服务器上,您需要进行以下配置:
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
##或
sudo vim /etc/my.cnf.d/mariadb-server.cnf
在文件中,修改以下行:
[mysqld]
# localhost which is more compatible and is not less secure.
bind-address = *
tls_version = TLSv1.2,TLSv1.3
保存文件并重新启动服务:
sudo systemctl restart mariadb
通过防火墙运行服务:
#For UFW
sudo fw allow 3306
##For Firewalld
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
现在,您可以创建用于远程连接的用户:
sudo mysql -u root -p
使用以下命令包装用户:
CREATE USER 'sample_user'@'%' IDENTIFIED BY 'Passw0rd';
GRANT ALL PRIVILEGES ON *.* TO 'sample_user'@'%' IDENTIFIED BY 'Passw0rd';
FLUSH PRIVILEGES;
EXIT;
在要从中运行SQL查询的所需主机上,确保已安装MySQL客户端:
TLS:已启用。
明文密码身份验证:allowed。
还可以安装以下用于明文密码验证的附加软件包:
##On Debian/Ubuntu
sudo yum install mariadb-libs
##On Rhel/Rocky Linux/CentOS/Alma Linux
sudo apt install libmariadb3
我们在Warpgate服务器上为MySQL连接生成了证书,路径如下:
$ sudo vim /etc/warpgate.yaml
mysql:
enable: true
listen: "0.0.0.0:33306"
certificate: /var/lib/warpgate/tls.certificate.pem
key: /var/lib/warpgate/tls.key.pem
为了实现从客户端的连接,我们需要将这些证书复制到MySQL客户端。您可以使用SCP命令执行此操作:
##来自Warpgate服务器
cd /var/lib/warpgate/
sudo scp tls.* username@IP_Address:~/
在命令中,替换MySQL客户端的用户名和IP地址。复制后,将证书移动到MySQL客户端上的首选目录:
##在MySQL客户端上
sudo mv tls-* /etc/mysql
现在使用证书更新MySQL客户端配置文件:
sudo vim /etc/mysql/my.cnf
在文件中,添加以下行:
[client-server]
ssl-cert=/etc/mysql/tls.certificate.pem
ssl-key=/etc/mysql/tls.key.pem
tls_version = TLSv1.2,TLSv1.3
现在回到Wapgate管理UI,我们将使用几乎类似于SSH的步骤。导航到Config > Targets > Add target,然后设置目标名称和类型。通过提供主机、用户和密码来调整配置。在添加后,更新配置,它将显示在主页上。
经过以上配置,现在就可以使用URL连接到数据库,语法如下:
mysql://<username>#<target>:<password>@<warpgate host>:<warpgate mysql port>?sslMode=required
注:
Host:Warpgate主机。
Port:Warpgate MySQL端口(默认值:33306)。
Username:admin#<target>或admin:<target-name>,在本例中:admin#mariaDB。
Password:您的Warpgate管理员密码。
现在,可以从管理UI获取所需的URL或连接命令。可从Warpgate服务器连接到数据库,如下所示:
mysql -u 'admin#mariaDB' --host '192.168.205.2' --port 33306 --ssl -p
连接后,您可以在会话下的管理UI中查看日志了。至此,在Warpgate上添加MySQL目标完成。
经过以上设置,您现在可以建立到SSH、HTTPS和MySQL服务的安全连接了。
相关资讯