在 AIX 上简化和集中化 IPSec 管理

Internet Protocol Security (IPSec) 可以帮助您保护数据,但在有许多系统的大型企业中实施 IPSec 隧道可能是一项艰巨的任务。在本文中,学习如何使用 AIX® 中的集中式 IPSec 管理特性来管理大量客户端机器的 IPSec 配置。示例演示了如何将 LDAP 用作一个中央存储库,以简化并集中化配置管理。

Jyoti Tenginakai, 安全性开发人员, IBM

http://www.ibm.com/developerworks/i/p-jtenginakai.jpgJyoti Tenginakai 是 IBM 印度软件实验室的高级软件工程师。她已经在 IBM 工作了两年半。她当前在 Security Development 团队工作。在担任当前职位之前,她曾经从事 OpenSSH 和 lsof 等开放源码组件,负责发布活动、新特性以及处理客户针对这些组件提出的请求和查询。

Jyoti 曾经在 AIX OpenSSH 上实现了 chroot 特性。她拥有印度 Visvesvaraya Technological University 的工程学士学位。



2013 年 10 月 14 日

概述

Internet Protocol Security 是一个协议套件,提供各种信息安全特性。个人用户或组织可使用 IPSec 特性来保护所有应用程序的流量,无需对应用程序本身进行任何修改。IPSec 使用身份验证、完整性检查和加密来保护数据流量。数据安全性是在通信栈的 IP 层提供的,所以不需要对应用程序进行任何修改。不过,必须对每台机器单独配置,以使其能够使用 IPSec。

在本文中,了解 AIX IPSec 管理特性,它可以简化对大型网络应用和管理 IPSec 配置的方式。该特性使用轻量级目录访问协议 (Lightweight Directory Access Protocol, LDAP) 作为一个中央存储库来维护和分发 IPSec 配置,从而提供配置的集中式管理。从 AIX V61V/71H 起支持此特性。

对 IPSEC 简化的需要

目前,对于使用 IPSec 隧道的系统,必须使用 XML 配置文件或命令行对它们进行单独配置。在配置某些系统时,工作量可能不会非常大,但在拥有许多系统的大型企业中,配置就会​成为一项艰巨的任务。要在两个系统之间建立 IPSec 隧道,需要配置超过 20 个配置参数,并且只有少数参数与机器相关。

由于有大量的配置参数,所以 IPSec 配置既容易出错又耗时。为了减少错误配置的工作量和风险,AIX IPSec 中增加了一个新的特性,它为企业简化了整个流程。该特性提供:

  • 能够将多组 IPSec 配置策略存储在 LDAP 服务器上,实现集中管理。
  • 能够定义 IPSec 配置策略,并将其与一组主机关联。

    与某个 IPSec 配置策略相关联的所有机器将使用由一个 XML 文件定义的同一组 IPSec 配置(规则)。一台机器在同一时间只可以与一个策略关联。

  • 每 60 分钟将刷新一次设置。如果隧道配置发生了变化,那么将会销毁旧的隧道,并且将创建新的隧道。
  • 仅支持第一阶段隧道的基于证书的身份验证。

新的 AIX 特性为每对 IP 地址创建隧道,这是 IPSec 配置策略的一部分。


配置 AIX IPSec

AIX 用于创建 IPSec 隧道的配置文件是 XML 格式。为了在两个系统之间创建一条隧道,必须配置超过 20 个配置参数。可配置的参数被放进 XML 文件中。然而,XML 文件中不包含 IP 地址;从与策略关联的机器获取 IP 地址。AIX IPSec 提供了一个命令,可将 XML 配置文件加载到 LDAP 服务器中。

清单 1 显示了存储在 LDAP 服务器上的一个样例 XML 配置文件。

清单 1. 样例 XML 配置文件
$cat ipsec_ldap.xml
<?xml version="1.0"?>
<AIX_VPN
      Version="2.0">
   <IKEProtection
         IKE_Role="Both"
         IKE_Version="2"
         IKE_XCHGMode="Main"
         IKE_KeyOverlap="10"
         IKE_Flags_UseCRL="No"
         IKE_ProtectionName="P1Pol"
         IKE_ResponderKeyRefreshMaxKB="200"
         IKE_ResponderKeyRefreshMinKB="1"
         IKE_ResponderKeyRefreshMaxMinutes="1440"
         IKE_ResponderKeyRefreshMinMinutes="1">
      <IKETransform
            IKE_Encryption="3DES-CBC"
            IKE_Hash="SHA"
            IKE_DHGroup="2"
            IKE_PRF="PRF_HMAC_SHA1"
            IKE_AuthenticationMethod="RSA_signatures"/>
   </IKEProtection>
   <IPSecProposal
         IPSec_ProposalName="P2Prop">
      <IPSecESPProtocol
            ESP_Encryption="ESP_3DES"
            ESP_KeyRefreshKB="0"
            ESP_Authentication="HMAC-SHA"
            ESP_ExtendedSeqNum="0"
            ESP_EncapsulationMode="Tunnel"
            ESP_KeyRefreshMinutes="480"/>
   </IPSecProposal>
   <IPSecProtection
         IPSec_Role="Both"
         IPSec_KeyOverlap="10"
         IPSec_ProposalRefs="P2Prop "
         IPSec_ProtectionName="P2Pol"
         IPSec_InitiatorDHGroup="1"
         IPSec_ResponderDHGroup="NO_PFS GROUP_1 GROUP_2"
         IPSec_Flags_UseLifeSize="No"
         IPSec_Flags_UseCommitBit="No"
         IPSec_ResponderKeyRefreshMaxKB="200"
         IPSec_ResponderKeyRefreshMinKB="1"
         IPSec_ResponderKeyRefreshMaxMinutes="43200"
         IPSec_ResponderKeyRefreshMinMinutes="1"/>
</AIX_VPN>

将 LDAP 客户端配置为 IPSec 端点

将成为 IPSec 隧道中端点的所有机器必须已配置为 LDAP 客户端。在 AIX LDAP 客户端的 ldap.cfg 文件中有两个新的配置选项,以支持 AIX IPSec 隧道,如清单 2 所示。

清单 2. 配置选项
# Base Dn where IPSec policy and IPSec host data is stored on LDAP server.
ipsecbasedn:ou=ipsec,cn=aixdata
ip_hostbasedn:ou=Ip_host,cn=aixdata

更新 ldap.cfg 文件之后,使用清单 3 中的命令刷新 secldapclntd 守护程序。

清单 3. 刷新
# restart-secldapclntd
The secldapclntd daemon terminated successfully.
Starting the secldapclntd daemon.
The secldapclntd daemon started successfully.

# mkipsecldap -D <binddn> -w <bindpwd>  [-b <basedn> ]

例如,您可以使用 # mkipsecldap -D cn=admin -w adminpwd

为了验证 IPSec 配置的父对象是否已被添加,使用 ldapsearch 命令,如清单 4 所示。

清单 4. 验证
# ldapsearch -h vayu17.in.ibm.com -D cn=admin -w
adminpwd -s sub -b "ou=Ip_host,cn=aixdata"
objectclass=*
ou=Ip_host,cn=aixdata
ou=Ip_host
objectClass=organizationalUnit
objectClass=top

# ldapsearch -h vayu17.in.ibm.com -D cn=admin -w
adminpwd -s sub -b " ou=ipsec,cn=aixdata" objectclass=*
ou=ipsec,cn=aixdata
ou=ipsec
objectClass=organizationalUnit
objectClass=top

您还需要确保所有的 IKE 服务都是活动的,如清单 5 所示。

清单 5. IKE 服务
# lssrc -g ike
Subsystem         Group            PID          Status
 cpsd             ike              2883782      active
 tmd              ike              5373970      active
 iked             ike              9175268      active

为客户端机器创建 GSKit 密钥文件

AIX IPSec 简化特性支持基于证书的身份验证。您可以通过使用 IBM Global Security Kit (GSKit) 命令为每个客户端机器创建证书。

使用 GSKit 创建证书

本节介绍如何使用 GSKit 为 IPSec 证书身份验证机制创建证书。IBM GSKit 是许多 IBM 产品所使用的一个库和一组命令行工具。在 AIX 中的 IPSec 是一个特性,它针对 IPSec 证书身份验证机制使用这些文件。(对 GSKit 工具的进一步讨论超出了本文的范围。)

下列步骤显示了用于为通过 IPSec 进行相互相通信的两台机器创建必要的 GSKit 密钥文件的典型命令。两台机器的密钥文件中的证书由相同的证书授权机构 (CA) 签署。生成密钥文件后,必须将它们安装到每台机器的 /etc/security 目录。

  1. 使用 gskit 命令创建两个密钥数据库文件。使用清单 6 中的代码为机器 1 创建数据库。
    清单 6. 为机器 1 创建数据库
    #gsk7cmd -keydb -create -db /GSK_CERTS/ikekey -pw
    123456 -type cms –stash

    使用清单 7 中的代码为机器 2 创建数据库。
    清单 7. 为机器 2 创建数据库
    #gsk7cmd -keydb -create -db /GSK_CERTS/ikekey1 -pw
    123456 -type cms –stash
  2. 使用清单 8 中的命令,在第一台机器的密钥文件中生成根证书授权机构。
    清单 8. 根证书授权机构
    #gsk7cmd  -cert -create -db /GSK_CERTS/ikekey.kdb -pw
    123456 -size 1024 -dn "C=IN,O=IBM,CN=ipsecroot"
    -label Root_CA -default_cert  yes -ca yes
  3. 使用清单 9 中的命令,列出数据库内容。
    清单 9. 列出数据库内容
    #gsk7cmd -cert -list -db /GSK_CERTS/ikekey.kdb -pw 123456
    Certificates in database:/GSK_CERTS/ikekey.kdb
       Entrust.net Global Secure Server Certification Authority
       Entrust.net Global Client Certification Authority
       Entrust.net Client Certification Authority
       Entrust.net Certification Authority (2048)
       Entrust.net Secure Server Certification Authority
       VeriSign Class 3 Secure Server CA
       VeriSign Class 3 Public Primary Certification Authority
       VeriSign Class 2 Public Primary Certification Authority
       VeriSign Class 1 Public Primary Certification Authority
       VeriSign Class 4 Public Primary Certification Authority - G2
       VeriSign Class 3 Public Primary Certification Authority - G2
       VeriSign Class 2 Public Primary Certification Authority - G2
       VeriSign Class 1 Public Primary Certification Authority - G2
       VeriSign Class 4 Public Primary Certification Authority - G3
       VeriSign Class 3 Public Primary Certification Authority - G3
       VeriSign Class 2 Public Primary Certification Authority - G3
       VeriSign Class 1 Public Primary Certification Authority - G3
       Thawte Personal Premium CA
       Thawte Personal Freemail CA
       Thawte Personal Basic CA
       Thawte Premium Server CA
       Thawte Server CA
       Root_CA

Root_CA 是所创建的新证书授权机构。

在创建根 CA 后,为第一台机器的用户证书创建一个证书请求。清单 10 显示了一个示例。

清单 10. 证书请求
#gsk7cmd -certreq -create -db /GSK_CERTS/ikekey.kdb
-pw 123456 -label Test_Cert1 -dn
"C=IN,ST=KA,L=BA,O=IBM,OU=ISL,CN=test1" -size 1024
-file /GSK_CERTS/cert1_csr.arm

现在,已创建证书请求,使用 Root_CA 证书签署证书请求,从而生成用户证书,如清单 11 所示。

清单 11. 签署证书请求
#gsk7cmd -cert -sign -db /GSK_CERTS/ikekey.kdb  -pw
123456 -label Root_CA -target /GSK_CERTS/Test_Cert1.cer
-format ascii -expire 100 -file /GSK_CERTS/cert1_csr.arm

创建证书后,将它添加到第一台机器的 GSKit 密钥数据库中。清单 12 显示了一个示例。

清单 12. 添加证书
#gsk7cmd -cert -receive -file /GSK_CERTS/Test_Cert1.cer
-db /GSK_CERTS/ikekey.kdb  -pw 123456 -type cms -format ascii

您可以使用清单 13 中所示的命令列出数据库。

清单 13. 列出数据库
#gsk7cmd -cert -list -db /GSK_CERTS/ikekey.kdb -pw 123456
Certificates in database:/GSK_CERTS/ikekey.kdb
   Entrust.net Global Secure Server Certification Authority
   Entrust.net Global Client Certification Authority
   Entrust.net Client Certification Authority
   Entrust.net Certification Authority (2048)
   Entrust.net Secure Server Certification Authority
   VeriSign Class 3 Secure Server CA
   VeriSign Class 3 Public Primary Certification Authority
   VeriSign Class 2 Public Primary Certification Authority
   VeriSign Class 1 Public Primary Certification Authority
   VeriSign Class 4 Public Primary Certification Authority - G2
   VeriSign Class 3 Public Primary Certification Authority - G2
   VeriSign Class 2 Public Primary Certification Authority - G2
   VeriSign Class 1 Public Primary Certification Authority - G2
   VeriSign Class 4 Public Primary Certification Authority - G3
   VeriSign Class 3 Public Primary Certification Authority - G3
   VeriSign Class 2 Public Primary Certification Authority - G3
   VeriSign Class 1 Public Primary Certification Authority - G3
   Thawte Personal Premium CA
   Thawte Personal Freemail CA
   Thawte Personal Basic CA
   Thawte Premium Server CA
   Thawte Server CA
   Test_Cert1
   Root_CA

请注意,清单中的其他条目是在创建密钥数据库时默认创建的,可以删除它们。

按照类似的过程,为第二台机器创建一个证书。首先,创建证书请求,如清单 14 所示。

清单 14. 为机器 2 创建证书请求
(0) root @ vayu09:6.1.0.0:/GSK_CERTS
# gsk7cmd -certreq -create -db /GSK_CERTS/ikekey.kdb
    -pw 123456 -label Test_Cert2 -dn
    "C=IN,ST=KA,L=BA,O=IBM,OU=ISL,CN=test2" -size 1024 -
    file /GSK_CERTS/cert2_csr.arm

下一步是用 ROOT_CA 证书授权机构的证书签署证书。清单 15 显示了一个示例。

清单 15. 签署证书
(0) root @ vayu09:6.1.0.0:/GSK_CERTS
# gsk7cmd -cert -sign -db /GSK_CERTS/ikekey.kdb  -pw
    123456 -label Root_CA -target /GSK_CERTS/Test_Cert2.cer
    -format ascii -expire 100 -file
    /GSK_CERTS/cert2_csr.arm

将已签署的证书导入 GSKit 密钥文件,如清单 16 所示。

清单 16. 导入已签署的证书
(0) root @ vayu09:6.1.0.0:/GSK_CERTS
# gsk7cmd -cert -receive -file
    /GSK_CERTS/Test_Cert2.cer -db /GSK_CERTS/ikekey.kdb -
    pw 123456 -type cms -format ascii

您可以使用清单 17 中的代码验证这两个证书是否都在文件中。

清单 17. 验证
# gsk7cmd -cert -list -db /GSK_CERTS/ikekey.kdb -pw
123456
Certificates in database:/GSK_CERTS/ikekey.kdb
   Test_Cert2
   Test_Cert1
   Root_CA

此时,客户端机器的证书都存储在一个主密钥文件中。您可以将证书复制到不同的文件,使它们能够被分发到每一台客户端机器。请确保 Root_CA 也被复制到客户端机器的 GSKit 文件。清单 18 显示了一个示例。

清单 18. 将证书复制到不同的文件
#gsk7cmd -cert -export -db /GSK_CERTS/ikekey1.kdb -pw
 123456 -label Root_CA -type cms -target
 /GSK_CERTS/ikekey1.kdb -target_pw 123456 -target_type
cms

(127) root @ vayu09:6.1.0.0:/GSK_CERTS
# gsk7cmd -cert -export -db /GSK_CERTS/ikekey1.kdb -pw
 123456 -label Test_Cert2  -type cms -target
 /GSK_CERTS/ikekey1.kdb -target_pw 123456 -target_type
cms

您可以列出新的密钥文件的内容,以验证其内容,如清单 19 所示。

清单 19. 验证内容
# gsk7cmd -cert -list -db /GSK_CERTS/ikekey1.kdb -pw
 123456
Certificates in database:/GSK_CERTS/ikekey1.kdb
   Root_CA
   Test_Cert2

然后,从主密钥文件删除 Test_Cert2 ,使它只包含第一台机器的证书。清单 20 显示了一个示例。

清单 20. 删除 Test_Cert2
#gsk7cmd -cert -delete -db ikekey.kdb  -pw 123456 -
    label " Test_Cert2”

为要验证每一个文件都只包含其机器所需要的证书,列出各文件的内容,如清单 21 所示。

清单 21. 列出内容
# gsk7cmd -cert -list -db /GSK_CERTS/ikekey1.kdb -pw
123456
Certificates in database:/GSK_CERTS/ikekey1.kdb
   Root_CA
   Test_Cert2

# gsk7cmd -cert -list -db /GSK_CERTS/ikekey.kdb -pw
123456
Certificates in database:/GSK_CERTS/ikekey.kdb
   Test_Cert1
   Root_CA

准备好证书后,将密钥数据库复制到每台机器的 /etc/security 路径中。

确保所有与 IPSec 相关的服务都正常运行,如清单 22 所示。

清单 22. 检查与 IPSec 相关的服务
# lssrc -g ike
Subsystem         Group            PID          Status
 cpsd             ike              2883782      active
 tmd              ike              5373970      active
 iked             ike              9175268      active

现在,通过在 LDAP 服务器上创建策略,就可以在两台机器之间创建隧道。


定义客户端机器的 IPSec 策略

使用 ikedb 命令将 IPSec 策略关联到第一台机器,如清单 23 所示。

清单 23. 将 IPSec 策略关联到机器 1
# ikedb -R LDAP -A testpolicy -f ldap.xml -h vayu09.in.ibm.com -C
"/C=IN/ST=KA/L=BA/O=IBM/OU=ISL/CN=test1"

testpolicy 是策略的名称,而 -C 采用可区分的名称字符串作为输入。这个可区分的名称必须与传递给 –dn 选项的名称相同,以便为第一台机器生成证书。

同样,使用清单 24 中的代码,将同样的策略关联到第二台机器。

清单 24. 将同样的策略关联到机器 2
# ikedb -R LDAP -A testpolicy -f ldap.xml -h
vayu07.in.ibm.com -C
"/C=IN/ST=KA/L=BA/O=IBM/OU=ISL/CN=test2"

成功完成命令后,就可以创建隧道。


启动客户端机器之间的 IPSec 隧道

要想在 LDAP 服务器中所定义的所有客户端机器之间创建 IPSec 隧道,使用 ike 命令,如清单 25 所示。

清单 25. ike 命令
# ike cmd=activate
Phase 2 tunnel 1 On_Demand activate request initiated.

要验证隧道是否正常工作,从一台客户端机器向另一台客户端机器发出 ping 命令。然后,也可以运行 ike cmd=list 命令,列出已创建的隧道。清单 26 显示了一个示例。

清单 26. 列出隧道
# ike cmd=list
Phase  Tun Id  Status      Local Id                        Remote Id
1      1       Active      9.124.101.209                   9.126.85.157
2      1       Active      9.124.101.209                   9.126.85.157

其他有用的命令

要显示一个策略的 XML 文件,使用:# ikedb –R LDAP –g <policy name>

要为存储在 LDAP 服务器上的 XML 文件转储 DTD,使用:# ikedb -R LDAP –o

要在 LDAP 服务器上删除策略,使用:#ikedb –R LDAP –D <policy name>

要刷新隧道配置,使用:# ikedb -R LDAP

AIX IPSec 特性还具有自动刷新功能。要启用自动刷新,使用来自 secldapclntd LDAP 守护程序的 ikedb –R LDAP –p。IPSec 隧道将按照 ldap.cfg 文件中的 IPSECrefreshInterval 参数所定义的时间间隔进行刷新。


结束语

本文介绍了如何使用 AIX 中的集中式 IPSec 管理特性来管理大量客户端机器的 IPSec 配置。

参考资料

学习

  • IBM AIX 6.1 信息中心:查找有关 LDAP 客户端配置的信息、IP 安全性的详细信息,并了解如何规划、安装、维护和使用 AIX 操作系统。
  • 配置 LDAP 服务器:获取如何配置现有 LDAP 服务器的指南。
  • Managing certificates with IBM GSKit”(developerWorks,2012 年 11 月)是利用 IBM Global Security Kit 创建、签署、安装并使用证书的简单指南。
  • 在 developerWorks 的 安全性 站点上获得有关安全主题的更多信息。
  • 在 Twitter 上关注 developerWorks
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

  • 以最适合您的方式 评估 IBM 产品:下载产品试用版、在线试用产品,或在云环境中使用产品。

讨论

  • 加入 developerWorks 社区。查看开发人员推动的博客、论坛群组和维基,并与其他 developerWorks 用户交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=948160
ArticleTitle=在 AIX 上简化和集中化 IPSec 管理
publish-date=10142013