利用IKE构建企业虚拟网(二)
发表于:2007-07-04来源:作者:点击数:
标签:
isakmpd的配置文件和策略文件 实施IPSec前,必须解释一下isakmpd的配置文件和策略文件,因为对它们的理解关系到能否正确实施VPN。这两个文件是isakmpd.conf和isakmpd.policy,分别对应IPSec的SADB和SPD。isakmpd.conf主要描述了建立IKE SA和IPSec SA所需的必
isakmpd的配置文件和策略文件
实施IPSec前,必须解释一下isakmpd的配置文件和策略文件,因为对它们的理解关系到能否正确实施VPN。这两个文件是isakmpd.conf和isakmpd.policy,分别对应IPSec的SADB和SPD。isakmpd.conf主要描述了建立IKE SA和IPSec SA所需的必要参数;isakmpd.policy策略文件控制哪些
安全主机或VPN网关可以与本机建立SA,以及建立什么样的SA。下面就常用的一些配置项加以解释,更详细的信息请查阅相关帮助手册。
配置文件isakmpd.conf采用.ini格式,每小节以[section]形式开始,在小节内可以将值赋予一个tag:
[section]
tag=value
如果value很长,可以在行尾使用“\”续行。以“#”开头的行是注释行。通常右边的值是其它section的名字。对于一些特殊的小节,section都有预定义的默认值,如“General”、“Keynote”、“X509-certificates”和“Default-phase-1-configuration”。一些预定义的section名可以被isakmpd进程识别,这样可以避免完全详细描述主模式的转换码和快速模式的套件、协议及转换码。
对于主模式:
{DES,BLF,3DES,CAST}-{MD5,SHA}[-GRP{1,2,5}][-{DSS,RSA_SIG}]
对于快速模式:
bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center">
QM-{proto}[-TRP]-{cipher}[-{hash}][-PFS[-{group}]]-SUITE 其中{proto}可为ESP或AH;{cipher}可为DES、3DES、CAST、BLF或AES;{hash}可为MD5、SHA或RIPEMD;{group}可为GRP1、GRP2或GRP5。 例如,3DES-SHA表示3DES加密、SHA哈希和预共享密钥认证。这些自动生成的值可以在配置文件中使用相同的section名和tag名将其重新设置。 为了让大家对该配置文件有个感性认识,以一个采用预共享密钥认证的简单配置文件为例来说明(如图1示)。该文件的最右端以“//”开始部分是加注的解释,在实际的配置文件中并不存在。 javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)"> " 图1 配置文件isakmpd.conf 下面介绍策略文件isakmpd.policy。 一个最简单的策略文件只需一行就可以工作: authorizer: "POLICY" 它表示对那些想建立连接的实体没有策略限制,因而不是安全的配置。这里的“authorizer”表示谁有权决定策略。特殊的授权者“POLICY”拥有最终的和无限制的权利。任何其它的授权者必须由“POLICY”授权。 也可以在策略文件内设置一些被允许的条件。下面的策略表示只有那些使用ESP协议,而且加密算法不为空的实体有权建立IPSec SA: authorizer:"POLICY" conditions:app_domain == "IPsec policy" && esp_present == "yes" && esp_enc_alg != "null" -> "true"; 还可以利用“licensees”授权给其它的实体。简单的例子就是预共享密钥的情形: authorizer:"POLICY" licensees: "passphrase:something really secret" conditions:app_domain == "IPsec policy" && esp_present == "yes" && esp_enc_alg != "null" -> "true"; 上面的配置表示任何知道预共享密钥,且通信参数符合条件的人都得到授权建立IPSec连接。记住要把isakmpd .conf中的Authentication设置成预共享密钥。 关于策略文件更安全和详细的描述请参考isakmpd.policy帮助手册和网站http://hem2.passagen.se/hojg/isakmpd/。 企业VPN实现案例 假设某企业总部在北京,分公司在南京,两地想通过互联网传输企业的私有信息。为了降低成本,可以利用Internet实现企业虚拟专用网,具体拓扑见图2。 " 图2 基于Internet的企业VPN应用拓扑图 图2中两地VPN网关的公网地址是假设的。192.168.0.0 /24网段与192.169.0.0/24网段利用VPN-GW-NJ和VPN-GW-BJ之间建立的加密隧道进行通信。 为了使Linux能够适应今后的大规模VPN部署,这里使用X.509证书进行IKE认证,同时也避免了因预共享密钥泄露引起的VPN系统安全问题。利用X.509配置IKE,可分两步进行:首先创建X.509证书;然后修改配置文件,使IKE进程使用X.509证书进行认证。 关于CA(Certificate Authority)的知识,请查阅相关资料。本文只给出实施IPSec所需X.509证书的创建步骤。 (1)创建自己的CA证书。 #openssl genrsa -out /etc/ssl/private/ca.key 1024 #openssl req -new -key /etc/ssl/private/ca.key -out /etc/ssl/private/ca.csr 其中ca.key是CA的私钥,必须存放在安全的地方。 下一步利用CA的私钥为CA自己签署证书: #openssl x509 -req -days 3650 -in /etc/ssl/private/ca.csr -signkey /etc/ssl/private/ca.key -out /etc/ssl/ca.crt 这样便拥有自己的CA证书,然后可以用该证书为其它主机签发X.509证书。 (2)为每个IPSec网关创建私钥和证书。 在网关VPN-GW-NJ上: #openssl genrsa -out /etc/isakmpd/private/local.key 1024 #openssl req -new -key /etc/isakmpd/private/local.key -out /etc/isakmpd/private/202.102.0.120.csr 将证书请求传给CA进行签署: #openssl x509 -req -days 365 -in 202.102.0.120.csr -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -out 202.102.0.120.crt 必须运行工具certpatch在证书中增加一些扩展项,以使它可以被isakmpd所用。 #certpatch -i 202.102.0.120 -k /etc/ssl/private/ca.key 202.102.0.120.crt 202.102.0.120.crt 将签署好的证书放在网关的/etc/isakmpd/certs/目录下,同时将CA证书ca.crt放在网关的/etc/isakmpd/ca/目录下。 对网关VPN-GW-BJ同样执行上述步骤,将202.102.0.120改成网关VPN-GW-BJ的公网IP地址即可。 (3)编辑配置文件和策略文件。 两台VPN网关的策略文件isakmpd.policy配置为: authorizer:"POLICY" conditions:app_domain == "IPsec policy" && ( esp_present == "yes" || ah_present == "yes")-> "true"; 上述配置不是最安全的配置,应该再进一步进行安全优化。 两台安全网关的配置文件isakmpd.conf分别如图3、图4所示。 " 图3 VPN-GW-NJ的配置文件 " 图4 VPN-GW-BJ的配置文件 (4)启动isakmpd进程。 #isakmpd (5)用相关工具验证VPN是否正常工作。 [root@wwchen isakmpd]# setkey -DP 192.169.0.0/24[any] 192.168.0.0/24[any] any in ipsec esp/tunnel/213.14.1.122-202.102.0.120/use created: Dec 27 15:39:12 2003 lastused: lifetime: 0(s) validtime: 0(s) spid=232 seq=3 pid=4921 refcnt=1 192.168.0.0/24[any] 192.169.0.0/24[any] any out ipsec esp/tunnel/202.102.0.120-213.14.1.122/require created: Dec 27 15:39:12 2003 lastused: lifetime: 0(s) validtime: 0(s) spid=225 seq=2 pid=4921 refcnt=1 ... ... 以上为查看策略库SPD时VPN正常工作显示的内容。 [root@wwchen isakmpd]# setkey -D 202.102.0.120 213.14.1.122 esp mode=tunnel spi=3338011673(0xc6f60419) reqid=0(0x00000000) E: 3des-cbc 033ccd02 e4430fe4 e3947652 e4a3a5a9 f2fd5514 06bec978 A: hmac-md5 54e401f0 57f1ff08 5f37f52c d2bcfa1d seq=0x00000000 replay=16 flags=0x00000000 state=mature created: Dec 27 15:39:12 2003 current: Dec 27 15:39:24 2003 diff: 12(s) hard: 1200(s) soft: 1080(s) last: hard: 0(s) soft: 0(s) current: 0(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 0 hard: 0 soft: 0 sadb_seq=1 pid=4922 refcnt=0 213.14.1.122 202.102.0.120 esp mode=tunnel spi=1733688336(0x6755fc10) reqid=0(0x00000000) E: 3des-cbc 82acc8b0 d2c641c9 5677169d 67a4f9ed 0b7da239 6585ba29 A: hmac-md5 07a411f6 b72bcd1a aab1dbd3 da3f869b seq=0x00000000 replay=16 flags=0x00000000 state=mature created: Dec 27 15:39:12 2003 current: Dec 27 15:39:24 2003 diff: 12(s) hard: 1200(s) soft: 1080(s) last: hard: 0(s) soft: 0(s) current: 0(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 0 hard: 0 soft: 0 sadb_seq=0 pid=4922 refcnt=0 以上为查看安全关联库SADB时VPN正常工作显示的内容。
原文转自:http://www.ltesting.net
|