V2ray+TLS+CDN打造安全的代理

释放双眼,带上耳机,听听看~!

0x01What are you 弄啥嘞~

       在日常的渗透测试过程中,经常会需要使用到代理进行收集啥的,最近了解到一个比较“安全”的代理方式:V2ray+TLS+CDN,轻松。话不多说,先来看一下数据流向的原理图:

从上图来看整个数据流向还是比较形象的,本地流量走websocket协议通过v2ray通道访问CDN,然后CDN将流量转发至自己的VPS(vps当然还是能翻墙的好),实际上是转发到VPS上的Nginx服务器,接着Nginx再次将流量转发至v2ray server,整个过程的流量有两次HTTPS打包过程。正常情况下,你不去通过其他方式泄漏VPS真实地址,也不使用国内的CDN服务商,那么在国内没人能知道你的VPS真实地址。 无论这个IP地址是否已经被xxx封禁,国内都可以通过它来科学上网。(除非CDN服务商被xxx干掉了)

乍一看,卧槽,牛*啊~

实际到底有多安全,仁者见仁智者见智吧!下面主要讲述一下搭建过程的一个主要思路以及一些避坑的要点,毕竟网上的教程还是五花八门的,东拼西凑,难免会遇到各种神坑。

0x02准备ing~

工欲善其事必先利其器,我们先把该准备的准备起来:

多说一句:没搭建过VPS的小伙伴建议放弃此教程,不然世界如此美好,为啥非要来折腾自己呢!

1、 一台外网Linux 服务器(建议购买搬wa工VPS,centos7,搬wa工连接:

https://bwh8.net/clientarea.php)

2、 一个免费注册的域名+Cloudflare(建议使用freenom,连接地址:

https://www.freenom.com/zh/index.html?lang=zh)

3、 一套Nginx服务器(参考链接:https://blog.csdn.net/laoguoyandong/article/details/80694329,也可自行搜索安装教程,这个网上很多,不加赘述)

4、 一个v2ray(server端+客户端 ,此处提供一个带GUI的客户端,版本为V2RayN-v2.19,也可自行搜索最新客户端下载,连接地址为:

https://github.com/2dust/v2rayN/releases)

0x03搞起ing~  

上面一章简单讲了一下需要的一些东西及使用链接,在下面搭建的过程中可能需要反复使用到上面的一些链接,祝好运!

     整个搭建的过程并没有特殊的顺序,我们可以分为两大块来进行:

  • 搭建使用TLS+CDN访问的Nginx站点(站点只需搭建好Nginx服务器即可,当然是否搭建一个狂拽炫酷的站来吸引更多的路人甲通过CDN去访问你的VPS就看个人爱好了,利弊请自行YY~)。

  • 搭建V2ray服务端,并进行Nginx转发websocket流量配置。

第一步,搭建Nginx:

成功购买VPS,并且确认版本是centos7(其他高于此版本的搭建过程略有不同,请自行测试)假如不会购买VPS,不要着急,请参考上一章红色字体部分。

搭建Nginx服务器:自行搜索或者参考上一章给出的链接so Easy~

安装成功后,访问自己的ip,出现如下界面即可(相关配置可以在后面一起改):

第二步,配置域名解析到CDN:

申请自己一个自己的域名,可以在上一章推荐的freenom进行申请,可以参考教程:https://www.jianshu.com/p/e02371079daa,这里需要提一下两个避坑的地方:

1、注册邮箱不一定要freenom的,自己的QQ邮箱即可。

2、发送注册短信时,可能会报错:一个未知的错误发生(英文)。这里可能就需要一个能访问外网的大佬帮你注册一下了,国内的网好像没办法注册,实在不行可以换一个域名注册商,国内的域名注册商也很多,自行搜索吧,目的就是要有一个能用的域名而已。

域名申请成功后,我们需要一个能免费使用的CDN,推荐注册使用Cloudflare,配置Cloudflare为域名添加DNS,然后去刚刚域名注册商的那个网站把刚才我们注册成功的域名解析到Cloudflare,具体步骤参考链接:https://www.cnblogs.com/bonelee/p/8670660.html。(如果还是不会,可以自行搜索:如何使用Cloudflare,如何解析域名)在配置Cloudflare的时候需要避坑的地方:

1、Network 中的 Websocket,必须开启。

2、DNS 中的对应域名的解析,必须套用 CDN,即黄色。

3、Crypto 中的 Require Modern TLS,必须关闭。

配置域名解析到Cloudflare成功后你再ping 你的域名 则发现其返回的IP地址已经不是真实IP了,而是CDN的IP地址了(成功隐藏了自己的真实IP)

第三步,生成域名SSL证书:

这一步主要是生成SSL证书后,在Nginx配置文件中增加启用证书的配置即可。可以完全参考:https://blog.starryvoid.com/archives/113.html。

只是简单的生成证书文件可用如下命令即可:

>>yuminstall epel-release

>>yuminstall certbot

>>certbot certonly --email admin@example.com --agree-tos--webroot -w /website/ -d example.com

PS:–email admin@example.com 代表生成证书的所有者邮箱,–agree-tos 代表自动同意使用协议,–webroot 代表使用 website 的方式验证域名,-w /website/代表站点根目录,-d example.com 代表生成证书的域名。

成功生成 SSL 证书时的提示如下:

证书文件生成以后,再在Nginx的配置文件(通常为nginx.conf文件)的server中添加如下配置:

listen 443 ssl;

server_name  www.example.com;

ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;

ssl_certificate_key/etc/letsencrypt/live/www.example.com/privkey.pem;

配置截图如下:

重启Nginx服务器后,访问https://x.x.x.x(你的VPS的IP地址)显示如下,表示启用SSL证书成功,此处使用IP地址访问是因为Cloudflare默认会为你的域名启用https协议访问,所以通过域名是无法判断自己VPS的SSL证书是否启用成功的。(致于TLS的版本可以在Nginx的配置中进行设置,此处不加赘述):

到此,一个通过TLS对流量加密,并且通过CDN隐藏真实IP的站点就算搭建成功了。

第四步,安装V2ray:

在安装v2ray之前,我们可以先修改Nginx的配置文件来为后面的转发v2ray流量做准备,同样还是在Nginx配置文件的server中添加如下配置:

location /tmp/ {     #/tmp/为v2ray流量转发路径,可以自定义为任何目录,只要跟后面客户端的转发路径保持一致即可

               proxy_redirect off;

               proxy_pass http://127.0.0.1:1234; #此处的1234为你的v2ray端口,请自己修改

               proxy_http_version 1.1;

               proxy_set_header Upgrade $http_upgrade;

               proxy_set_header Connection “upgrade”;

               proxy_set_header Host $http_host;

               proxy_intercept_errors on;

        }

配置截图如下:

修改好Nginx配置后,重启Nginx服务,访问https://yourdomain.com/tmp/(/tmp/为v2ray流量转发路径),显示如下,表示Nginx配置转发成功:

***到这里我们可以保证前面的步骤都是没有问题的了,所以后面即使出现各种开启v2ray无法翻qiang,各种v2ray报错的问题,也不需要修改前面的配置,基本可以肯定是后面在搭建v2ray的时候某个步骤出错了,如果实在找不出问题原因,可以无限次重装v2ray,亲测,重装大法好(v2ray的版本尽量使用新版本)!!!

使用如下命令安装v2ray服务端:

>>wget https://downloads.starryvoid.com/link/tools/v2ray/v4.50/v2ray-V4.50-Linux-x64.zip
>>wget https://install.direct/go.sh
>> chmod +x go.sh
>>./go.sh --local v2ray-V4.50-Linux-x64.zip
安装完成后,修改配置文件如下:
{
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbound": {
    "port": 1234,//此处端口需要与Nginx中配置的v2ray端口保持一致
    "listen":"127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "42dbbc35-d3c7-4236-a071-19ae079d3ec7",//此处uuid可修改,只需要和客户端保持一致即可。
          "level": 1,
          "alterId": 64
        }
      ]
    },
    "streamSettings":{
        "network":"ws",
        "wsSettings":{
            "path":"/tmp/"//此处的/tmp/为v2ray流量转发路径,可修改
        }
    }
  },
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  },
  "outboundDetour": [
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "rules": [
        {
          "type": "field",
          "ip": ["geoip:private"],
          "outboundTag": "blocked"
        }
      ]
    }
  }
}

主要修改内容有两处,一处 “listen”:”127.0.0.1″, 一处”streamSettings”: {“network”: “ws”,”streamSettings”: {“network”: “ws”,”wsSettings”: {“path”: “/tmp/”}}}。修改请注意换行要符合 json 格式。修改好配置以后,启动v2ray服务即可,如下图:

最后配置v2ray客户端,客户端相对简单,使用上面0x02给的客户端,按照readme操作后,打开v2rayN.exe,进行如下配置:

修改好配置以后,点击右下角的v2rayN配置,修改如下:

到这里后,打开Chrome浏览器,基本就可以愉快的玩耍了!

0x04后记~

写到这里基本上是结束了,但是还是想再强调一下避坑要点:

  • 使用freenom注册域名时,尽量使用能访问外网的网络进行注册,以防踩坑。

  • 使用Cloudflare配置域名解析时,先使用Cloudflare添加域名,再去域名服务商配置DNS解析。

  • 安装Nginx服务器时,在编译的时候一定要记得将SSL编译进去,教程中已经提到了,不然后面重启nginx服务时会报错。

  • V2ray服务端和客户端的uuid一定要保持一致,用了多次后可使用v2rayN客户端重新生成一个,同时替换服务端的uuid。

  • V2ray服务端的版本尽量保持较新的版本,不然莫名其妙的报错你会吃不消的。

  • 最后,祝各位小伙伴好运,少一点报错,多一点SUCCESS!

    声明:本文章来自团队成员辞令投稿,仅供安全爱好者研究学习,对于用于非法途径的行为,作者不承担任何责任。

    如果有想投稿的可以在公众号联系我,有技术含量的文章如果通过可获得稿费及加入我们的核心团队,成员大部分为各大公司安全负责人和安全行业专家,0day多多内部资料多多,欢迎来撩。


人已赞赏
安全工具

互联网安全创新大会2019 PPT分享

2019-10-11 17:04:05

安全工具

逐鹿安全沙龙-杀死密码

2019-10-11 17:04:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索