企业在逐步向全球市场迈进的过程中,随着企业的职员分布到世界各地,我们迫切需要在不同地理位置和千差万别的操作系统之间建立网络连接。与此同时,我们还必须保护自己的系统以及系统之间传输的数据,使之具有一定的安全性。
在不同的平台之间建立安全连接有一种最常用的方法,这就是采用IPSec(IP安全协议:IP Security Protocol)。IPSec在网络的IP层上提供加密服务以支持数据来源认证、数据的完整性和机密性。IPSec的使用对用户和网络应用都是完全透明的,这使之成为改进现有网络服务安全性的一个很吸引人的方案。在这篇文章里,我就将告诉你如何建立和配置SOLARIS和LINUX计算机之间的IPSec连接。
IPSec标准在LINUX系统上的实现就是FreeS/WAN;SOLARIS在SOLARIS 8版本上也提供了自己的标准实现产品。因为两种系统所实现的软件包都遵从标准协议,所以两者之间建立相互通信并不困难。现在就让我们从头开始在两种系统之间设置连接。在我们所举的例子中,SOLARIS机器装备了Sparc20处理器,运行着SOLARIS
8,而LINUX系统则是一台膝上计算机,运行Mandrake LINUX的一个经过大量修改后的分发版本。
SOLARIS 8 系统支持IPSec,但是,由于出口限制的问题,系统光盘上并没有包含实现IPSec所必需的全部软件。为了采用IPSec,你必须下载和安装SOLARIS 8附带加密包。
假如你手头没有Sun下载中心的用户ID,那么你首先得提供自己的有关信息注册。注册成功之后登录网站,即可在Individual SOLARIS Sparc
Downloads栏目下载SOLARIS 8 附带加密工具包。
下载完成后,把软件包解压缩并如清单A所示安装它。
选择所有安装需要的可用包,安装完成之后重新启动系统。
接下来在/etc/inet/ipseckey目录下创建安全关联,如清单B所示。
修改文件权属,保证只能由root用户读取:
chmod 0600 /etc/inet/ipseckey
输入IPSec隧道通信两侧的IP地址、加密方法和秘钥。
然后装载Security Association数据库:
ipseckey -f /etc/inet/ipseckey
现在你可以用ipseckeydump查看数据库内容了。
接着,编辑 /etc/inet/ipsecinit.conf,对受到保护的端口流量设置安全策略。文件中的条目可以定义端口、IP地址或者子网,如清单C所示。
以上是在SOLARIS一侧完成的操作。如果一切顺利,现在你就可以重新启动系统,同时你需要运行ipseckey dump和ipsecconf装载配置参数。
对LINUX来说,除非你得到的版本已经包括了FreeS/WAN软件包,否则你必须从网络上下载。FreeS/WAN 软件包包括必须同系统内核源代码一同重构的内核模块以及设置IPSec连接的有关实用程序。FreeS/WAN的文档对以上的组成部分和有关安装过程做了比较详细的说明。源代码和文档都可以从FreeS/WAN下载。你从以下站点还可以获得最新的稳定版:
ftp://ftp.xs4all.nl/pub/crypto/freeswan/freeswan-*
还有,假如你的LINUX版本没有提供FreeS/WAN,那么你需要用FreeS/WAN补丁程序编译系统内核才能启用IPSec。假如你的内核源代码在/usr/src/LINUX目录下,而其配置符合你正在运行的实际内核,那么FreeS/WAN
的安装一点不难,如清单D所示。
以上的措施照顾到了所有的补丁修正、内核配置以及针对你的系统的特定安装。另外,你还可以创建/安装个人修改的此类软件或采用其他创建选项创造你自己的RPM。
LINUX机器上的配置是/etc/ipsec.conf,如清单E所示。
SOLARIS的IPSec实现只能使用手工设置密钥模式而非自动密钥模式。配置内容中的第一节由基本配置选项组成,对任何安装都是最常用的,然后是附加的条目,手工地启动我们的Sparc连接。
Conn条目说明了参予连接的两个IP地址,这同我们在SOLARIS机器上定义的加密条目是一样的。大多数LINUX IPSec实现都附带了init脚本,你可以这样启动:
/etc/rc.d/init.d/ipsec
start
清单F显示了如何查看装载的配置。
注意路由条目,包括普通的的eth0条目和附加的ipsec0 路由。
假定在启用IPSec之前你能在2台机器之间建立网络连接。然后经过以上配置假如两台机器之间突然停止工作,那很可能是由于你的配置文件内容有误或在SOLARIS方面不能启用ipseckey
。你最好查看系统日志记录找到问题的原因所在。
SOLARIS:
tail -f /var/adm/messages
LINUX:
tail -f /var/log.messages
那么我们如何才能得知网络连接真正加密了呢?这很简单,你可以在Solar计算机上用snoop监视连接。清单G显示了一个Telnet会话过程的记录,我们知道Telnet因为明文传输用户名和密码而在安全问题上备受关注。不过,正如你能看到的那样,在嗅探接口时,并不存在清楚可读的文本。
以上就是在SOLARIS和LINUX系统之间设置安全连接的过程。尽管在我们例子中,两个系统都位于同一网络上,但是,通过因特网或其他一些不受信网络设置安全的连接隧道也是可能的。两台机器仍然可以同其他客户程序建立普通的、不安全的连接,但是在它们之间的所有流量都被加密了。IPSec 的优点比ssh或者其它加密连接类型都更为突出,原因是IPSec能在客户之间加密所有的流量而非针对有限的协议类型。