公司如果通过监控员工的上网记录来了解员工动态,员工如何防范呢。我们要从DNS解析开始,让网址的DNS解析也不能够被发现。WBM和SSH隧道是我们常用的加密网络的办法。它们可以保证DNS数据不被监控吗?

 

WBM

当我们开启WBM后,包括DNS在内的数据包,都通过WBM的链路来访问。这样都是加密的,从我们的计算机到WBM服务器路由上的所有计算机都挖掘不出我们上网的网址。

开启WBM后,路由如下:

$ ip r
50.16.227.67 via 192.168.1.1 dev wlan0  proto static 
50.16.227.67 via 192.168.1.1 dev wlan0  src 192.168.1.100 
192.168.240.1 dev ppp0  proto kernel  scope link  src 192.168.240.2 
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.100  metric 2 
169.254.0.0/16 dev wlan0  scope link  metric 1000 
default dev ppp0  proto static

去往因特网的数据包,除了WBM的因特网地址50.16.227.67(该IP已不属于本人)外,网关都是WBM连接ppp0。

这么说,DNS也不例外,通过试验来检验一下。

开始抓包,并立刻连接WBM。之间我用Firefox打开书签中的各种网页,还用Chromium做了类似的尝试,还开了Xchat, Seamonky, Skype, Pidgin, Thunderbird, Gwibber等互联网程序。总共抓取了186855个包。按理说,除了连接WBM服务器的DNS包外,不应该出现别的DNS包。实际上我抓到了14条漏网之鱼:

这些都是Firefox访问的网址里面一部分。为什么会有极少的DNS暴露出来呢?

通过协议分析,这些都是Wireshark从GRE包里面分析出来的:

PPTP不是加密的吗?因为我的Android手机的PPTP有bug,不支持PPTP的加密,所以这个服务器设置成了不加密。这14个DNS包,是Wireshark从中分析出来的。因为没有加密,所以只要有工具,还是可以解析数据包的,只不过被GRE封装后,Wireshark解析起来难度增大,所以只发现了14个DNS包,实际上所有的DNS都是没有加密的。

那么改成加密后如何呢?把PPTP服务器的MPPE加密选项启用并重启服务。然后连接到服务器抓包,我把电脑上各种的网络程序都打开用过了,总共抓包34万多,只有4个DNS包,就是WBM连接时候用的。

 

SSH隧道

SSH+Firefox+AutoProxy,打开全局代理。

抓包观察发现,Firefox浏览器里面的网址DNS记录都被封装在SSH隧道里面了,不会暴露目标。但是有个前提,就是要在about:config里面把network.proxy.socks_remote_dns设置为true。如果是false的话,那DNS可就是本地解析了,就乖乖被监控吧。

 

结论

WBM可以防止上网记录被监控,包括DNS,但是如果是PPTP的话,必须选择加密才行。SSH隧道也可以防止上网记录被监控,但是用SOCKS代理时候,要启用Firefox的socks_remote_dns,才可以防止DNS查询被监控,同时也避免了DNS污染。

需要注意的是,在WBM服务器端开始,就没有什么加密了,仍然需要注意。