作为一个IT专业人员,或者说一个计算机爱好者,肯定对密码的安全问题有过深入的理解。所以我们都知道,不论是密码还是别的什么敏感信息,比如银行账号、重要的文档、与公司的重要商业通信内容等,都必须通过安全的数据链接来传送。这是最基本的安全常识,也是那些对于互联网感兴趣的朋友们最初就了解的。
当我们访问一个重要的网站,会发现地址栏里的URL写的是https:// 。当你需要与同事共享文件夹时,你会首先开启VPN确保重要数据传输时不会被其他人截获。有些对安全问题更敏感的人,在不久前出现了CA机构被入侵的事件后,甚至会手动检查安全证书。
但是这些只覆盖了我们日常上网活动的一小部分的安全问题。我们每日上网发起的连接数量相当多,而且电脑与远程服务器间的连接并不总是以HTTP方式进行,有可能会通过特有的协议和端口向远程服务器发送信息。那么这些我们看不到的连接是否安全呢?我们怎么才能知道这些连接所发送的数据是否是以明文方式发送出去的呢?下面我们就来梳理一下常用的安全或非安全的网络连接。
电子邮件
首先,也是最常见的案例,就是电子邮件。发送邮件会用到多种不同的协议,其中有些是安全的,有些则不是。首先,使用Gmail或其它基于Web的电子邮件网站,很好分辨是否是安全的。就算该网站没有说明使用了SSL连接,你可以通过Firebug 这样的Firefox插件或者Chrome里的开发者控制台来检查邮件发送按钮是否链接到安全页面。
但是如果你使用的是像 Outlook这样的桌面电子邮件客户端,那么情况就复杂了。如果是企业电子邮件系统,使用Microsoft Exchange 服务器,只要配置正确,那么连接应该是安全的。在Exchange的POP3设置中,只需要在Authentication选项卡中选择Secure Logon 作为登录模式就可以了。同样,如果是将Hotmail的邮件直接通过Outlook 或Live Mail收发,连接也是加密的。
而如果你所使用的电邮系统是来自ISP的POP3 或 IMAP,那么可能就不够安全了。默认情况下,这些协议会以明文的形式发送电子邮件和用户信息,包括你的电子邮件账户密码。按理说ISP们应该为这个连接添加加密功能,但是很多ISP都没有这么做。
文件传输协议
通过互联网传送文件的方法很多,从共享文件夹到通过DropBox 这种基于Web的文件服务。其中最古老也是最简单的文件传输方法就是使用FTP。尽管通过某些配置,FTP服务器和客户端也能支持加密,但是默认情况下,FTP是不加密的。如果你运行了Microsoft FTP 服务器,只需要在IIS管理器的Connections面板里设置FTP SSL Settings 即可。
FTP的一个典型应用是向Web网站上传文件。我曾经见到过很多次有人使用带有Web登录面板的Web主机,他们认为连接到配置面板是安全的,但是接下来又使用FTP客户端向Web主机传输文件,而这个过程使用的用户名和密码都是明文发送的。
Telnet
Telnet目前使用的已经不多了,但是仍然有些人会偶尔使用。很多主机都提供Telnet功能,让用户可以直接连接到服务器并以命令行方式执行命令。Telnet程序和协议都是没有加密的,不过可以使用SSH进行加密。
Telnet并不只能用于主机,如果你是IT管理人员,需要配置路由器,除非你会手动配置SSH,否则你可能会用到Telnet。有些路由器会更注重安全,要求管理员首先创建证书并进行签名,然后才能打开SSH。因此,一般来说我们都会选择用一根串行线直接连到路由器进行配置,而不是通过网络进行。
其他程序
我们每个人的电脑里都安装了很多程序,其中一些程序会不时的与远程服务器联络,有些还会传输账户信息。这些程序可能是基于 Adobe AIR 的Twitter客户端, Gmail Notifier 插件, DropBox 客户端,或者是你的IM软件,比如Windows Live或QQ。总之,此类软件很多。那么怎么才能知道这些软件在发送数据是都是以加密形态发送的呢?
其实大家不用去软件厂商的网站查询FAQ上是否有这方面的信息,而是可以通过在电脑上输入命令netstat来列出当前网络连接状态的方法进行安全性查询。你可以在命令行模式窗口里输入这个命令,在返回结果的第三列里会看到所连接的远程IP地址和端口号。任何使用端口443或HTTPS的,都是安全连接。
而我更喜欢使用数据包探嗅器进行判断。这种工具可以帮助我们发现是否有机密信息泄露。具体来说,我比较喜欢用Microsoft Network Monitor ,大家可以从微软的网站免费下载这个产品,但是很多人好像更喜欢使用Wireshark。
当然,使用这些工具需要你对扫描结果具备一定的分析能力,但是通过查看每个程序所打开的端口和远程主机的相关信息,你可以很直观的看到数据传输情况。如果你能从某个数据连接中看到明文信息,那么这个连接很可能是未加密的不安全连接。如果传输的数据你完全看不懂,或者已经被标记为TLS或SSL连接,那么你就可以放心了。