0x01 前言
因公司业务需要有一个固定的IP作为统一的流量转发,但公司没有固定IP,于是本人在公网上搭建了一个代理服务器,用作公司内部服务器流量统一转发,但使用过程又遇到了问题:若使无认证代理,会被恶意利用,影响使用;若使用有认证的代理,先公司用的部分工具又不支持认证代理。为了解决该问题,提出了“内网代理(无认证代理节点)+公网代理(有认证代理节点)”二级代理模式解决方案。
0x02 方案一:Burpsuite+nps解决方案
Burpsuite:作为内网代理节点,nps:作为公网代理节点。
1、nps搭建
购买一台云服务器,作为公网服务器,搭建nps。本次部署的环境:IP:11x.xxx.xxx.x58,ubuntu20.04。
(1)nps简介
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
项目地址:https://github.com/ehang-io/nps
(2)下载nps服务端
#wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
下载完成
(3)nps服务端安装
解压到nps目录:
# mkdir nps && tar -xvf linux_amd64_server.tar.gz -C /root/nps
nps服务端安装
#cd nps && ./nps install
(4)nps服务端配置
安装后的nps配置文件在/etc/nps/conf目录
# vi /etc/nps/conf/nps.conf
配置完成后,运行nps服务端
# nps start
浏览器访问:http://11x.xxx.xxx.x58:xx80
(5)nps web管理配置
新建客户端(代理客户端):客户端->新增
填写Basic 认证用户名、密码等内容,
最后点击“新增”
配置socks5代理:socks代理->新增
填写客户端id和服务端口,客户端为id为新建的代理客户端id(即2)
最后点击“新增”
(5)npc客户端下载
下载nps客户端
#wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
解压
#mkdir npc && tar -xvf linux_amd64_client.tar.gz -C /root/npc
(6)运行npc客户端
查看客户端唯一验证密钥
运行npc
#cd npc && ./npc -server=11x.xxx.xxx.x58:xx24 -vkey=mmsarsnnuftecg59 -type=tcp
(7)测试
(5)安全组/防火墙配置
在云管理平台上配置安全组/防火墙,放开:桥接端口(如:8024)、代理端口(如:8088)等等。具体根据需求而定,但web管理端口不建议放开。
2、Burpsuite配置
(1)Burpsuite本地代理
跟平时设置 Burpsuite 代理是一样的:打开ptions->Proxy Listeners,设置为:127.0.0.1:8080
(2)设置上级代理
打开Burpsuite->User options->Connections->SOCKS Proxy -> Add
配置如下:
(3)测试
0x03 方案二:gost多级转发解决方案
1、gost简介
gost是一款由go语言实现的轻量安全隧道,全称Go simple tunnel。功能较为丰富,支持组建代理链路。
项目地址:https://github.com/ginuerzh/gost
2、一级代理节点(公网代理节点)
下载gost:
#wget https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz
解压:
gzip -dk gost-linux-amd64-2.11.5.gz
重命名和赋权
mv gost-linux-amd64-2.11.5 gost && chmod +x gost
(1)普通代理应用
运行:
#./gost -L=admin:123456@:6088
(2)使用tls加密代理(服务端和客户端均需要配置ssl证书)
服务端配置:
A.制作证书
创建根证书
#openssl genrsa -des3 -out rootCA.key 4096
Ps:如果不需要设置密码,删除-des3选项即可。
创建自签名证书
# openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
创建私钥证书
# openssl genrsa -out key.pem 2048
创建公钥证书
# openssl req -new -key key.pem -out cert.pem
B.运行服务端
# ./gost -L socks5+tls://admin:123456@:6089?cert=./cert.pem&key=./key.pem
客户端配置:
A.制作证书(同服务端制作)
B.运行客户端
#./gost -L=:6089 -F=socks5+tls://admin:123456@11x.xxx.xxx.x58:6089?cert=./cert.pem&key=./key.pem
3、二级代理节点(内网代理节点)
(1)普通代理应用
同样的方式在二级节点服务器上部署gost。
运行:
#./gost -L=:6088 -F=socks://admin:123456@11x.xxx.xxx.x58:6088
(2)使用tls加密代理(服务端和客户端均需要配置ssl证书)
略:见上一级。
4、测试