出于一些原因,比如安全,或者观察植物生长,我一直希望在家里安装一个摄像头——有可能是室内,也有可能是在阳台上对着植物记录其生长。偶尔我也想过:我自以为自己睡的很沉,几乎没有失眠的情况。那么我晚上毫无知觉,连梦都很少做的睡眠中,到底会有多少的运动呢?(比如每晚翻几次身呢?)这样的突发奇想也让我考虑装一个摄像头。但是出于隐私、安全考虑,我迟迟没有这样做。
总之,本篇的话题从网络摄像头开始。
引入一个摄像头,这里是指网络摄像头,对于其安全隐患,我有两个方面的担忧:
1、担忧其系统本身不健壮,厂家技术不过关或者待于后续固件更新填补新发现的漏洞,致使易于受到外部网络的攻击;
2、担忧厂商本身品行不端,不为用户隐私考虑,擅自将用户的视频乃至实时视频以云的名义上传到公共网络上。
与此同时,我又要尽可能用到其网络功能,尽可能能让我不在家里(也就是说与该摄像头不出于同一局域网下)时也能以某种方式看到视频画面。
看起来这是一个不可调和的矛盾,试分析:
对于所担忧的第一个问题,若是把网络摄像头连在路由器下,而不是直接暴露在公网上,那或许可以减少一些风险。毕竟只要不在路由器上开放端口映射,应该就不会收到来自路由器以外的攻击。而如果摄像头本身以网页方式提供视频查看服务(例如80端口),那么只要在路由器上开放该端口,即可被外部访问,但同时也可以防御因其他65534个端口存在漏洞而被攻击的情况。
对于所担忧的第二个情况,这就是很致命的了。一般来说,无论如何连入家庭网络,只要一旦连入,那么由设备端(摄像头)向外发起的通讯总是比较难阻断的。这也是Teamviewer等反向代理软件实现NAT穿透的原理。除非在出口处架设一个防火墙,严格限制摄像头设备对外的访问,这对于一般家庭环境十分不现实。
直到有一次,我在自己的QNAP NAS上发现了「网络与虚拟交换机」这个面板,其中显示可以把NAS的两个网口分配给不同的虚拟机。于是我做了如下尝试:
NAS的一个网口作为普通数据网络,和往常一样,连接家庭路由器(暂称R1),再接电信局光纤Modem,连接外部网络;启用NAS的另一个网口,接入一个无线路由器(目前暂称其为R2,其发射的无线信号为SSID2)。
试以智能终端或mac连接SSID2,发现此时设备无法网上。这说明NAS中的两个网口互相独立,是处于两个不同的虚拟局域网内。一个是可以连入外网的,一个的数据只停留于家庭内部R2路由器所在的网络范围内。
此时我又将一台NAS上的虚拟机的虚拟网口配置为R2所在的虚拟交换机,然后此时通过R1的IP地址去访问NAS,可以在NAS的管理界面中看到该虚拟机的内容画面,并预计通过该虚拟机也应该能看到连入R2网络的其他设备。
换言之,虚拟机、R2路由器与连入SSID2下的所有设备,都在R2的网络下。本身不可通过网络访问外部,外部也不可通过网络方式来访问这些设备。但由于NAS具备虚拟交换机+虚拟机VM+两个硬件网口的条件,可以通过R1网络以「观看画面」(而非网络连接)的形式来查看并管理R2下的所有设备。R2与R1之间的交割接口就是NAS中虚拟机的「画面」。
也就是说,针对我的两个担忧,我如此解决:
担忧一解决办法:我在网络摄像头系统的安全防御上,又加上了NAS本身的安全登录认证机制作为屏障。根据我个人的认识,我想对与网络安全来说,做NAS的厂商总比做视频监控的厂商更有技术保障。
担忧二解决办法:我把一个不安全、不可信的网络摄像头,丢入了一个不可连外网的网络,为我提供视频监控服务(这样可能会失去部分功能,比如报警)。这样就可以避免厂家主动在摄像头程序里设置上传视频数据至公网。
如是。我还没有真的拿一个网络摄像头来试过,因此不知道实际是否可行,因此只能算是思想实验和阶段性实践。