如何增强智能家居设备的安全性

智能家居设备,现在已经不是什么「新鲜事物」。在市场上,我们能够看到各种各样的智能家居设备,例如扫地机器人、空气净化器、监控摄像头、智能插座、智能音箱……

当家中的联网设备越来越多,你是否会想过,这些设备可能会给家庭网络带来安全风险?

智能家居设备会带来哪些安全性问题?

那么,为什么智能家居设备会给家庭网络带来安全风险?这些设备会带来哪些安全方面的问题?

首先,设备接入家庭网络后,就有能力做到扫描网络中的所有设备,收集家中手机、电脑、路由器等的品牌、型号,以及家庭的地理位置1,用于数据分析,或者精准推送广告

另外,在软件开发过程中,开发者可能会因为编码疏忽、方便调试等原因,或者引用的第三方 SDK 有问题,有意或者无意地为设备引入后门或漏洞。尤其是软件开发流程不规范的小团队,更有可能给设备带来漏洞。

其中一部分漏洞会使设备绕过 NAT 或防火墙的保护,直接暴露在公网。例如某品牌手机的「快应用」实现,就通过 UPnP,将 55555 端口映射到公网,导致手机能被 Internet 上的所有设备访问:

设备上的漏洞还可能会被黑客利用,用来做为跳板,扫描、攻击内网设备,或者用于对外发起 DDoS 攻击:

还有黑客会利用设备上的漏洞,进行「挖矿」等活动,或者将设备作为 PCDN 节点,占用设备的 CPU、存储、带宽等资源,降低设备寿命:

对于监控摄像头(包括带摄像头的电视机)、智能音箱等设备,如果存在漏洞,理论上黑客能够利用漏洞,「偷看」或者「偷听」家中的画面和声音,严重威胁我们的个人隐私:

对于带有存储功能的智能设备,例如摄像头、NVR、NAS,漏洞还可能导致数据泄漏或丢失

另外,对于带有云服务的智能硬件,云服务也有可能存在漏洞,或者运维的过程中出现失误,导致隐私泄漏:

如下两篇综述,对智能家居设备、物联网操作系统的安全性问题进行了全面的整理:

如何提高智能家居设备的安全性?

使用重视安全的厂商的智能家居设备

在我们选用智能硬件时,尽量选用大公司、或者重视安全的公司的产品。

大公司的产品,用户量相对较大,更容易受到安全研究人员的关注。这使得安全漏洞更容易被暴露出来,并得到修复。

下图是 Apple Product Security 邮件列表中的一封邮件,可以看出,在软件更新中,Apple 解决了一系列第三方研究机构上报的安全问题:

Apple Product Security 邮件

相对来说,大公司的软件开发流程也会更加规范,会有完整的开发、代码审查、测试等步骤,对于安全问题的响应也会更及时2

接下来是一些小技巧,通过这些技巧,读者可以粗略判断出一家公司是否重视安全:

首先,可以观察一下厂商官网上,是否有漏洞反馈页面,或者安全奖励计划页面。虽然有这些页面并不完全代表厂商重视安全,但还是能一定程度上看出厂商对安全问题的态度:

此外,还可以查找厂商是否提供安全白皮书,并阅读白皮书中的内容。重视安全的公司,一般会将自己的产品如何保护用户的安全与隐私,详细在白皮书中描述:

还可以阅读厂商的软件更新日志,观察安全漏洞修复的及时程度。另外,部分厂商还专门提供有安全漏洞更新的邮件列表,或者安全预警邮件,及时通知用户如何解决安全漏洞:

正确设置路由器,避免设备暴露在公网

家用路由器中一般运行有 NAT,能够避免内网设备被外网访问。这样,攻击者很难从外网直接访问家中的智能家居设备,大大减小了漏洞被利用的可能性。

但是,如果路由器设置有误,例如将智能家居设备设置为 DMZ 主机,或者错误设置了端口转发规则,仍会有可能让设备暴露在公网。

建议定期检查路由器中 DMZ、端口转发等设置,并删除错误配置。

设置防火墙,阻止设备访问 Internet

如果路由器设置正确,不将设备暴露在公网,智能家居设备就难以被外界攻击,安全性大大得到提升。

但是,智能家居设备仍然可以访问 Internet,连接设备厂商的服务器。阻止智能家居设备访问 Internet,能避免厂商通过智能家居设备收集家庭网络中的隐私数据,也能避免厂商服务器被攻击时,家中的智能家居设备被黑客控制。

路由器中的「防火墙」或「家长控制」功能,可用于阻止内网设备访问 Internet:

当然,阻止设备访问 Internet,也会带来一些不便之处,例如不能使用厂商的 App 进行远程控制、无法实现高级自动化功能等。针对这些问题,可考虑控制设备的在线时间:例如对于摄像头,可通过脚本,实现有人在家时禁止联网,只有家中无人时,才允许摄像头联网,从而一定程度上取得安全与便利的平衡。

也可以考虑使用 HomeKit、Home Assistant 等工具,实现远程访问家庭设备,具体请参考下文中的介绍。

使用 HomeKit

HomeKit 是来自 Apple 的智能家居平台。与 Google Home、米家等其他厂商的智能家居平台不同,HomeKit 的实现方式比较「另类」,所以在此处单独进行介绍。

大部分智能家居厂商都提供了「云服务」。智能家居设备和手机 App 连接到厂商服务器,实现了出门在外时,也能通过手机 App 控制智能家居设备。

但这样的云服务大多没有实现「端到端加密」。也就是说,手机和智能家居设备之间传输的数据,在服务器上是以明文形式存在的。如果设备厂商的内部管理不严格,运维人员就能看到这些数据。

非端到端加密,数据在服务器上以明文形式存在

而 HomeKit 实现了端到端加密,手机 App 和 HomeKit 家庭中枢之间通信的数据全程保持加密,在服务器上也不会解密 ,安全性更高。

端到端加密,数据在服务器上保持为密文

此外,HomeKit 有如下两个功能,能够提升智能家居的安全性:

其中一个是 HomeKit Secure Video

当用户购买 iCloud+ 后,HomeKit Secure Video 能将能 10 天内的摄像头录像存储在 iCloud,不额外占用 iCloud 存储空间。摄像头录像在 iCloud 中同样受到端到端加密的保护3

另一个是  受 HomeKit 保护的路由器

HomeKit 通过一种相对安全的方式,实现了外网访问家中的智能家居设备。所以,使用 HomeKit 之后,就可以按照上文中的介绍,阻止智能家居设备访问 Internet,进一步提升安全性,而不会牺牲太多便利性了。

如果有支持 HomeKit 的无线路由器,这一步的操作会更加便捷。HomeKit 能自动设置路由器,阻止智能家居设备访问 Internet,无需用户手动修改复杂的防火墙规则。同时,HomeKit 路由器还支持 PPSK 认证,避免泄漏主 Wi-Fi 密码。

目前,支持 HomeKit 的智能家居设备数量较少,且价格偏贵。可考虑使用 HomeBridge,让更多第三方设备接入 HomeKit:

当然,HomeKit 并不能保证绝对的安全。不少智能家居设备,除了支持 HomeKit,也提供了自己的 App。通常情况下,设备厂商自己的 App 会提供比 HomeKit 更加丰富的功能,但不一定能提供与 HomeKit 相同等级的安全性。

另外,HomeKit 是闭源软件,HomeKit 基础设施也由 Apple 控制,而不是由用户控制。理论上 Apple 可以私下改变 HomeKit 的实现方式,而不提前通知用户。至于是否应该信任 Apple,就需要读者自行判断了。

自行搭建 Home Assistant

对于不使用 Apple 设备、或者不信任 Apple 的用户,还有另外一种选择:Home Assistant。

Home Assistant 是一个开源的智能家居平台,可以搭建在 NAS、Raspberry Pi 或者高性能的无线路由器4上。通过 HomeBridge,可以实现对智能家居设备的集中控制,以及智能家居设备的跨厂商、跨平台自动化。

将所有智能家居设备接入 Home Assistant 之后,只需要通过安全的方式让 Home Assistant 可被外界访问5,就可以阻止智能家居设备访问 Internet,统一使用 Home Assistant 控制智能家居设备了。

选购支持 ONVIF 等开放协议的摄像头,并将监控录像存储在本地

对于监控摄像头,也有不少厂商提供了云服务,可以将监控录像存储在云端,方便视频回放和远程访问。

但是,如果厂商的云服务没有采取正确的加密措施,或者存在安全漏洞,可能就会导致监控录像泄漏。如果担心这样的问题,最好的办法,就是将视频存放在本地。

很多 NAS 都拥有强大的摄像头监控录制软件,例如 Synology 和 QNAP 的 Surveillance Station。可以通过这些工具,将摄像头录像保存在 NAS 上:

如果想要将视频监控数据和 NAS 上的重要数据分离,还可以考虑使用 NVR 设备:

对于 NAS 和 NVR,一般使用 ONVIF 协议来连接摄像头。做为一个通用的协议,绝大多数厂商都生产支持 ONVIF 的摄像头,但互联网品牌的家用摄像头(例如小米、Nest 等品牌),也有很多不支持该协议。在选购时需要注意。

如下两个摄像头均支持 ONVIF,且价格不贵,适合搭配 Surveillance Station 或 Home Assistant 使用:

使用单独的 VLAN 和 SSID,将智能家居设备与其他设备隔离

家庭网络中的设备,一般位于同一个局域网,设备之间可以相互访问。设备间的相互访问,可能也会带来安全和隐私问题。

例如前文中提到的,智能家居设备可能会扫描家庭中的所有设备,泄漏设备型号、地理位置等信息。

再例如,即使在路由器上阻止了家中的摄像头访问 Internet,但是,如果电脑感染恶意软件,电脑也有可能访问摄像头,获取摄像头录制的视频,并发送到恶意网站,导致隐私泄露。

那么,什么样的措施,能够阻止家庭网络内设备间的相互影响?划分 VLAN,就是其中的一种方法。不同 VLAN 间的设备能够相互隔离,避免直接访问6。关于 VLAN 的基础知识和实际应用,可通过如下两个链接了解:

VLAN 是以太网的概念,通常只用于有线网络。对于 Wi-Fi,可以创建多个 SSID,让不同的VLAN 绑定不同的 SSID,使链接 Wi-Fi 的设备也能做到相互隔离:

创建多个 VLAN 和 SSID 看似复杂,但实际上,路由器上的「访客模式」功能,就是通过自动划分 VLAN 和 SSID,实现访客网络的家庭网络的隔离的。希望后续家用无线路由器厂商能够进一步优化,提供一键创建 IoT 网络的功能。

mDNS Proxy

划分 VLAN 和 SSID 虽然提升了安全性,但是智能家居和手机等设备处于不同的网络,无法实现 HomeKit、AirPlay、手机 App 控制等功能7

不过,大部分智能家居设备,使用了 mDNS 和 DNS-SD 协议。这使得我们有办法实现跨 VLAN 控制智能家居设备。

mDNS/DNS-SD 协议用于局域网内的服务发现。该协议最早由 Apple 发扬光大:Apple 通过 Bonjour 软件实现了这两个协议,并在 AirPlay、AirPrint、iTunes 家庭共享、AirPort 路由器等产品和服务中得到了广泛应用。

在智能家居时代,无论是 Apple 的 HomeKit,还是小米米家,都选择使用 mDNS 来查找和发现局域网内的智能家居设备。

mDNS 在大部分情况下,仅限在一个局域网内使用。但一部分路由器支持 mDNS Proxy8,能够从一个网络内学习 mDNS 信息,并发布到另一个网络,从而实现跨网络的设备发现。对于不支持 mDNS Proxy 的路由器,也可以使用第三方软件实现:

使用安全的隧道访问内网设备

如果将内网设备直接暴露在公网,很有可能带来安全问题。

当然,我们可以选择使用 Home Assistant,将 Home Assistant 暴露在公网,并添加 HTTPS 等安全措施。但是,这样做也会有几个缺点:

  • 设置麻烦
  • 部分设备不支持 Home Assistant
  • Home Assistant 拥有 Web 界面,但国内家庭宽带不允许搭建 Web 服务

所以,可以考虑通过建立安全的隧道,让外部设备与家庭设备形成一个虚拟的局域网,实现在外部访问内网设备。这种方式在本文中不再详细介绍,感兴趣的读者可以自行上网搜索。

DIY 智能家居设备

⚠️ 注意:本方法只适合有经验的读者。如果操作不当,可能会带来危险,包括但不限于导致身体受伤、中毒、触电,或引发火灾。

对于具有嵌入式开发能力的读者,还可以选择 DIY 智能家居。自己制作的智能家居设备,软硬件相对可控,而且与成品设备相比,能够自由组合不同的传感器和各种器件,实现成品设备无法实现的功能。

一般来说,DIY 智能家居具有较高的门槛。但是,随着开源软件和开源硬件的流行,Arduino 生态的逐渐完善,以及像 ESP8266/ESP32 这样的廉价易用的 SoC 的出现,用户可以用类似「搭积木」的方式,方便地制作出自己的智能家居设备。在少数派上,也有作者分享过基于 ESP8266 的优秀项目:

ESPHome 项目可以让用户使用 ESP8266/ESP32,连接各种传感器和电子模块,制作自己的智能家居设备,并接入 Home Assistant。ESPHome 提供的软件框架,可通过配置文件方便地添加功能,无需编程:

虽然可以使用开源软硬件来制作自己的智能家居设备,但是在制作时,还是要尽量自己对代码进行阅读和审计,确认代码是否安全。

如何发现智能家居设备正在偷偷「做坏事」?

对于已有的智能家居设备,是否有办法看到设备正在做什么?有没有在「做坏事」?在下文中,笔者将介绍几种方法。

检查路由器上的 UPnP 端口映射信息

部分智能家居设备,会通过 UPnP/NAT-PMP,将端口映射到公网。这样做能方便外网访问,但也会带来安全风险。

建议定期检查路由器中的 UPnP 表项,观察是否有设备偷偷开放了不必要的端口。

路由器上的 UPnP 表项

另外,还有一部分路由器,能够统计出通过 UPnP 端口映射转发了多少流量。如果流量过大,则有可能是设备受到了攻击,或者被厂商偷偷用做 PCDN 节点。

端口转发统计信息

使用 Pi-hole、AdGuard Home 等广告过滤工具

想要具体知道设备访问了哪些域名,可以使用 Pi-hole、AdGuard Home 等广告过滤工具。

这些工具做为 DNS 服务器运行,能够记录和统计家庭网络中所有设备的 DNS 请求,同时屏蔽广告域名和恶意域名。

AdGuard Home 仪表盘界面

不过,一部分设备可能会使用固定的 DNS 服务器地址,或者使用 DNS-over-TLS、DNS-over-HTTPS 等新型的加密 DNS 协议,无法由用户指定 DNS 服务器。对于这样的设备,Pi-hole 等工具就无能为力了。

DPI

DPI 全称为「深度包检测」,能够深入分析经过网络设备的所有数据,以便于对智能家居设备的行为进行分析。

与 Pi-hole 等基于 DNS 的工具相比,DPI 能监控智能家居设备所产生的所有网络流量,实现更全面的分析。

一部分路由器自带了 DPI 功能,例如 Ubiquiti EdgeRouter。对于使用开源操作系统(例如 OpenWrtpfSense)的路由器,可通过安装 ntopng 来实现 DPI 功能:

IDS/IPS

IDS 全称为「入侵检测系统」,IPS 全称为「入侵防御系统」。这两者在 DPI 的基础上,增加了安全策略,从而可以实现对恶意行为的检测和拦截。常见的 IDS/IPS 包括 SNORT 和 Suricata:

在这篇文章中,我们可以看出,通过 SNORT 规则,可以检测网络中是否有利用摄像头漏洞进行攻击的活动:

IDS/IPS 需要网络设备有较高的性能,在家用路由器里,华硕等品牌的部分型号支持 IPS/IDS。对于拥有高性能软路由的读者,可自行安装 SNORT 或 Suricata,其中,pfSenseOPNSense 操作系统对 SNORT/Suricata 的支持比较完善。

蜜罐

蜜罐(英语:honeypot)是一个电脑术语,专指用来侦测或抵御未经授权操作或者是黑客攻击的陷阱,因原理类似诱捕昆虫的蜜罐因而得名。 — Wikipedia

之前某品牌电视自动扫描内网、尝试通过 SSH 登录内网设备,通过蜜罐,就可以方便的「抓出」这些行为

前文中提到的,某些品牌的电视自动扫描内网、尝试通过 SSH 登录内网设备的行为,通过蜜罐,就能非常容易地被发现。

部分路由器自带蜜罐功能,例如笔者正在使用的 UniFi Dream Machine,就带有一个简单的蜜罐。从截图中可以看到,有内网设备访问了蜜罐上的 21、23、80 端口,可以根据这些信息,确认内网设备是否有恶意行为。

UniFi Dream Machine 上的蜜罐

也可以自行在路由器、Raspberry Pi 等设备上安装蜜罐。开源的蜜罐有很多种,可以参考如下链接了解:

抓包

除了上文中介绍的方法,还有一种适合专业的用户的方法:抓包。

抓包指的是用工具记录下网络中经过的所有报文,以便于后续进行人工分析。常用的抓包工具是 Wireshark,能够通过图形化的界面来捕获和分析报文:

tcpdump 则是一款基于命令行界面的抓包工具。一部分基于 Linux 操作系统的路由器,已经内置了 tcpdump 工具:

抓包的结果,需要进行人工分析,才能知道智能家居设备的行为。所以,这种方式只适合专业用户使用。如下链接的博客节目中,有通过抓包方式观察到光猫异常行为的案例,可供大家参考:

那么,这样做是不是太麻烦了?

上文中介绍了一系列提高智能家居设备安全性的方法。一部分方法操作较为繁琐,甚至会限制智能家居的部分功能……

使用智能家居本来是为了方便。使用了这些方法,是不是过于复杂,得不偿失了?

在《你的必要隐私手册Android 篇:权限管控与存储空间隔离》一文中,作者 pokon548 说到:

隐私与便利是一门平衡的艺术,世上并不存在绝对的隐私。

其实,对于智能家居设备的安全与隐私问题,也是同样的道理。本文列举了提高智能家居安全性的一系列方式,读者可以根据自身情况,选择出最适合自己的方式,来取得安全与便利的平衡。

当然,也不是说采用了本文中的所有措施,就一定能保护好安全和隐私了。最重要的是,做为用户,我们需要逐步提高安全意识。相反,如果安全意识不足,部分采用本文中的方法,可能还会引入新的安全问题:例如使用 Home Assistant 时,如果没有设置强密码、没有及时更新,且 Home Assistant 暴露在公网,可能就会导致家庭网络被入侵。

另外,对于非常敏感的数据,最好还是尽量保持「离线」。例如摄像头尽量不要放在卧室、智能电视在不用的时候彻底断电、不需要智能功能的设备直接断开网络……


> 题图来自 Unsplash,作者是 Dan LeFebvre。本文部分图片素材来自 Flaticon,作者分别是 xnimrodxFreepikDinosoftLabs
> 想要了解更多关于家庭网络的知识?欢迎在 GitHub 上关注 blanboom/awesome-home-networking-cn
> 本文首发于少数派,原文链接:https://sspai.com/post/69223


  1. 参考:iOS 14 新增的本地网络权限,要开给第三方 App 吗? 

  2. 当然,这里并不是说读者一定要选择大公司的产品。注重安全的、「小而美」的团队也确实存在,但需要读者自行区分和判断。 

  3. 需要注意的是,在 iCloud 中,并不是所有的数据都受端到端加密的保护。例如 iCloud 中的照片,就没有进行端到端加密:https://support.apple.com/en-us/HT202303 

  4. 考虑到家庭网络的稳定性,不建议将 Home Assistant 搭建在家庭路由器上 

  5. 例如使用 HTTPS + 强密码、HTTPS + 双因素认证,或者通过安全的隧道来访问家中的 Home Assistant 

  6. 配置路由后,VLAN 之间也是可以实现互通的。可通过附加防火墙规则,进一步提升跨 VLAN 访问智能家居设备的安全性 

  7. 默认 VLAN 之间不能互通,需要配置 VLAN 间的路由。但是,即使配置了 VLAN 间的路由,由于 IoT 设备和手机处于不同的网络,手机 App 也难以发现 IoT 设备 

  8. 也可能会被叫做「mDNS 代理」、「mDNS 反射器」、「mDNS 网关」、「Bonjour 网关」等 

退出移动版