利用IKE构建企业虚拟网(二)

zt371 发布于 2009/05/07 11:09
阅读 248
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

上一篇:利用IKE构建企业虚拟网(一) 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}]
对于快速模式:
       
             
                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示)。该文件的最右端以“//”开始部分是加注的解释,在实际的配置文件中并不存在。
图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正常工作显示的内容。
(责任编辑: 代君利)

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部