NeoAtlantis应用科学和神秘学实验室负责人在最近几个月里,花了一些力气调整了自己所用的局域网的联网方案。 这次调整的目的,以让局域网更加安全为主。 因此他决定把这个方案发布出来,供有同样需求的朋友参考,也希望了解大家的建议和批评。

1. 威胁模型

改进实验室联网的目标是提高安全性。因此首先要谈一谈普通的方案为何不安全。

威胁一:不安全的路由器

NeoAtlantis应用科学和神秘学实验室实验室使用的联网方案和一般的公司或家庭相同,是经由固话网络进行DSL拨号的连接。 之前,因为场地变动,DSL办理困难,曾经使用包月的数据流量通过4G接入。

这两类接入,都存在同样的问题:需要采用一个专用的路由器。 这个路由器一般由互联网提供商给出,在德国,可能需要在合约结束后邮寄回去。有时可以自行购买二手的路由器,价格相对便宜。

此类路由器一般采用互联网提供商定制的固件,较为易用。有时提供自动升级功能。比如本实验室采用的4G路由器,是华为生产的一种型号,甚至会在访问http网站时偶尔劫持流量,提示更新固件。

显然,这类易用的路由器,是存在安全隐患的:

  1. 我们不知道固件是否存在有意(由政府或者黑客引入)或无意(因为程序员疏忽大意编写失误造成)的漏洞、后门。
  2. 我们不知道此类路由器是否会稍后被引入后门,比如通过专门的固件升级。

但是,这类路由器易于使用,也可能是必须要用的。这样在出现一般的技术问题时,可以获得互联网提供商较好的技术支持。

威胁二:一般的网络入侵

目前有一个常见的情况。如果把树莓派安装新的固件,开启ssh,然后立刻连上互联网,很可能在各位完成自己登录树莓派之前,这个迷你电脑就已经被黑客修改了密码。 这件事情,本实验室负责人去年曾经在一个不安全的网络上遇到过,只好重新安装树莓派的系统。

这个问题在于局域网过于开放。很多家庭网络使用的供应商提供的路由器,可能没有设定良好的防火墙。 这样,互联网上无时无刻的黑客攻击会很快地定位到局域网中开放的端口,或者其他弱点,并自动完成攻击。

威胁三:IP泄漏和大规模监视

IP地址泄漏的后果可能比想象的严重。通过在网页中加入特定的追踪代码,比如调用浏览器的WebRTC接口,可以得知真实的IP地址,甚至局域网内的本地IP地址。 比如,wtfismyip.com就提供了这样的基本测试。如果各位点击这一连接,看到了自己的局域网IP,那么浏览器就存在这一问题。

即使使用VPN上网,通过浏览器代码仍然可能获取到真实的IP地址。这是因为一般情况下,VPN程序运行在本地电脑上,网络流量是否通过VPN发送是程序自己决定的。 因此,即使开了VPN,浏览器仍然知道你的真实IP,并可以将其透漏出去。

使用VPN之外的代理上网,即使使用加密连接,仍然可以泄漏访问的网站信息。使用Socks5等接口的程序,比如Tor,Shadowsocks,或者SSH隧道时,浏览器未必会将待访问的网址通过代理服务器进行解析。 比如要访问 www.google.com ,浏览器可以选择在本地网络环境中查询 Google 的 IP 地址为(xxx.xxx.xxx.xxx),然后告诉代理“我要访问 xxx.xxx.xxx.xxx”。或者直接告诉代理,“我要访问 www.google.com”。 显然,第一种方法将会导致在本地网络环境(比如当地的DNS服务器上)留下痕迹。这样,即使后续连接是加密的,能看到网络流量的第三方也可以轻易得知正在访问Google。

很多读者会以为,“得知我访问了什么网站”不等于“得知我做了什么”,并认为这是一种无足轻重的小事。 然而,对这类行为的定性,完全是各个国家权力部门自己决定的结果,而不在于读者自己的定位。 一个在A国看起来完全没有问题的网站,在B国可能导致罚款或者重刑 (为了理解这一点,请读者扩展思路,考虑某些阿拉伯国家的保守政策、某些国家的版权律师、各种角度的政治立场、支持女性主义的网站、东南亚地区对领导人的批评、某些国家不受政府欢迎的媒体网站等)。 所以,这种事情的后果,在不同国家可轻可重

但对于本实验室而言,仅仅“可重”就是不能接受的风险。

威胁四:局域网内的嵌入式设备

手机等移动电子设备通常比电脑更加难于避免遇到恶意软件或代码。

之前,国内媒体报道了创维电视窃取局域网内联网设备的信息

这种出于商业或者其他目的的信息窃取行为,后果是比较严重的。比如,像上述情况,这一电视已经得知了局域网内的所有设备信息,还有WIFI的名称等。 这些信息,通过和其他渠道(也许是其他设备)一同搜集到的信息,包括从其他用户(比如邻居家)搜集到的信息,就可以确认一个设备的位置。

想象一下,一个朋友A,自己在家通过各种原因被搜集到了此类信息。然后他来到另一个人B的家里,连接了WIFI。 那么,如果另一个人家里也有此类设备,这些窃取信息的公司就可以据此断定A和B相互认识。 甚至,这些应用都不需要获取GPS等定位权限,就可以估计出自己所在的位置。

2. 解决办法

在确定了存在的威胁之后,我们就可以设定一些解决方案,并据此设计联网方案。

针对威胁一,我们仍然需要使用这些路由器,以便获得较好的网络接入体验。但是,这些路由器必须与局域网的其他设备隔离,绝对不能访问局域网内的设备,其地位等同于外网。

针对威胁二,我们需要部署防火墙,只允许局域网主动向外发起连接,拒绝所有的进入连接。

针对威胁三,我们需要在路由器上部署VPN,以便局域网内所有外出连接都是通过VPN进入互联网。

针对威胁四,我们需要在局域网内进行隔离,让不安全的设备无法访问安全的设备。

3. 具体实现

首先,我们要确定使用何种路由器来完成防火墙和VPN的功能。本实验室使用的路由器实际上是小型的低功耗计算机(软路由)。 这些计算机可以在自带的网卡外安装另一个网卡。这样就可以做到一进一出,将路由器串联起来。

这些计算机仍然使用x86的CPU,因此安装路由器系统和安装一般的操作系统并无两样,故在此不再叙述。

需要准备的一台普通的显示器和键盘,因为安装过程是命令行界面。

边界防火墙

针对威胁二的防火墙,本实验室使用IPFire。此款防火墙功能比较强大,但同时使用非常简单。 按照其安装时的设定,将两块网卡分别划定为两个区域(IPFire使用颜色区分,红区是危险的外网,绿区属于局域网)。

这个防火墙的作用有二:

一是隔离外网,让外网无法主动访问内网的计算机。

二是限制离开内网的连接。根据前面的讨论,我们要求内网并不是自由地访问互联网,而是通过VPN访问。因此,离开内网的连接必定是前往VPN服务器的连接。 我们通过设定防火墙,保证这一点,避免VPN连接路由器配置失误时,导致的信息泄漏。用专业术语讲,这个办法就是 kill-switch,是一道最后的保险。

OpenVPN路由

针对威胁三,我们在路由器上安装VPN。适合这一用途的路由器系统,我们选择 OPNSense。其安装过程同样比较简单。

在OPNSense上配置的过程比较复杂,幸好很多VPN提供商都提供教程。比如:

其基本思路如下:

  1. 配置路由器上的OpenVPN服务,根据VPN提供商的要求,设定证书、用户名和密码等。如果提供商处可以下载.ovpn类型的配置文件,其参数可以从文件中获得。
  2. 新建用于 OpenVPN 的虚拟网卡。这样 OpenVPN 运行时,就好像路由器上插了一块特殊的网卡一样。 术语上这块网卡是tun/tap类型的网卡,任何发送给它的消息会被VPN加密传输,任何VPN获得的信息会被写入网卡,变成操作系统接收到的数据包。
  3. 配置防火墙的NAT规则,让LAN来源的数据进入VPN网卡。
  4. 之后可以按需配置DNS规则。

隔离交换机

为了解决威胁四,我们要在局域网内使用隔离交换机。这种交换机有多个局域网端口,但是端口之间不能互相访问,只能和上游的路由器通信。

可以将WIFI路由连接到隔离交换机上,然后台式机和其他电脑使用余下的各个端口。这样,可以避免手机上的恶意软件了解或者访问台式电脑。

网络的结构图

网络拓扑图

从网络的结构图中我们可以看出,要入侵台式机,黑客要攻破很多道防线:

  1. 首先是4G/VDSL路由器自带的防火墙——这些路由器多少也是有基本的防火墙功能的。
  2. 接下来是IPFire防火墙。
  3. 接着是VPN路由器上的防火墙——OPNSense也是比较安全的操作系统,默认设置同样禁止来自WAN的进入流量。
  4. 最后是电脑或者手机上自带的防火墙。

这种多层的防火墙结构,在安全领域是所谓纵深安全的概念。我们不但追求每个环节的安全,还要将安全的环节串联起来,保证一个环节出问题,不致导致整体的不安全。

4. 改进空间

上面的方案其实还有一些可以改进的空间。

  1. VPN实际上是将我们的计算机网络和远程的VPN提供商架设的局域网相连。这种做法将信任交给了VPN提供商。如果我们想要避免这一点,需要在VPN路由器和交换机之间,再安装一个防火墙。 这个防火墙可以同样采用IPFire。
  2. 如果我们在网络中使用Tor等匿名服务,则网络的可靠性非常重要。因为一旦网络中断,Tor和实名上网同时掉线,会暴露一些信息。为此,需要采取如下措施:
    1. 要对这些网络设备使用备用电源。
    2. 要在互联网接入处,设置备份。可以选用具有多个WAN接口的交换机,将有线和无线上网结合。这样,比如当有线中断的时候,还可以通过无线的方式继续连接。