利用TLS为威联通NAS略微提高安全性

2021-12-13 13:10:13 15点赞 81收藏 23评论

追加修改(2021-12-13 13:39:57):
因为排版问题,Docker-compose的文件缩进格式乱掉了,重新发一下配置文件: Caddy方案下: Caddyfile: https://pastebin.com/vCL8fkQJ docker-comopse文件: https://pastebin.com/KpZuKj9d Sniproxy下: docker-compose文件: https://pastebin.com/PivZT8Cp

新人文章,请多多包含。

作为一个Nas的重度使用者, 个人对于数据安全性还是十分看重的。然而哪怕是白威联通或白群晖,一样会面临系统漏洞的风险,有可能使得数据被加密勒索。那么本文提供了一种设想方法,可能对于NAS的安全性有一定的提高作用。原理和使用方案如下:

原理

威联通最近的重大漏洞是2021年4月的Qlocker勒索病毒。其利用了Hybrid Backup Sync绕过登录,获得系统权限并进行加密操作。可以说只要你把威联通的Web页面公开到公网,就会受到攻击的风险。越是复杂的系统,越容易因为疏忽而产生各式各样的漏洞,也就容易被攻击,而NAS本身复杂的功能也带来了极大的风险,包括群晖在内的各种NAS系统每年爆出的漏洞数目多达数十个,可以说是防不胜防。那么除了日常更新系统,修补漏洞,备份数据之外,能否有些其他的方案来保护NAS系统的安全呢?

1. 最直接的思路是用简单系统替换复杂系统。

因为NAS的网页端要提供大量的功能,因此其自然风险较高,所以用其他简单的协议来“包裹”网页端,自然能降低一定的风险。因而相对而言最安全的举措就是搭建VPN系统,通过VPN连接回NAS,这样暴露在公网上的就只有VPN服务了。各大VPN的代码安全性相对还是值得信赖的,而各个公司大型企业也正是利用这种方法为员工提供远程工作服务的。然而VPN部署起来较为不方便,尤其是临时在一台非常用电脑上操作时,还可能要安装客户端等等,安全单麻烦。

2. 另外一个思路就是让黑客不知道你是台NAS。

简而言之,张三家有一台威联通的NAS,也将Web页面公开到了公网上。但是黑客李四既不是威联通的官方人员,也不是联通的运行商,他怎么能够知道张三有NAS从而针对性的发动攻击呢?

答案就是:IPv4 全网扫描。IPv4 一共具有2^32(4294967296)个地址,其中真正有效的更少,虽然看似数目庞大,但是在现在计算机以及基础网络来看,扫描这42亿个地址并不会花费多长时间。既然张三把Web公开到了公网上,那么扫描全网的李四肯定能够访问得到张三的IP,也就能发现他是一台有漏洞的机器。

所以如果你有ipv6网络的话,那么被扫描到的可能性就几乎没有了,2^128个地址空间,哪怕黑客的电脑冒烟了都找不到你的ip。但是ipv6还在推广中,很多公司内部还是没有v6地址,所以这种方案可行性也不高。那么我推荐另外一种投机取巧的方法,利用HTTPS协议(准确说是TLS)中的SNI扩展来“加密”连接。

SNI拓展又称服务器名称指示协议,即客户端在TLS协议握手的时候,告诉服务器他想要访问的是哪个域名。如果将ip地址比作你家(四合院)的大门地址,那么SNI就相当于东厢西厢前院后院。而我们正可以利用这个信息的不对等,来个黑客造成一定的麻烦。如果用户通过域名访问NAS的web页面,那么浏览器会自动的将域名放置在TLS中SNI部分,用这个信息去向服务器请求数据。而李四这一黑客则并不知道NAS的域名是多少,他只能直接访问ip地址,则他的连接请求不会携带域名信息。就此我们就可以区分正常的连接还是黑客连接,从而做出应对。

默认情况下,威联通之类的nas,对于不带域名直接访问ip地址的请求也是一视同仁,照常响应的。这也容易理解,毕竟NAS最常见的工作环境还是在内网,而内网往往就是直接通过ip地址来访问。所以我们需要搭建一个前端代理程序,检测外网发起的请求,如果发现不含域名的https连接,直接掐断,这样就能一定限度上组织黑客的攻击。当然,如果你的域名已经被泄露了,那该方案就没用了。

利用TLS为威联通NAS略微提高安全性

换句话说,这时候你的域名就相当于一个暗号,回答不上来你的服务器直接拒绝服务,甚至都不会返回给你任何网页数据,自然也就能够免疫扫描和部分攻击了。

实现

思路有了,实现的方案就有很多。可以利用工作在HTTPS层的Caddy程序,也可以利用工作在tls层的sniproxy程序,两种方案各有优劣,请大家自行选择。

HTTPS层 Caddy 方案

前置条件:

  • 已经注册过域名,例如 example.com

  • DDNS动态解析配置完成

  • 拥有自己的HTTPS证书文件,如 example.com.crt example.com.key

1. 在文件总管中创建一个名字叫做Caddyfile的文件,放置在某个文件夹下,如Public里,内容如下。

https://example.com:10443 {

tls /root/cert.crt /root/cert.key

reverse_proxy https://127.0.0.1:5001 {

header_up Host {upstream_hostport}

header_up X-Forwarded-Host {host}

transport http {

tls_insecure_skip_verify

}

}

}

:10443 {

abort

}

2. 上述Caddyfile文件的地址即为: /share/Public/Caddyfile 。将crt,key 证书也放在某一目录里,例如也放在Public中,则他们的地址为 /share/Public/example.com.crt 以及 /share/Public/example.com.key。

3. 打开Container Station,在创建中点击创建应用程序,输入以下内容,创建docker容器。

version: '3'

services:

caddy:

image: caddy:2.4.6

network_mode: host

restart: always

volumes:

- /share/Public/Caddyfile:/etc/caddy/Caddyfile:ro

- /share/Public/example.com.crt:/root/cert.crt:ro

- /share/Public/example.com.key:/root/cert.key:ro

利用TLS为威联通NAS略微提高安全性

4. 在路由器上关闭5000,5001的端口转发,打开10433的端口转发,将example.com域名指向你的公网IP。

测试从公网访问 https://example.com:10433 和 https://<<公网ip>>:10433 ,可以发现前者可访问,后者不可访问。

利用TLS为威联通NAS略微提高安全性

此方案优点:可以启用HTTP/2加速访问,可以使用自己的域名和证书,访问记录中的IP地址信息不会丢失,可以配置lets encrypt 自动续签证书,等等。

此方案缺点:相对复杂,需要有自己的域名和证书,myQNAPcloud不兼容。

TLS层 Sniproxy 方案

该方案利用的转发程序是 dlundquist/sniproxy: Proxies incoming HTTP and TLS connections based on the hostname contained in the initial request of the TCP session. (github.com)

前置条件:

  • 白威联通,myQNAPcloud 云服务正常工作,myQNAPcloud的证书正常,即通过 https://<<qnapID>>.myqnapcloud.cn:5001 可以正常访问Web页面。

1. 打开Container Station,在创建中点击创建应用程序,输入以下内容(记得更改example.myqnapcloud.cn为你自己的),创建docker容器。

version: '3'

services:

sniproxy:

image: austinchou0126/sniproxy

network_mode: host

restart: always

environment:

SNIPROXY_LISTEN0_PROTO: tls

SNIPROXY_LISTEN0_PORT: 10443

SNIPROXY_LISTEN0_FALLBACK: 127.0.0.2:0

SNIPROXY_TABLE0_SRC0: "^example.myqnapcloud.cn"

SNIPROXY_TABLE0_DEST0: 127.0.0.1:5001

2. 在路由器上关闭5000,5001的端口转发,打开10433的端口转发。

此方案优点:相对简单,无需自己的证书和域名,直接使用 myqnapcloud 的证书即可。

该方案的缺点:访问记录中的IP地址信息丢失。

总结及碎碎念

当然上述方案只是一个简易的探讨,能否真正的抵御黑客攻击还是未知数,真正的数据安全还是要靠3-2-1法则,多地备份容灾才是王道,哪怕用了NAS,备份也不可缺少。祝各位生活愉快,NAS能玩出花来。

如果此文反响不错的话,我可以发文详细讲讲docker-compose。说实话如果对Linux,Docker以及网络有着一定的基础,你会发现威联通的系统比群晖的可玩性高得多,当然配置的难度也大不少。所以威联通能送点啥给我不?虽然本文好像一直在吐槽它。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2266.51元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3099元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1766元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2399元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1099元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1667元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1587元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7100元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

1767元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1499元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1499元起

QNAP 威联通 TS-673A 6盘位NAS (V1500B、8GB)

QNAP 威联通 TS-673A 6盘位NAS (V1500B、8GB)

6250元起

QNAP 威联通 TS-h973AX 9盘位NAS

QNAP 威联通 TS-h973AX 9盘位NAS

6750元起

QNAP 威联通 TS-1655 十六盘位NAS(TS-1635AX升级版)

QNAP 威联通 TS-1655 十六盘位NAS(TS-1635AX升级版)

14500元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3399元起

QNAP 威联通 TVS-h674 6盘位NAS存储(i3-12100、16GB)

QNAP 威联通 TVS-h674 6盘位NAS存储(i3-12100、16GB)

13700元起
23评论

  • 精彩
  • 最新
  • 我就没遇到,第一,不要炫耀自己那所谓的顶级域名,第二不要泄露任何与ip有关的信息,第三,改用5位数以上的端口,最后不要对外开放常见的端口22.21这些。

    校验提示文案

    提交
    换端口也蛮不错,就是记得要把UPnP给关掉,要不然自动给你做端口转发就蛇皮了。

    校验提示文案

    提交
    威联通升级5.0就默认关闭upnp的了 [赞一个]

    校验提示文案

    提交
    收起所有回复
  • 我还是不开通外网访问吧。。。 [大囧]

    校验提示文案

    提交
    嗯,不开通最安全。

    校验提示文案

    提交
    收起所有回复
  • 验证时失败什么原因

    校验提示文案

    提交
    缩进的排版有问题,我发了追加修改,用那里面的文件。

    校验提示文案

    提交
    收起所有回复
  • 如果你的粉丝数多威联通应该会找你做推广吧,反正我帮他们找了一堆bug也没有,工单都提了一大堆 [邪恶]

    校验提示文案

    提交
    那肯定没戏 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 用了这个还能用反代吗

    校验提示文案

    提交
    caddy其实就相当于反代程序,去Dockerfile里类似修改即可

    校验提示文案

    提交
    收起所有回复
  • 两步验证暴力解决,总不能把手机偷了吧

    校验提示文案

    提交
    这个不行的,像qnap上次的漏洞也不并不是破解了你的账号密码,而是网页本身有一定的漏洞。举个例子,你给你家装了8超豪华的防盗门,但是窗户大开你家还在1楼,小偷直接绕着走了 。

    校验提示文案

    提交
    收起所有回复
  • 不用这么麻烦,如果你不随便在网上或给陌生人炫耀你的域名,那么把NAS对外开放的端口全部瞎改成5位数的,就可以达到99%的安全。

    校验提示文案

    提交
    因为黑客一般都是广撒网,扫描的都是常见端口号,比如威联通的5000,5001,win远程桌面的3389之类,只要不是有人专门抓着你的IP或者域名扫,你瞎改5位端口号基本是不会被扫到,黑客也就无法知道你的IP下有什么设备。

    校验提示文案

    提交
    yep,换端口安全性高很多。但是现在ipv4全网扫面实在是太快了。 参照github上massscan说明,单端口单机器扫全网大概只需要5min。那么单机器扫全网全端口大概需要230天。然后搞几百台机器扫全网就可以压缩到1天了。
    当然成本巨大,就我们的小数据也不值得黑客这么搞就是了。

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 为楼主点赞

    校验提示文案

    提交
  • 为楼主点赞👍,上回谁说的群晖是BSD的?还也是基于GNU/Linux的?

    校验提示文案

    提交
  • 什么都不说了,给楼主跪了 [喜极而泣]

    校验提示文案

    提交
  • 华硕、网件路由器都自带VPN啊

    校验提示文案

    提交
  • 都配置了 caddy 了,直接上mtls 岂不是更好

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
天猫超级红包
距结束::
每天领现金,最高24888元
红包按钮
最新文章 热门文章
81
扫一下,分享更方便,购买更轻松