我们的张三同学自从上一期知道了男人的三大玩具之一NAS后，也想搞一台自己的NAS，于是废寝忘食，经过不懈努力，终于搭建好了自己人生中的第一台NAS。上一期讲了NAS如何实现远程访问，评论区很多朋友也提出了自己的方案和建议，对文章内容进行了优化和完善。NAS如何实现远程访问(方法篇)文中提到的所有方案本质都是在将NAS的数据通过公网进行传输，那么这个过程必然就存在着风险，只是暴露风险等级不同，所以非常有必要对NAS的安全基线进行加固。本期接上期的序章，就以群晖NAS为例，继续给张三同学讲讲NAS的安全性保障问题。1. 非活动时间关机如果NAS上没有跑什么重要的不间断服务，可以根据自己的作息时间，设置夜间自动关机，早上自动开机。这样可以有效降低黑阔攻击的风险（尤其是歪果黑阔，俺们晚上人家白天，一睡觉他就要开始搞事情了），还能节省电费、延长机器寿命，另一方面还可以减少睡眠期间带来的噪音干扰，让张三同学睡得更香。2. 配置SSL证书，开启HTTPS访问因为涉及公网传输，信道是否安全是一个大问题，通过配置SSL证书，可以对数据包进行加密，防止中间人攻击，以保证流量的安全性。尤其是DDNS方案，从你输入账号密码登录NAS的那一刻，如果没有对数据包进行加密就开始传输，那么你输入的密码、查看和下载的文件、系统的配置等等，将全部在整个信道内裸奔，任何可以从这个信道中截获数据包的人都可以看到这些内容。可能有些朋友对上面的说法感受的不是很具体，那我举个荔枝，讲个小故事：张三看了这篇文章不信邪，他说哪有辣么多的毛病，坚决不给自己的NAS配置SSL证书。然后某一天下班，他开开心心的去天龙网吧包夜上网，半夜的时候突然想起了自己的NAS中还有很多学习资料，于是趁着夜深人静悄悄地远程登录了NAS...。但是很不巧的是，刚好上一个在这台机子上上网的是个物理黑阔，他上完网后顺手在这个机子后面接了个神秘的工具，可以对这台机子上的流量进行镜像复制，而这次张三的NAS密码也被截获了，于是张三的学习资料被疯狂外传，知道这件事情后的张三流下了悔恨的泪水，发誓再也不会给NAS不装SSL证书了...另外，对于异地组网方案，如果打洞失败，流量会进行中转，这个过程也有可能会存在中间人对已经失陷的节点流量进行截获。3. 开启防火墙这里防火墙分为两种——路由器防火墙、NAS防火墙(张三挠头ing.png)路由器防火墙主要是对入站的流量进行拦截，因为开通了远程访问，则需要严格对进入NAS的流量进行控制。这里还需要补充一点，如果是爱快路由器，一定要去安全设置-ACL规则中，开启防火墙，因为爱快默认是果奔的~！我这里设置了拦截IPv6流量入站NAS防火墙对于路由器不能自定义防火墙规则的，可以直接在NAS中设置，效果都是一样的。只不过NAS防火墙相当于第二道安全门，可以有效防止攻击进入到内网阶段时NAS直接失陷。这里防火墙最上面的规则优先级更高这里我主要设置了两条规则：一条是拒绝来自所有IP所有端口的流量进入NAS另一条是优先级更高的——允许本地IP 192.168.1.0网络的IP进行访问这里解释一下：因为我是用的是tailscale异地组网方案，远程访问群晖时，我们可以在日志中发现源IP是NAS本身，这个是由tailscale本身的特性和设置决定的，可以通过设置显示为源设备的IP，这个时候就要设置为tailscale网络中的可信设备IP了。另外如果没有使用这个方案，那就要根据需求来设置。4. 账号防爆破这是黑阔们最爱的也是最简单的公鸡手段，黑阔们通常会把一些泄露的密码库存下来，然后把网民们常用的密码按频次排个序，再把这些密码拿到张三的NAS上面去一个个尝试，这叫做密码爆破，然后因为张三不听劝总是喜欢设置一些简单的密码，这次又被攻陷了...然后黑阔拿着张三的这个密码，又成功登录了张三的支付宝，这叫做 装酷 (撞库)，但是发现张三太穷了，支付宝余额居然个位数，于是黑阔气鼓鼓地注销了张三的支付宝账号...所以张三同学不得不去下面这个界面打开账号防爆破功能：然后还开启了登录尝试失败次数过多，自动封锁IP的功能：同时他还发现这里有个防DDoS的功能，也顺便一起打开了。5. 双因子验证因为支付宝账号被黑阔注销了，导致张三女朋友收不了他蚂蚁森林的能量，于是一气之下跟他分手了，张三这次可狠狠的记住了教训，于是再三要求还要设置一些账号安全功能，于是他打开了账户双因子验证(2FA, Two Factor Authentication)，通过密码登录成功后，还需要输入动态密码口令进行验证，这样就算被撞库也不怕辣。这个功能需要有2FA软件的支持：谷歌身份验证器Google Authenticator微软身份验证器Microsoft Authenticator腾讯身份验证器1PasswordBitWarden...6. 关闭SSH、FTP、TELNET等不必要的服务张三同学也一样喜欢瞎搞折腾，所以上回在网上看到个教程说开启SSH可以设置个什么东西，但是搞完后又搞忘了关了，然后很不幸，又被黑阔攻击了...，所以张三同学提醒大家，一定要把这些不必要的服务给及时关闭掉。7. 设置异常事件通知张三说这个操作更骚，墙裂推荐给大家，虽然到此为止做了这么多防护，但是都是事先防护，每次做了辣么多工作，结果最后还是沦陷了，所以他要下决心设置一个功能——当出现安全事件时及时发邮件提醒。首先在通知设置中配置好邮件服务器，并发送一封邮件进行测试：然后，可以在规则中设置哪些事件发生后，会通过邮件通知。日志中心也可以设置一些通知规则：每秒日志数、日志等级、日志关键词，同样都会进行报警：8. 配备UPS张三做好以上的设置后，以为自己可以高枕无忧了，结果倒霉的张三又遇到了停电，突然的断电导致硬盘中的数据像灭霸一样随机丢失了一部分，重要的都不是丢失问题了，而是张三根本不知道哪些文件丢失了~！可恨！于是张三入手了一款UPS不间断电源，UPS串联在电源和NAS之间，平时UPS就默默的什么话也不说，然而在设备突然断电后，UPS就会以毫秒级别的速度，及时将电源补充上。平时UPS不工作，可是一到关键时刻就能够保命！张三力荐!9. 其他及时更新系统补丁物理安全：配备机柜，确保环境温湿度处于合适区间，并防止意外物理损害禁用guest、admin等默认账号延长日志留存周期，以供安全事件发生时开展溯源设置高强度密码：12位以上大小写字母+数据+特殊字符组合合理的权限分配(可能还会给家人分配NAS账号，遵循最小权限原则)10. 数据备份(3-2-1原则)这些方法都是在环境本身做文章，保证NAS的运行和数据安全，然而没有万无一失的安全策略，还必须要有一个兜底的法子——数据备份，这样无论是数据完整性、还是数据可用性受到破坏，都可以及时进行恢复。后续我将继续再出一篇以群晖为例的NAS数据备份策略文章。
男人的三大玩具：软路由、充电头和NASPS：为步入中年提前做准备但是当搭建了三大巨头之一的NAS之后，我们往往不会满足于现状，远程访问是我们会遇到的第一个大问题。这篇文章就来讨论一下，NAS应该如何远程访问，以及每种方法的优劣。注意，本文只是进行技术探讨，给出一个NAS远程访问的方法论，并不手把手展示全部技术细节，因为具体实现的方法多种多样，NAS的品牌也很多，没有一个统一的方法，网上也有很多教程，但是我会在关键地方给出必要的技术细节。如果有机会，后期我会考虑出几篇具体的技术实现教程。方案一 使用官方提供的远程访问服务对于一些成品NAS，官方是提供了自带的远程访问服务，数据通过官方的服务器进行传送。这种方案优点是快速、便捷且相对安全，适合新手用户和嫌折腾的用户。各家成品NAS的官方远程访问服务：群晖：QuikConnect飞牛：FN Connect威联通：myQNAPcloud铁威马：TNAS.online极空间：zconnect绿联：UGOS云服务但是，往往这些服务给的带宽很低，并且有可能收费。而且对于NAS DIY用户来说，这些服务更是无法使用到了。那么就止步于此了吗？对于拥有三大爱好的男人来说：方案二 家用宽带DDNS家中每年交着成百上千的宽带费用，怎么能够不利用起来！但是运营商分配的公网IP地址通常是动态变化的，我们无法得知下一次会被分配到什么地址。怎么办呢？我们可以使用DDNS服务（动态域名解析，Dynamic Domain Name Server），将域名动态地指向公网IP地址，当IP发生变化时，会即时调整域名解析到的地址。这种方案的前提：拥有公网IPv4地址，或者拥有IPv6地址拥有一个域名路由器或者NAS支持DDNS第一步 准备一个公网IP地址如果前期已经找运营商开通了公网IPv4地址，那就可以直接使用IPv4地址。如果没有也没关系，可以看下面的IPv6，也不建议去开通IPv4，现在运营商的公网IPv4地址已经不太好开通了，并且开通了会对家庭宽带的安全性造成威胁，所以不是很推荐使用IPv4。因为IPv4地址池较小(IPv4只有32位)，可以很容易被穷举出来，互联网上有大量的扫描器在24h不间断探测暴露在公网上的服务，即便有的运营商给的公网IP是动态变化的，但也可以很快被黑客们扫描到，进而发起攻击。那么如何查看是否支持公网IPv4地址呢？百度搜索IP：然后进入路由器，查看WAN口上的IP。如果两者一致，则证明本地获取到的运营商IP和出口IP一致，也就是拥有公网IP。在IPv6普及的今天，一般来说家用宽带都已经开通了IPv6服务，可以通过下面这个网址检测是否支持IPv6：https://www.test-ipv6.com/支持IPv6的界面显示如下：如果发现没有开通，可以找装宽带的小哥或者运营商咨询，有可能是光猫、路由器设置没打开或者不支持，也有可能是因为没给你开通IPv6，这里就不啰嗦了，网上也有很多开通教程。IPv6我是支持开通的，因为它对于网络环境的提升是有帮助的，而且IPv6地址池很大（IPv6有128位），很难被穷举出来，即便穷举出来了，IPv6会因为租期到了更换为下一个IPv6地址，并且大部分路由器的防火墙默认会对IPv6进栈流量进行拦截(iKuai路由器除外，默认全通)。第二步：配置DDNS首先在域名服务商处创建API密钥或者token。DDNS功能的可用途径：路由器自带的NAS自带的脚本如果你是WinNas，可以尝试我开发的这款基于腾讯云的DDNS脚本：https://github.com/vastroc/Win-DDNS注意：这种方案整体不推荐这种方案整体不推荐！无论是IPv4还是IPv6，只要暴露公网，都会对家庭网络造成很大威胁，虽然IPv6很难被穷举探测，但是使用DDNS服务后，就相当于直接告诉了别人自己的IPv6地址，具有极大的安全隐患。安全建议:防火墙设置仅允许特定地址和端口被远程访问修改NAS的默认端口号，尽量改到高端口，降低被扫描的风险开启双因子验证，防止账号被爆破开启爆破封锁策略方案缺点：将NAS直接暴露到公网对数据的威胁风险极高。家用宽带运营商会封锁80、443等常见端口。但是也不推荐使用这些端口，会增加被扫描的风险。如果使用IPv6进行映射，那么只能在支持IPv6的网络中实现远程访问。经测试，手机流量一般都是支持IPv6的。方案三：DDNS + VXN我们可以通过在直接暴露公网的基础上对NAS传输信道加密——套一层微批恩。好处是只需要暴露微批恩的端口，NAS的所有服务端口都在内网。该方案同样可以借助路由器、NAS或者脚本实现。可以使用的协议或服务：L2TP/IPsecWireGuardOpenVXN安全建议：使用安全性高的微批恩协议改用高端口启用UDP方案缺点：使用麻烦且还是直接暴露公网，综合体验不如方案四方案四：异地组网该方案是最推荐的，墙裂推荐！原因如下：不需要公网IP（但有IPv6更好），无需担心公网IP被扫描和泄露问题不需要将服务器直接暴露公网不需要在防火墙中开启服务端口不需要域名，没有额外开销安装和使用简单，有多端app可以将NAS作为出口节点，实现异地上网可以将NAS作为子网路由，实现对局域网内其他设备的远程访问常见异地组网方案：tailscale(推荐)、贝锐蒲公英、爱快SD-WAN、节点小宝、星空组网、飞鼠组网...群晖上使用tailscale的具体方法：登录tailscale官网，注册账号下载tailscale群晖版安装包：https://pkgs.tailscale.com/stable/#spks，然后从群晖套件中心手动安装tailscale进入SSH，启动tailscale：tailscale up从群晖用户界面打开tailscale套件，然后登录账号，并在tailscale网页后台中允许群晖设备加入网络在tailscale网页后台中设置密钥永不过期群晖任务计划中，新增用户定义的脚本，设置自动更新：tailscale update --yes(选)允许通过NAS访问局域网内其他设备：tailscale up --advertise-routes 192.168.xxx.xxx/24 --accept-routes=true然后在tailscale网页后台中对NAS设备启用Subnet routes 192.168.xxx.xxx/24(选)开启出口节点：tailscale up --advertise-exit-node然后在tailscale网页后台中对NAS设备启用Use as exit node选项官方文档：https://tailscale.com/kb/1131/synology后记以上所有方案本质都是在将NAS的数据通过公网进行传输，那么这个过程必然就存在着风险，只是暴露风险等级不同，所以有必要对NAS的安全基线进行加固，后面我会出一期NAS安全基线加固的基本方法。