技术

Nginx伪装流量

This post is currently available in Chinese only. The original text follows.Open the Chinese page →

之前使用的nginx伪装流量,后来发现是有问题的,很快就被封了。 之前的思路是,机器保留443端口,然后使用ssr去链接跳板机的443端口,如果是ssr协议,就转发到本地的ssr服务,如果是http请求,就返回对应的页面。 这么做存在一个漏洞,所有经过443端口的流量都会被探测到,如果检测到ssr的特征,就会直接导致机器的端口被封,连不上。而443和80又是被检测的高风险端口

旧版伪装

我们可以通过以下的思路来限制 新版伪装 这里我们使用自定义端口,然后只允许通过国内的机器访问(nginx指定ip),这里我们在客户端连接的时候,连接的是国内的nginx暴露出来的端口,然后国内nginx再把流量转发到国外的nginx指定端口,国外nginx再把流量转发到本机的ssr服务,这样从外界看起来,直接简单的对nginx的访问,而且因为使用的是自定义的端口,除非是对机器所有端口扫描,否则是很难去探测到的。

对我们来说,实现这些东西,需要两台机器,一台国内机器,一台国外机器,并且都需要安装nginx,并且开放指定的端口访问权限,国外的机器需要安装需要转发的流量,如ssr。

国内nginx配置

stream {

   server {
   	listen 2134 ;         ## 这里使用自定义端口,需要机器开发端口的访问权限
   	proxy_pass xxxxxxx:3389;       ## 这里填写国外vm的域名或者ip地址 加端口
     }
}

修改完配置文件以后,记得使用命令重启nginx,让修改生效

nginx -s reload

国外nginx配置

stream {

	upstream local{
		server localhost:428;       //要转发到的本地端口,也就是ssr的监听端口
	}

	server{
		listen 3389;                //监听的端口,也就是国内nginx里面配置的转发的端口
		allow 172.xxx.xxx.141;       // 国内机器的ip,运行访问
    deny all;                    //禁止一切别的ip访问
    proxy_pass local;            //转发到本地
	}
}

ssr配置

ssr设置端口,然后nginx转发过来,具体配置依靠各自的ssr实现方式