飞牛将停止远程服务!建议和我一起劫持「FN Connect」到 WAF
这几天飞牛OS 的 0day 漏洞闹得是沸沸扬扬,全网不少设备都中招了。
目前最新的消息,未升级到 v1.1.18 的 飞牛OS将暂停 FN Connect 远程服务。

但是仅仅升级到新版本,不能确保未来一定安全。
主要的原因是 FN Connect 的固定格式,比起自定义的 DDNS 更容易被人利用,而一些小白用户本身取名的方式也很容易被关键词枚举。
我随便找了几个 nasmynasfnfn-nashome 关键词的,真的是一找一个准,发现截至目前他们还没有升级系统修复这个漏洞。
🔻通过 WAF ,可以成功拦截 FN Connect 发起的流量

目前官方已经发布消息称 v1.1.18 已经修复了该问题,但也有消息称修复的方式仅仅是重置 nginx 配置(我实测的确会重置,但是否是修复方式不知道)。
对于我们普通用户而言,这次事件也为我们敲响了警钟,谁也不知道未来还会有什么事故发生。
所以建议大家做好 2 件事。
1️⃣ 尽量使用自建穿透或者组网,避免 FN Connect id 被枚举,减少暴露面;
2️⃣ 安装 WAF,利用现有的产品来防范一些未来可能发生的 web 层面的攻击;
一、转发FN Connect 流量
FN Connect 是飞牛官方提供的远程访问工具,它通过飞牛官方服务来访问当前设备的 fn webUI。
通过查看 Nginx,我们得知飞牛的 WebUI 包含:5666、5667、8000、8001,如果用户设置了 80/443 转跳的,还要加上 80/443。
它的大致路径如下:互联网发起服务,通过 FN Connect 连接到 NAS,NAS 通过本地高位端口流量转发到 webui(5666/5667,也许有部分8000/8001),将数据返回给 FN Connect 公网 80/443,再返回给用户。

由于 FN Connect 它会自动发现本机的 fn webUI 设置,并且自动进行转发,我们很难控制 FN Connect 的流量指向 WAF,来实现防护。

因此我们能做的,就是将 FN Connect 链接到本地设备之后,劫持它到 web 端口默认5666 的流量到 WAF,然后再通过 WAF 将流量转发回 web 端口。

经过测试,我发现 FN Connect 走的是本机的 iptables OUTPUT 链。
• PREROUTING:负责拦截从外面进来的流量。
• OUTPUT:负责拦截本机进程产生的流量。
因此我们需要通过 SSH ,来到终端增加 2 条 iptables 规则。

这两条规则里,就是将 5666 的流量,转发到 8182 上。8182 是我后续的 WAF 监听端口,大家可以修改为自己想要的。
# IPV4
iptables -t nat -A OUTPUT -s 127.0.0.1 -p tcp --dport 5666 -j REDIRECT --to-port 8182
# IPV6
ip6tables -t nat -A OUTPUT -s ::1 -p tcp --dport 5666 -j REDIRECT --to-port 8182
其实我的建议是大家关掉 IPv6,原因如下:
1. 如果你有 IPv6,建议使用 DDNS,千万不要走 FN Connect。
2. 雷池开启 IPv6 需要购买专业版。
3. FN Connect 优先走 IPv6 转发,如果雷池未开启 IPv6,我们的拦截会失败。

设置完成了以后,输入以下两条指令,看看规则起来没有。ip6tables -t nat -L OUTPUT -n -v 和 iptables -t nat -L OUTPUT -n -v 。
看到后面 tcp dpt:5666 redir ports 8182 就欧克了。

二、安装雷池 WAF
雷池 WAF 是目前比较推荐的免费 WAF,经过测试 9.3.2 版本可以拦截目前最核心的穿越路径漏洞。
不管是穿越路径,还是 websocket 漏洞,均属于Web 应用层攻击,而雷池 WAF 个人版的核心基础防护能力完全覆盖这类攻击,足够用了。

首先在飞牛的 docker 应用里增加速源,很好用的 1ms 就可以了。

接着切换到 SSH 界面,并切换到 root 权限(因为使用docker安装)。
输入一键部署指令,bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
脚本会让你输入一个安装路径(必须是新的),我这里选择的是 /vol1/1000/docker/safeline。

部署成功以后,会自动给出雷池 WAF 的前端访问地址。

先不急,先输入docker exec safeline-mgt resetadmin 重置一下管理员密码,一会登录。

复制刚才的 URL 到浏览器,登录的时候会报一个 SSL 问题,点开高级内容,选择继续访问。

进入雷池 WAF 以后,第一步就是先去改密码。路径是“通用设置 - 控制台管理 - 控制台用户管理 - 三个点 - 修改密码“。
条件允许的话,建议开始 TOTP。

接着来设置防护应用,新建一个应用。
端口这里删掉默认的 443,把 80 修改为我们刚才转发的 8182 (如果你换了别的这里也要换)。
下面的 上游服务器 填写你目前 飞牛的局域网访问地址。注意这里不能填写 localhost/127.0.0.1 ,必须使用局域网地址。

三、配置雷池 WAF
配置好了以后,下面的这些全部打开,先开默认的规则就行了。

接着点开详情页,开启最下面的访问日志和错误日志。

先配置身份认证,开启以后会经过一道雷池的身份认证,就算用了 FN Connect 的路径穿越也直接废了。

这里要设置一个新的账号密码,用于鉴权。

设置之后初次登录并且授权一下。

接着配置攻击防护,点开语义分析模块。

所有的模块全部拉到最高。

经过测试,如果是平衡防护的话,本次的路径穿越不会拦截,而选择高强度防护的话,雷池会自动拦截路径穿越。
🔻平衡模式下,不拦截路径穿越

🔻高强度防护模式下,直接拦截路径穿越

四、配置 iptables 规则永久保存
回到 SSH 界面,安装工具指令 apt-get install iptables-persistent。

会跳出来一个界面,直接选择左边的 YES ,未来系统开关机也不会丢失这个配置。

总结
最后还是提醒一句,安全无绝对。
尽管开启了 HTTPS、2FA、强密码等等,本次依旧可以通过 FN Connect 被攻击。
如果大家还想使用 FN Connect,但也害怕未来还有基于 FN Connect 的风险,这里纯粹单方面建议大家跟着教程操作劫持一下这个流量,在中间架一层 WAF。
其它的比如飞牛影视的 8005 端口,也可以通过这个方式劫持,在飞牛影视后也加一层 WAF 。
但毕竟我只转发了 WEBUI 的 5666 端口,不清楚 FN Connect 有没有其他的地方使用到了这个,所以可能会有不知名的 BUG。
所以虽然我建议大家这样做,但最后决定权在你们,本教程也不对后续可能会发生的任何 BUG 负责,文章仅仅抛砖引玉提出一个思路。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

Ro宾
校验提示文案
sarie001
校验提示文案
达尔文西
校验提示文案
cs14ilike
校验提示文案
小猪爱飞翔
校验提示文案
今天还买啥呢
校验提示文案
奈落_August
校验提示文案
BeflyOnline
校验提示文案
抱美人归
校验提示文案
020-奶爸
stun穿透搭建easytier组网
校验提示文案
喵娃
校验提示文案
Jimmy_Tiger
校验提示文案
[已注销]
校验提示文案
flying1861
校验提示文案
exross017
校验提示文案
册膊依
校验提示文案
缘亦如此
校验提示文案
Pantr0y
校验提示文案
圆爸爸
校验提示文案
zhaobin5252
校验提示文案
不穷但是我抠
校验提示文案
锅达达
校验提示文案
涩味绿茶
校验提示文案
无字添书
校验提示文案
vasilyl
校验提示文案
值友pro
校验提示文案
路辉
校验提示文案
Ro宾
校验提示文案
值友7371664610
校验提示文案
会飞的小猪头
校验提示文案
龘骉飝轟靐鑫森淼焱垚
校验提示文案
小愺
校验提示文案
rliu1981
校验提示文案
喵娃
校验提示文案
我不买我先看看
校验提示文案
U小生
校验提示文案
值友3813884829
校验提示文案
feirisu
校验提示文案
ml830917
校验提示文案
jywlys
校验提示文案