群晖入门到进阶系列(完结):基本安全加固

  “No System Is Safe” – 《who am I》,群晖作为我们相对私人的小型服务器,在安全方面当然也要做一些考虑,上一篇我们已经讲到了关于数据存储方面的安全,这篇我们来聊聊一些基本的安全加固需要考虑的事情。尽管是本文作为群晖入门到进阶系列的完结篇,但是,在 Alliot 看来,安全从来都不是针对某一个单一的点能做到有效的,所以,文中所描述的应该是针对家庭或个人应用场景的一个面,而不是针对个人 NAS 这个点。当然,Alliot 并不是专业的网络安全从业者,网安的同学请忽略本文,或是轻点拍砖,多多指教。

路由器

  从前面的 群晖入门到进阶系列(二):DDNS与端口转发 收到的反馈来看,绝大多数同学都会有从外部访问家里的 NAS 的需求,所以,路由器作为我们的第一道防线,可能是我们优先要考虑的点(当然,这里可能会有歧义,有同学会说光猫才是,但光猫(本名光调制解调器)其主要的功能在于光电信号的调制与解调,在我们将其改成桥接后,我们能对它做的事情很少)。
当我们获得了公网 IP 后,我们的路由器便完完整整的暴露在了整个公网环境中,任何人都能够通过 IP 来访问到我们的路由器,Alliot 在此对其做了以下事情:

修改默认用户名与密码

  “弱口令,永远滴神” 。这是网安朋友常挂在口中的一句话,因为真的有很大比例的入侵是通过弱口令跑字典来达成的,它是最愚蠢,同时也是最有效的方法。所以,默认的登陆用户名与密码是一定要修改的,同时,密码也至少要做到含有大小写字母/数字/特殊符号/8位以上。

限制后台管理页面

  从类似 shodan.io 等类似搜索引擎可以看到,全世界有数以万万计的网络设备毫无防备的暴露在了互联网上,许多扫描机器人就是从类似的地方拉取 IP 列表来做定向扫描。如果你的设备暴露在公网以久,恰好你的密码又是弱口令,那么,很有可能已经光荣的成为了一台肉鸡。 因此,我们需要关闭外网(公网)访问路由器后台的权限,部分路由系统还能针对配置白名单仅允许指定 MAC 地址的设备访问,这里 Alliot 使用的还是前面说到的 H 大的 padavan:
群晖-padavan防火墙配置

禁用外部ICMP

  部分扫描工具会使用ping来探测存活主机与存活主机类型(不同类型的操作系统被 ping 响应默认返回的 TTL 值是不同的,因此,大致可以通过这个来判断操作系统类型),提高扫描效率,因此,Alliot 也将路由器的外部 ICMP 关闭了(即禁止被ping)。不同的路由器系统关闭 ICMP 响应的方式不同,padavan 在上面的图中部分是有关闭“响应外部 ping 请求的”,其他的路由系统如果没有,如果有 iptables 可以新增规则:

1
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
ssh/telnet服务

  首先,这两者是一定要关闭公网访问的,openwrt 系的路由系统通常都能在后台中关闭(如前面的图中,padavan 便可以),或是通过 iptables 限制。 其次,ssh 尽量使用密钥方式来验证。
群晖-padavan-ssh密钥登陆
最后,如果不是经常使用终端去操作,尽量是用完就关掉,尤其是 telnet。

加密隧道

  非必要对外服务,强烈建议打开路由器的微/P/恩服务器,通过加密隧道来访问。由于这些词汇都比较敏感,因此这里不做过多讨论。

端口映射

  首先,如果不是有独立的硬件防火墙,尽量不要使用路由器的 DMZ 来暴露你的设备(家里搞个几千上万的防火墙设备的同学,应该非常少吧),在一些家用路由器中,DMZ(非军事区)并不是真正意义上的 DMZ 隔离。而通常是指一部所有端口都暴露在外部网络的内部网络主机,相当于将你的这台主机直接丢到公网中。
我们一些必需对外的服务,正确的做法是通过端口映射/转发,将需要暴露的主机的某个端口映射出来,同时还要注意的是,尽量不要使用常用的端口。具体配置参考前面的群晖入门到进阶系列(二):DDNS与端口转发

Wi-Fi加固

  Wi-Fi 其实是很多人容易忽视的一个点,也是一个非常安全防护非常薄弱的点。作为无线接入点,设备连接 Wi-Fi 后,便进入了内网,如果不做隔离限制,内网中的所有设备均能被访问到,同时由于内网的加固通常较外网弱,一旦恶意设备接入,那它能够做到的事情就太多了(当然,攻击者可能并不是你的邻居,而可能是攻击你邻居的设备的攻击者)。
所以,Alliot 做了这些事:
使用较强密码: “弱密码,永远的神!”…..
划分访客网络与家庭网络:
  毕竟有朋友来做客的时候问你家 Wi-Fi 密码总不能不给对吧。划分访客网络与家庭网络,隔离访客网络和内网,并开启 AP 客户端隔离,这样,访客网络内的客户端便不能互相访问,也不能访问你的内网设备,同时还能方便的限速等。现在大部分的路由器都能够划分访客网络与家庭网络了:
群晖-路由器访客Wi-Fi配置
Wi-Fi关闭广播,隐藏SSID Wi-Fi 关闭 SSID 广播之后,首次连接的设备,只有手动输入 Wi-Fi 名称与密码才能够连接到Wi-Fi,否则你的Wi-Fi是无法被搜索到的,即使知道了你家密码也没用。这样就再也不怕大妈大爷手机上的万能钥匙将你家Wi-Fi密码分享出去了。
家庭Wi-Fi开启MAC白名单访问控制模式 这样别人即使知道了你家 Wi-Fi 名称与密码,也连接不上。
群晖-padavan-MAC白名单

定期重启路由器

  定期重启不仅能够释放运行过程中产生的内存碎片,释放资源,同时,重启后路由器会重新拨号,分配新的公网IP,还能够达到规避一些网络风险的目的。(试想一下,当你在试图对一个指定IP的服务做扫描,尝试密码,你马上快跑完你的密码字典的时候,它突然换了IP消失不见了,那你再去确认它的IP,继续尝试密码会不会加大你尝试出正确密码的难度)

群晖

  群晖本身其实对安全还是很重视的,群晖的系统工程师们对 DSM 在系统层面的安全加固其实做的很好了,白群晖能够定期升级系统当然是最好的,作为黑群晖用户,我们能做的其实不多,在遵守前面说到的路由的安全加固的情况下,我们需要关注的点主要集中在如下几点:

  • 对外提供服务的务必使用 HTTPS
  • 修改高危服务端口
  • 第三方服务通过容器来部署
  • 禁用无用的服务,局域网文件共享尽量不使用 smb,使用 SFTP 或 Webdev 等代替
  • 开启动态口令二次验证
  • 用户权限,目录权限规范
  • 开启操作系统防火墙,配置相关防火墙策略,IP 封锁策略,开启安全事件提醒

结语

  群晖这个系列算是拖了太久交了流水账一般的作业,有些东西写太多就显得太繁琐了,因此后面的几篇都是写的比较简略,省去了许多随便就能搜到的步骤。
  最后列一下 Alliot 后面升级的装备吧:

1
2
3
4
5
6
机箱: 6 盘位 itx 热插拔机箱,来自“星团科技”矿机  
主板: 豆希工控 b365 itx
电源: 益横 7030b 300W
CPU: Intel G4600
内存: 酷兽 16G DDR4
UPS: APC BR 550g CN 在线互动式

  大概说一下,这款机箱和蜗牛 C 款设计很像,不过,背板是满血背板,做工还是很到位的。之前捡漏 200 包邮到手。
  电源如果不是其他特殊要求的话,建议直接买全新的 益横7030b,单路供电,不用担心负载问题。
  CPU 本来是想上 i3 8100 但是奈何被炒的太高,G4600 核显是 HD630 对比 i3 8100 的 UHD630 差一点,不过基本够用。CPU 现在价格不同了,可以上 i5 8 代了,价格也还合适。
  说说主板,其实就是他们说的蜗牛 D 款变种版,这款工控主板 itx 尺寸,带了 6 个 SATA 口,2 个千兆网口,1 个 m.2 接口,可以说非常适合我这套方案了。当时是捡漏 300+ 到手的,成色与做工都还算可以。
  内存略过。
  UPS 还是很推荐买一个的,确实省心不少。Alliot 这台 br 550 是找的二手的机头(即不带电池的),到手自己买蓄电池更换的,成本不到 300。不推荐网红款的 BK650,性价比较低,而且为后备式(相较于在线与在线互动式,后备式的切换时间更长,当然也更省电),最主要的是占地大,而且丑。。。
下面是晒图:
群晖-益横7030b
群晖-豆希b365
群晖-大蜗牛

群晖-安全加固思维导图