一次使用 ChatGPT 帮助我学习 L4S 的尝试

在观看 WWDC 视频时,我发现 iOS 17 即将支持 L4S。由于我对 L4S 感兴趣,所以想要阅读更多与 L4S 相关的文章,更深入地了解 L4S。

正好在前段时间,我在 Twitter 上看到了 AI Agents 这款 ChatGPT 插件。这款插件相当于把 AutoGPT 的功能整合进了网页版的 ChatGPT,可以讲一个复杂的指令拆分成单步操作。配合其他 ChatGPT 插件,即可实现搜自动搜索网页、查找文献,并将查找到的内容汇总在一起。

所以,我也打算尝试使用 AI Agents、Web Requests、WebPilot 三个插件,让 ChatGPT 整理一本关于 L4S 的电子书,帮助我更快速地了解 L4S。

继续阅读“一次使用 ChatGPT 帮助我学习 L4S 的尝试”

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

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

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

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

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

首先,设备接入家庭网络后,就有能力做到扫描网络中的所有设备,收集家中手机、电脑、路由器等的品牌、型号,以及家庭的地理位置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 网关」等 

家庭网络中的「NAT」到底是什么?

在使用网络的过程中,或许你会遇到这样的问题:

  • Nintendo Switch 等游戏主机上的 NAT Type 是 D,导致无法联机游戏
  • 使用 eMule 下载文件时,发现获取到了 Low ID,导致下载速度变慢
  • 家中的 NAS 只能在内网使用,很难将 NAS 上的文件分享给其他人。出门在外时,想要下载 NAS 上的文件,也发现无法连接。

或许你还会对这些问题感到好奇:

  • 每天有那么多人使用微信进行视频通话,腾讯的服务器是否能承受这么大的流量?是否需要支付高额的流量费用?
  • 为什么在十多年前,我们就看到过 IP 地址资源不足的新闻。而现在,互联网用户越来越多,IP 地址资源不足却似乎并没有给我们带来什么影响。

其实,这些问题都与 NAT 有关。少数派上已经有两篇文章,也提到了 NAT:

那么,NAT 到底是什么?NAT 会为我们的「网上冲浪」带来哪些不便之处?如何解决 NAT 为我们带来的不便?…… 本文将尝试详细地解答这些问题。

继续阅读“家庭网络中的「NAT」到底是什么?”

这个假期,我创建了一个关于家庭网络的 Awesome List

这个假期,由于疫情的原因,在家的时间有点长。到了 2 月 29 日才返回工作地。在家的这段时间,我完成了一个关于家庭网络的 Awesome List,用于整理与家庭网络相关的知识:

在本文中,我将对这份 Awesome List 进行一个简要的介绍,并谈一谈我的网络设备折腾经历。

继续阅读“这个假期,我创建了一个关于家庭网络的 Awesome List”

UniFi Dream Machine 使用体验(1):开箱与设置

今年 11 月份, UniFi Dream Machine(UDM)正式发布,并于 12 月 11 日在国内上市。这是一款我今年比较期待的网络设备,知道消息后我立马在第一时间购买,在经历了海淘失败等小插曲之后,终于在前段时间拿到。

在本文和接下来的几篇文章中,我将从开箱与设置、特色功能、系统探索、缺点与不足等方面,分享一下我的使用体验。不过暂不涉及性能方面的测试。

继续阅读“UniFi Dream Machine 使用体验(1):开箱与设置”
退出移动版