Skip to content

为什么做敲门 knock

买 NAS 的人,初衷往往是把照片、文档和私有服务掌握在自己手里。可一旦将设备裸露在公网,它的性质就变了。对你而言那是家庭数据中心;但在自动化扫描器眼中,那只是一个处于活跃状态的 IP、一组开放的端口,以及一扇没关严的门。

敲门 knock 的初心从来不是“再造一个反向代理面板”或堆砌花哨的配置项。我们只为解决一个基础但长期被忽视的问题:在飞牛 OS 面向公网之前,先把防盗门装上,再谈访问体验。

飞牛裸奔近一年?不是开玩笑

如果认为“黑客离普通人很远”,2026 年初飞牛 fnOS 的安全事件足够打破这种错觉。

这并非停留在理论阶段的安全隐患,而是一条被完整利用的远程代码执行(RCE)攻击链。根据奇安信等安全团队的溯源分析,该漏洞源于飞牛 OS 的 /app-center-static 接口。攻击者无需任何身份授权,只需在请求中构造类似 ?size=../../../../ 的路径穿越载荷,即可绕过限制,直接读取系统任意文件。

更致命的是,攻击者通过提取 /usr/trim/etc/rsa_private_key.pem 等关键凭据,结合认证绕过漏洞,直接夺取了系统的最高控制权。后果显而易见:大量暴露在公网的设备被 Netdragon 僵尸网络批量控制,沦为 DDoS 攻击节点和挖矿肉鸡;部分恶意载荷甚至直接篡改了系统的 OTA 更新服务,阻断了官方补丁的分发。

真正令人后背发凉的,不是漏洞的利用原理有多精妙,而是攻击门槛已被降至极低。随着各种 1day exploit 工具在社区公开,普通用户根本来不及反应:前一天还在正常外网访问,第二天设备可能就已经沦为公开盲盒。

有人说,我开启飞牛的2FA认证呢?无济于事,漏洞之所以称之为漏洞是因为他不是从大门进来的,你就是10FA也无济于事,有人说,那我更新最新版不就好了,但你得知道,这次路径穿越漏洞实际上存在超过1年,或许还有很多尚未被发现的0day漏洞……

为什么雷池 WAF 并非 NAS 的最优解

雷池(SafeLine)是非常优秀的 WAF(Web 应用防火墙),核心能力是基于规则引擎拦截 SQL 注入、XSS、RCE 等 Web 攻击载荷。对于面向公众提供服务的网站和业务系统,它是绝佳的选择。

但家用 NAS 的公网暴露面治理,与“保护一个对外网站”有着本质区别。

NAS 遭遇的第一风险,不是某条业务 API 的参数没校验严,而是整个管理后台、各类私有服务接口根本就不该对互联网敞开。WAF 的防御逻辑是“允许连接建立,然后分析请求体是否包含恶意特征”;而 NAS 需要的防御逻辑是“除非证明你是主人,否则连系统入口的门把手都不能碰”。

面对飞牛这种基于特定业务逻辑的路径穿越漏洞,如果 WAF 没有针对性地紧急更新特征库,依然存在被绕过的风险,在实际使用中,它大约起到7到8成的作用。

不造成独占

市面上常见的异地访问方案,例如 TailscaleZeroTierEasyTierWireGuard,本质上大多是在做同一件事:先让设备加入一个虚拟私网,再通过这张虚拟网络去访问内网服务。这类方案并不差,很多时候也确实很好用;但它们通常要求在每一台使用设备上额外安装客户端 App,并创建一块虚拟网络接口,由这条 VPN 通道接管回家链路,甚至影响路由和 DNS 的工作方式。

这里所说的“独占”,不是说某个产品在商业上排他,而是说:一旦你要访问 NAS,就往往必须先进入它规定的那条虚拟通道。你的访问能力,被绑定在那个客户端、那块虚拟网卡、那套路由规则上。它不是“打开浏览器就能用”,而是“先加入这个私网,你才能用”。

这不是说它们不好。对于网络环境简单、也不依赖其他代理链路的人来说,这依然是成熟方案。可对中国大陆用户而言,问题恰恰出在这里。很多人日常还要同时依赖另一套代理软件处理跨境流量,回复 WhatsApp 消息、登录海外后台、处理跨境电商业务。一旦虚拟组网和代理软件在网卡、路由、DNS 或系统 VPN 权限上互相争抢,你就不得不来回切换。结果就是:想在外面访问家里的 NAS,先得停掉代理;而代理一停,海外业务又可能立刻中断。

敲门 knock 不走这条路。真正适合 NAS 的远程访问,不该以接管整台设备的网络栈为代价。我们不要求每一台客户端额外安装组网软件,不要求你先把设备塞进某个虚拟私网,也不要求你的手机或电脑把网络出口交给一条专用隧道。我们做的,是把公网入口收敛起来,把身份核验前置起来,让你继续用原本熟悉的浏览器、域名和端口访问方式,直接、安全地回到自己的服务。这样你可以一边在外面使用 NAS,一边继续回复 WhatsApp 上的客户,而不是在“访问内网”和“保住外网业务链路”之间二选一。

敲门 knock 的解法:身份验证前置与暴露面收敛

敲门 knock 的架构思路,是将信任边界彻底前移。

子域模式下,我们更推荐把飞牛和各类 Web 服务都组织到同一父域下,例如 auth.example.comfnos.example.comalist.example.com。所有子域先进入同一个 fknock 网关,再按 Host 分发到本地服务。这样既保留“公网直达”的简单链路,又避免继续裸露一堆原始端口。

反代模式下,所有外部流量必须经过统一网关。在触碰实际业务接口之前,必须先跑通完整的安全链路。

  • 登录前,阻断自动化探测的人机验证
  • 登录时,结合 TOTPPasskey 的高强度二次认证
  • 登录后,基于 Session 的严格生命周期管理
  • 叠加针对扫描行为的黑白名单自动封禁

直连模式下,我们仍然支持将公网访问收敛至独立的 7999 端口,在系统底层阻断外部对其他业务端口的直连尝试。用户完成身份验证后,系统才会通过动态白名单机制,放行当前受信任客户端的 IP。但它更适合少量必须保留原始端口访问的场景,不推荐作为多数新部署的首选。

我们不再去猜测某个 HTTP 请求“像不像攻击”,而是默认拒绝所有未经授权的连接。这种 Deny-by-default(默认拒绝)机制,从网络架构层面直接熔断了诸如 /app-center-static 越权访问这类漏洞的触发链。

这样的零信任机制的设计思维,使我们默认准备暴露出去的服务本身是存在漏洞的,基于这样的前提而设计的knock,我们能肯定及确信的说,即便你继续安装旧版本存在漏洞的飞牛OS,也仍然是安全的,

先过门,再谈访问

做这款产品,不是为了把 NAS 折腾得更复杂,而是因为我们深知,普通人不该一边提心吊胆地查漏洞、一边手忙脚乱地补规则。

一个承载着家庭核心数据和个人隐私的系统,默认就该配一把坚固的锁,而不是先把整栋房子敞开,再让用户去学怎么拉窗帘。

敲门 knock 的目标很直接:让飞牛 OS 暴露公网这件事,从“赌自己不会中招”,变成“先完成身份核验,再谈业务访问”。我们不追求实验室里的绝对安全,但至少要把 99% 的公网自动化攻击,彻底挡在门外。

很多人在 Lucky、雷池 WAF 上对着电脑折腾半天都未必能配好配强,但换成 fnknock,哪怕你手边只有一台手机,点几下也能办到,而且更安全,也更简单。

QQ群:1081609274