不同中间件端口复用代理解决方案

请注意,本文编写于 423 天前,最后修改于 421 天前,其中某些信息可能已经过时。

前言

frp反弹确实很爽,但是很多时候这B服务器不出网,或者说动不动就被流量设备检测到了

linux下可以使用iptables做端口复用,windows下就没啥办法了。

除非你花一大笔钱找微软买个签名把驱动给签了然后做端口复用,这个土豪的方法我们先不提。

还有一个方法就是使用Neo这种类型的,挺好用的,但是有没有更快一点的方案?

比如。。。websocket?直接长连接?直接做到原生tcp的运行效率?

二话不说,开干!

iptables 端口复用

这里就随口提一下iptables端口复用

如果我们直接请求目标服务器的任意端口,只要能在netstat -anpt里面看到我们的请求IP,我们就能根据这个IP用iptables做一个端口转发

iptables -t nat -A PREROUTING -p tcp -s 我们的IP --dport 目标WEB端口 -j REDIRECT --to-port 转发端口

GOST

原本想动手写的,但是想了想还是不能乱造轮子,于是乎github稍微搜索了一番,愉快的找到了这个工具

项目地址:GOST

我们目标也很简单,就是听个websocket的代理,然后使用各种中间件中转,最后用本地代理,设置级联就行

项目里的功能正好符合我们的需要,我们只需要在远程服务器上,运行

gost  -L ws://:7000

然后在中间件各种配置,最后在我们本地使用

gost -L=:8080 -F=ws://远程web地址:远程web端口

就可以使用web端口复用走Web的,长连接的,websocket的代理了

Nginx中间件配置

nginx的配置挺简单的,一个端口转发就行

location /ws {
        proxy_redirect off;
        proxy_pass http://ws监听ip:本地ws监听代理;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 300s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

Nginx有个好,就是有热重载功能,直接一句nginx -s reload就行,至少不怕炸原本的业务

Apache

Apache修改的就有点多了, 得给配置文件添加模块引用。然而唯一有点安慰的就是,这玩意的模块是自带的。

先引用模块,有两个方案,直接用命令

sudo a2enmod proxy proxy_http proxy_ajp proxy_balancer mod_proxy_wstunnel.so

或者直接在你的conf里面添加,把上面这些模块都加进去

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so # 填写apache模块的绝对路径
....

然后写入代码

ProxyPass /ws ws://127.0.0.1:7000/ws

最后再service apache2 reload就行

IIS

windows就不大一样了,可以图形化点点点,也能命令行,啊,但是命令行操作我不会.jpg

应该可以用powershell解决,但是windows上其实非常滴麻烦,因为要手动安装两个模块,并不自带

所以推荐还是Neo或者IIS插件后门,除非你觉得管理员水平实在太差。

首先是启用Websocket,打开控制面板,启用或删除windows功能

1.jpg
1.jpg

选上Websocket
2.jpg
2.jpg

接下来就是安装ARR和URL REWRITE
安装ARR:application-request-routing
安装URL REWRITE:url-rewrite

然后配置ARR

3.jpg
3.jpg

4.jpg
4.jpg

5.jpg
5.jpg

点击启用就行

然后配置一个URL转发,找到你的项目吃,点击URL重写

6.jpg
6.jpg

咱们也不需要什么通配符,直接完全匹配GOST的ws就行

7.jpg
7.jpg

其他中间件

原理基本就是配一个websocket转发,大差不差

进阶

上面的ws全部应该都可以改成MWS,我看gost是支持多路复用的,虽然不知道实际提升有多大,但是听起来很牛逼,那就当它很牛逼就好了

还有一个就是ws的通讯协议没加密,可以考虑升级WSS,但是WSS配置又会遇到很多很麻烦的东西。最典型的就是证书啊证书啊证书啊。

还有一个就是gost的ws默认监听路由也得改一改,流量特征太大了。这些后续都要自己处理一下,避免实战中被发现。

添加新评论

评论列表