介绍
GOST 是一个功能强大的安全隧道工具,支持多种协议和转发方式,适用于 Linux 和 Windows 系统。
在渗透过程中,常用于固定ip,转发流量等操作。
本文将不包含Gost做隧道转发操作的描述,仅为基础使用。
工具下载
- Gost(https://github.com/ginuerzh/gost/releases/tag/v2.12.0)
- aliyun云服务器(ubuntu22.24)
安装教程
方法1
在云服务上直接wget
wget "https://github.com/ginuerzh/gost/releases/download/v2.8.1/gost_2.8.1_linux_amd64.tar.gz"
方法2
首先通过主机下载相应云服务器版本的gost,然后通过xshell或者moba等工具进行传输
解压
tar -zxvf gost_2.8.1_linux_amd64.tar.gz
转移目录
一般情况,转移到 /user/bin下
mv gost_2.8.1_linux_amd64/gost /usr/bin/gost
这里习惯性转移到/opt下
mv gost_2.8.1_linux_amd64/gost /opt/gost
赋予权限
如果转移到了/user/bin下
chmod +x /usr/bin/gost
如果转移到了/opt下
chmod +x /opt/gost
使用教程
描述与前奏
在使用gost工具之前需要确保gost代理转发的端口的开放情况,由于个人因素无法登录进行更改安全组规则,所以用80端口进行代理转发
端口开放
描述
在使用gost的时候需要对安全组规则进行更改,其次是对防火墙端口开放进行更改
安全组由阿里云控制台进行修改即可。
防火墙开放则由以下命令:
sudo ufw status # 查看 UFW 防火墙规则(Ubuntu)
sudo iptables -L -n # 查看 iptables 规则
sudo ufw allow 8888
无密码
描述
在gost使用时可以添加密码,保证自己的代理不被别人使用,有一定的安全性,但是自己一个人使用的时候大可以将端口设置成不常用的,然后随用随开,不用就关,所以这里暂时只进行对无密码的描述。
在使用过程中有多种方法可以进行使用,但是各有优劣
1.直接运行
描述
直接用gost本身的命令使用,但是退出会话时会自动关闭
命令
cd /opt
./gost -L 0.0.0.0:端口
2.使用systemd服务(推荐)
描述
使用systemd服务可以有效的解决直接使用的弊端,是否退出会话对gost的使用不造成影响。
命令
创建服务文件/etc/systemd/system/gost.service
cd /etc/systemd/system
vim gost.service
填充服务文件
以下第7行为服务使用者,如果使用者没有足够的权限,则无法绑定1024以下的端口,所以这里设置了root。
以下第8行ExecStart为服务文件所在目录,可以按情况更改为/user/bin/gost,-L=:后紧接端口,对应原语句./gost -L 0.0.0.0:端口
[Unit]
Description=GOST Proxy Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/gost -L=:端口
Restart=always
[Install]
WantedBy=multi-user.target
重启system服务并启动gost服务
sudo systemctl daemon-reload
sudo systemctl enable gost
sudo systemctl start gost
查看gost日志(实时)
sudo journalctl -u gost -f
有密码
描述
如果需要密码配置保证不被外人使用,可以使用以下操作
1.直接运行
描述
直接用gost本身的命令使用,但是退出会话时会自动关闭
命令
cd /opt
./gost -L="http://user:pass@:8080" # HTTP 代理(用户名 user,密码 pass)
./gost -L="socks5://user:pass@:1080" # SOCKS5 代理(用户名 user,密码 pass)
2.使用systemd服务
描述
使用systemd服务可以有效的解决直接使用的弊端,是否退出会话对gost的使用不造成影响。
命令
创建服务文件/etc/systemd/system/gost.service
cd /etc/systemd/system
vim gost.service
填充服务文件
以下第7行为服务使用者,如果使用者没有足够的权限,则无法绑定1024以下的端口,所以这里设置了root。
以下第8行ExecStart为服务文件所在目录,可以按情况更改
[Unit]
Description=GOST Proxy Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/gost -L="http://myuser:mypassword@:8080"
Restart=always
[Install]
WantedBy=multi-user.target
重启system服务并启动gost服务
sudo systemctl daemon-reload
sudo systemctl enable gost
sudo systemctl start gost
查看gost日志(实时)
sudo journalctl -u gost -f
高级认证(多个用户,IP限制)
描述
gost支持auth配置文件,从而实现对多个用户或IP白名单的管理。
1.创建认证文件
新建/etc/gost/auth.txt
user1 pass1
user2 pass2
192.168.1.100 # 允许此 IP 无密码访问
2.启动gost加载认证
2.1直接运行
gost -L="http://:8080?auth=/etc/gost/auth.txt"
2.2使用systemd服务
创建服务文件/etc/systemd/system/gost.service
[Unit]
Description=GOST Proxy Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/gost -L="http://:8080?auth=/etc/gost/auth.txt"
Restart=always
[Install]
WantedBy=multi-user.target
重新加载并启动gost.service服务
sudo systemctl daemon-reload
sudo systemctl enable gost
sudo systemctl start gost
加密传输
描述
如果希望流量加密,可以结合 TLS 证书 和 认证
- cert.pem——公钥证书
- key.pem——私钥
其中分为三种情况:
- gost作为服务端时,需要将cert.pem转发给别人并信任证书
- gost作为客户端时,需要获取服务端的cert.pem并信任证书
- 双向认证时,客户端和服务端需要各自持有证书和私钥并交换公钥证书。
命令
user为账号,pass为密码/path/to/为公私钥的存放目录
1.直接运行
gost -L="https://user:pass@:443?cert=/path/to/cert.pem&key=/path/to/key.pem"
2.使用systemd服务
创建服务文件/etc/systemd/system/gost.service
[Unit]
Description=GOST Proxy Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/gost -L="https://user:pass@:443?cert=/path/to/cert.pem&key=/path/to/key.pem"
Restart=always
[Install]
WantedBy=multi-user.target
重新加载并启动gost.service服务
sudo systemctl daemon-reload
sudo systemctl enable gost
sudo systemctl start gost
good