视频教程

youtube播放地址:https://youtu.be/wd2DpDyCN0c

自用专线机场推荐: https://b.m123.org
GIA高速VPS推荐: https://d.m123.org
家宽住宅VPS推荐: https://v.m123.org

教程代码

X-UI: https://github.com/vaxilu/x-ui

SSH端口转发: ssh -L 20000:127.0.0.1:20000 [email protected] -p 22

端口转发之后: http://localhost:20000

IP证书: https://zerossl.com

创建文件夹: mkdir -p ./.well-known/pki-validation

创建验证文件:

cat << EOF | sudo tee ./.well-known/pki-validation/替换.txt

EOF

临时HTTP服务器:python3 -m http.server 80

视频文稿(忽略)

上个月xray作者rprx发布了一个颇具争议的pr,强制要求web面板必须使用加密通道访问,不能使用http这种明文方式访问,未遵从此要求的面板将被移出Xray官方推荐列表,这种一刀切的做法引发了长达一个月的激烈讨论,目前已经接近尾声,本期就来复盘整个事件,并教大家如何解决这个长期存在的安全问题

先来完整的吃个瓜,事情起因得回溯到2023年的7月30号,有个叫不良林的youtuber发布了一个零基础节点搭建教程,为了确保零基础的小白用户能成功搭建,教程中使用了x-ui面板,并且通过http://ip+端口的方式访问面板后台,进行节点搭建操作

次日也就是2023年7月31号,xray作者在官方tg频道发布了一个针对 X-UI 的安全建议,表示昨天看了一个视频,其通过http访问面板进行配置的方式,会导致中间人gfw看到你的节点信息,很显然说的就是上面那个youtuber的视频,简单理解就是你访问xui面板进行的所有操作都是明文的,gfw能看到你在xui上干了啥,搭建了什么节点,包括节点的密码和私钥这些都能看到,所以xray作者建议大家通过ssh加密隧道或者配置https访问,并表示这是一个很严重的安全风险。
当时大部分人都不以为意,认为gfw没那么闲,自己也没被gfw监控的价值,我也做了回应,首先肯定了作者提出的问题确实存在,其次解释了这样做的原因是因为教程面向的是零基础纯小白用户,操作步骤应尽量做到最简单,当然我也意识到了明文http的问题,不过能看到我视频的人,我就默认他已经处于翻墙的网络环境里了,在这个前提下通过明文的http请求访问xui面板,数据已经经过了节点的加密,gfw看不到内容,所以我也觉得这并不是什么大问题

接着这个问题就被搁置了,直到今年的10月4号,有个Russia用户又把这个问题挖了出来,反映了各种web面板的默认配置会导致面板被别人扫描,并且扫描出来的大部分都还是使用http明文的方式访问面板,意识到问题比想象中更大之后,xray作者发布了一个pr,要求所有基于xray的web面板在公网上必须强制且只能通过加密通道访问,否则就从官方列表中移除推荐,
至此长达将近一个月的激烈讨论就此展开,具体讨论了啥大家就自己去看吧
简单总结就是反方表示没必要强制,只要提醒用户就好了,剩下的就让他自己选择,正方表示必须强制执行,如果提醒有用的话扫描结果就不会出现那么多http面板了。
最终结果是遵循了这个规定的web面板得以在xray官方推荐列表中保留,而没有遵循的面板则被移除了,其中就有我们熟悉的x-ui和3x-ui,之后3x-ui的作者发起了一个投票,最终有将近一半的希望保留http访问,可见分歧依旧很大,大家也可以在评论区留下你的看法

我还是之前的观点,你能看到我的视频就说明你已经在翻墙了,你访问面板大概率也是通过你的节点加密访问,但毕竟面板确实还是http的访问方式,如果你关闭了代理工具,或者在代理工具的分流规则是走直连的情况下访问面板,则还是存在安全问题,虽然我们无法保证绝对安全,但应该在力所能及的情况下保证相对安全,所以接下来就来演示一下怎么确保你的web面板不会使用明文http访问

我就以原版xui面板为例,已经停更很久了不推荐使用,我这里只是为了演示,你用其他面板的话也是同样的配置方式,这些用到的信息我会放在视频下方的说明栏,使用这条指令在vps上安装xui面板,设置面板访问端口为20000,安装完成之后,按照以前的教程是直接在浏览器里通过http的方式访问面板,但现在不可以这么做,因为http是明文的,我们得通过加密的方式去访问他,如果你当前翻墙的节点是可信节点,那么你可以通过你的节点访问xui面板,但如果你现在没有节点,那就可以通过当前vps的ssh端口转发功能实现加密隧道访问xui面板,这里填入vps的用户名,这里填入vps的ip地址,这里填入ssh的端口,默认为22,这里填写vps上xui面板的端口,刚才我设置的是20000,按你的实际填写,这里随便填一个本机的空闲端口,建议设置一样的20000,复制指令,打开本机命令行,注意是在这台windows电脑上执行指令,输入密码进行连接,连上之后,就能通过本机的20000端口访问xui面板了,打开这条localhost连接,成功进入了xui面板,好像我们的请求没有经过互联网,但实际上是经过了ssh加密隧道转发数据,所以中间人无法看到你在xui上做了什么操作,当你退出vps之后,这条ssh隧道就断开了,也就无法访问了,如果你是通过密钥登陆,可以在后面加入-i 然后填入密钥的文件路径,另外如果你只想做端口转发,不想登陆shell,可以在后面加入-N,这样就不会进入vps的shell了,面板又能通过ssh隧道访问了,但是每次登陆都要创建ssh隧道,感觉很麻烦,另外在默认配置下面板依旧通过http的方式暴露在公网,所以我们应该为其配置tls证书,考虑到不是所有人都买了域名,这里教大家申请免费的ip证书,进入这个网址,点击右上角的获取免费证书,输入邮箱和密码进行注册,邮箱不需要验证可以随便写,建议填写自己的邮箱可以收到提醒,点击下一步,点击创建新证书,在这里输入你vps的ip地址,点击下一步,选择90天,一直点击下一步,此时会选中免费方案,点击下一步,接着按照步骤执行,下载这个文件,等会要用到,接着在vps上执行这条指令创建文件夹,复制这个文件名,将这里替换掉,接着将刚才第一步下载的文件内容复制,粘贴到这里,复制整条指令到vps上执行,最后执行这条指令创建一个临时的http服务器,注意80端口不要被其他应用占用了,点击下一步,最后点击验证域名,不出意外的话此时就会给你的ip颁发证书了,显示成功,点击下载证书,将证书解压到桌面,通过sftp工具将证书上传到vps,可以通过realpath指令查看证书所在的完整路径,同目录下的这个private.key就是私钥,接着重新运行ssh端口转发,通过加密隧道访问xui面板,来到面板设置,在这里填入证书和私钥的文件路径,最后保存并重启面板,接着网页弹出了安全警告,则表明证书生效了,现在我们应该使用证书对应的ip地址直接通过公网使用https的方式访问xui面板,可以看到是正规CA机构颁发的有效证书,现在我们就能且只能通过https的方式访问xui面板了
另外套了tls之后只能保证数据被加密了,并不能防止被扫描,我们还需要为其配置路径,现在的面板默认配置都会为其配置路径,如果你用的面板没有路径,可以在这里随便输入一串字符当作路径,注意先复制保存,接着保存并重启面板,此时页面会弹出404错误,我们需要将刚才的路径放在这个位置,重新访问就能成功进入xui面板了,有了https和路径的加持,就可以解决本次事件中讲到的安全问题了,有个小遗憾是ip证书90天到期之后要再操作一遍证书申请,并且一个账号只能创建3个证书,你可以花钱解决,也可以多注册几个号,反正又不用验证有限,毕竟ip证书都免费,还要啥自行车。

最后修改:2024 年 11 月 05 日 08 : 24 PM