逆向思维实现家庭WinNAS安全外网访问:CDN去端口+HTTPS加密方案与那些被忽视的隐患

image

继上一篇 家庭流媒体解决方案-Jellyfin:我🈶独特的使用方法 - zfsjlll的自留地 折腾完流媒体后,我的 WinNAS 搬到了老家长期安置,由于网络环境以及运营商服务的变化.家宽从千兆变成了 300Mbps,没有了动态的公网 IPv4,于是就需要重新设计远程访问方案。
(之前方案可看 Cloudflare CDN开放端口 - zfsjlll的自留地

1.需求场景与痛点剖析

  • 家庭 NAS 远程访问的典型困境:
    • 动态公网 IP 的稳定性问题
    • 运营商封锁 80/443 端口的尴尬
    • HTTP 明文传输的安全隐患

模拟用户登录

1请求URL:http://vulnerable-site.com/login
2  表单字段:username=admin&password=123456

Wireshark 抓包 Http 报文,导致隐私泄露

1POST /login HTTP/1.1
2Host: vulnerable-site.com
3Content-Type: application/x-www-form-urlencoded
4Content-Length: 28
5
6username=admin&password=123456

2. 技术方案全景图

1[用户浏览器] --HTTPS(443)--> [CDN节点] --HTTP(自定义端口)--> [反向代理服务器] --> [WinNAS服务]

image

  • 关键技术组件说明:
    • CDN 当然是选择赛博大善人 Cloudflare,对个人站长非常友好,就是有一些技术门槛,都已经免费了,还要什么自行车(笑)
    • 反向代理不使用常见的 Nginx/Caddy,最近 Lucky 在 NAS 圈特别火,可以实现:软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun 内网穿透,cron,acme,阿里云盘,ftp,webdav,filebrowser。功能完全够用,而且对小白及其友好,图形化界面操作,官网地址:Lucky

3. 实战部署步骤

3.1 基础网络架构搭建
具体的部署教程可以上网搜索,这里只讲干货,全是进阶玩法。

  • 动态域名解析方案(Lucky 工具在 Windows 服务的静默部署)
  • 反向代理配置(依旧是 Lucky)
  • 除了 DDNS 和反向代理模块,还有端口转发,远程网络唤醒,网络存储(WebDav,FTP 等协议的服务器实现,我已经部署了 Alist,暂不需要)等超多实用功能可以探索,(类似于软路由 ALL IN ONE?我没部署过软路由,如有错误请指正)

3.2 CDN 层安全改造

  • 端口隐身术:通过 CDN 的「页面规则」实现 URL 重定向(以 Cloudflare 为例):
    1. 创建规则实现:*.yourdomain.com/* → 转发到 http://nas.yourdomain.com:yourport$1
图片描述
规则-创建规则
图片描述
模板-更改端口

自定义筛选表达式,第一条规则选择通配符匹配所有子域名,有个性化需求再添加规则,如图中 jellyfin 服务不进行重定向,以避免 "CDN 降速 "

表达式

最后给需要重定向的域名开启 " 小云朵 " 即可

image

  1. 开启 Always Use HTTPS 强制跳转
  • SSL 证书自动化:
    • 使用 acme 申请 Let's Encrypt 通配符证书
    • 证书自动更新
    • 如果申请证书失败,可能需要配置代理

3.3 攻击面收缩策略

  • IP 白名单强化:通过 CDN 防火墙限制源站访问(仅允许 CDN 节点 IP)

    1# Windows防火墙入站规则(管理员PowerShell)
    2New-NetFirewallRule -DisplayName "Allow_CDN_IPs" -Direction Inbound -LocalPort 8765 -Protocol TCP -Action Allow -RemoteAddress 173.245.48.0/20,103.21.244.0/22
    
  • 协议安全加固:

    • 禁用 TLS 1.0/1.1
      在 Lucky 中配置 TLS 最低版本限制为 TLS1.2 即可
    • 配置 HSTS 头

反向代理模块添加响应头

1add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

建议详细了解之后再配置 preload 选项,需要全部子域名都符合 HTTPS,而且一旦发现有子域名不符合 HTTPS(包含非公开访问的内部子域名),删除过程是非常缓慢而痛苦的。

4. 读者互动环节

  • 开放讨论:
    " 如果你有物理服务器资源,是否会改用 WireGuard 建立 VPN 隧道?为什么?"

5. 技术细节增强建议

  1. 流量伪装技巧:在 CDN 配置中添加伪装的 /health-check 路径,返回虚假的 404 页面迷惑扫描器
  2. 应对 fofa 等扫描器的威胁:配置反向代理默认规则为“关闭连接”,详细可参考:在Windows下使用lucky配置反向代理以实现较为安全的WEB访问 - 哔哩哔哩

参考资料(排名不分先后)

  1. HSTS Preload List Submission
  2. 如何在 Nginx 中启用 HSTS?-腾讯云开发者社区-腾讯云
  3. Lucky

知识共享许可协议
标题:逆向思维实现家庭WinNAS安全外网访问:CDN去端口+HTTPS加密方案与那些被忽视的隐患
作者:zfsjlll
地址:https://blog.002724.xyz/articles/2025/02/19/1739979453005.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    评论
    0 评论
avatar

取消