近段时间,笔者完成了一些IPSec ×××的配置,有站点到站点固定公网IP地址的IPSec ×××,有站点到站点使用固定公网IP地址的EZ×××,有网络中心点是固定公网IP地址,而分支机构是动态地址的DM×××,有路由器和防火墙之间互联的IPSec ×××,也有不同厂商的设备之间互联的IPSec ×××。通过这些项目的锻炼,笔者感到对IPSec ×××的了解又增进了一步,以前一些模糊的地方,经过这次项目的实践之后也越来越清晰,以下就是笔者对IPSec ×××配置的总结和配置实例。
一、 理解IPSec ×××
×××是利用公共网络建立一条专用的通道来实现私有网络的连接,IPSec ×××就是利用IPSec协议框架实现对×××通道的加密保护。IPSec工作在网络层,它能在IP层上对数据提供加密、数据完整性、起源认证和反重放保护等功能。
加密的作用就是通过将数据包加密,保证数据的安全,即使数据包被人监听获取到,也无法阅读数据内容。
IPSec使用的数据加密算法是对称密钥加密系统。支持的加密算法主要有:DES、3DES、MD5和SHA加密算法,这种加密算法需要一个共享的密钥执行加密和解密,共享的密钥是通过通信两端交换公钥,然后用公钥和各自的私钥进行运算,就得到了共享的密钥,这样就需要一个公钥交换的算法。DH密钥协议就是一种公钥交换方法。DH密钥交换协议有组1到组7的几种不同的算法,级别越高,加密的强度也就越大。组1提供768位的密钥强度,组2提供1024位的密钥强度。DES和3DES支持组1和2,AES支持组2和5,因此如果选用了不同的加密算法,就需要选择相应的DH密钥交换算法。
数据完整性的作用就是保证数据包在传输的过程当中没有被篡改。
为了保证数据的完整性,给每个消息附加一个散列数,通过验证发送的散列数和接收的散列数是否匹配来判断消息是否被修改。散列消息验证代码(HMAC)主要有两种算法:HMAC-MD5和HMAC-SHA-1,MD5使用128位的共享密钥,而SHA使用160位密钥,因此HMAC-SHA-1比HMAC-MD5的加密强度要更高一些。
起源认证的作用就是保证发送数据包的源站点是可信的。
起源认证用来在建立隧道时验证隧道两端的对等体是否是可信的。主要有预共享密钥、RSA签名、RSA-加密nonces三种方法。其中预共享密钥配置起来最简单,但安全性和扩展性也相对来说要差一些。预共享密钥就是在每个对等体上都预先配置好相同的密钥,经过运算之后发送到远端的对等体,由于每个对等体的密钥相同,因此就能够通过起源认证。另外两种认证方法配置较为复杂,需要和证书服务器配合起来使用,笔者没有这方面的实践,因此后面的配置实例中都是采用的预共享密钥的配置。
反重放保护的作用就是保证数据包的唯一性,确定数据包在传输过程中没有被复制。
在IPSec的数据包中含有一个32位的序列数,并且是不能重复的,接收方通过检查序列数是否是唯一的来执行反重放保护功能。
IPSec协议簇主要包括两种协议:AH(认证头)和ESP(封装安全有效载荷)。其中AH不提供加密功能,而ESP两者都提供。当使用ESP进行加密和认证的时候,执行顺序是先加密再认证。将这两种协议应用到IP数据包时有两种模式,分别是隧道模式和传输模式。隧道模式将一个新的IP头附加在已加密的数据包之前,为整个数据包提供安全性;而传输模式下原数据包的IP头不变,保持明文,只对数据包的内容提供安全性。
IPSec的建立有两个阶段,第一个阶段主要是认证对等体,并协商策略。如确定建立IPSec隧道所需用到的安全参数,主要有加密的算法、对等体的认证、保证消息完整性的散列算法和密钥交换的算法,协商成功后再进行DH交换,建立一条安全信道。
第二个阶段主要是协商IPSec的参数和IPSec变换集,如确定使用AH还是ESP协议,使用传输模式还是隧道模式。协商成功后建立IPSec SA(安全关联),保护IPSec隧道的安全。
在笔者所配置的IPSec ×××中,都统一采用下列参数:
阶段一:
加密算法采用3DES;
保证数据完整性的算法采用HMAC-SHA-1;
起源认证采用预共享密钥;
密钥交换采用DH组2;
阶段二:
采用ESP协议提供对整个数据包的保护,并同时使用加密和认证,加密算法采用3DES,认证算法采用HMAC-SHA-1
使用模式采用隧道模式。
其余的参数保持默认设置。