AIX 和 Windows 之间的异构 IPSec 解决方案

Internet 安全性是一个重大问题。Internet Protocol Security (IPSec) 框架提供一组协议,帮助您在 IP 数据包级别上实现安全性。IPSec 可以跨不同类型的环境工作,为事务创建更安全的隧道。本文讨论通过配置 IPSec 在 AIX® 和 Windows® 之间建立安全连接的好处。

Anto A. John, 系统软件工程师, IBM

/developerworks/i/p-ajohn.jpgAnto John 是在印度班加罗尔 IBM India Software Labs 工作的 AIX 开发支持专家。他主要从事 AIX 安全组件(安全库)、装载模块(LDAP 和 Kerberos)和新的 AIX 6.1 安全特性 (EFS)。在过去三年,他一直研究 AIX 安全组件以及 OpenSSH 和 OpenSSL 等开放源码组件。他毕业于 BITS Pilani,获得了计算机科学工程硕士学位。


developerWorks 投稿作者

Akshay Kaushik, 开发支持专家, IBM

http://www.ibm.com/developerworks/i/p-kakshay.jpgAkshay Kaushik 是在印度 Bangalore 的 IBM 印度软件实验室工作的 IBM System Director 开发支持专家。他在 AIX 网络安全组件方面有三年经验。他曾经从事 IPSec、Radius 和 OpenSSH 等开放源码组件。他拥有印度 Maharshi Dayanand University 的工程学士学位。



2010 年 11 月 15 日

简介

IPSec (Internet Protocol Security) 是用来保护 IP 通信的协议。它对流经网络的每个 IP 数据包进行身份验证和加密。这对于在不同的系统之间进行互操作尤其重要,让我们能够不必担心系统之间的安全风险。

虚拟私有网络 (VPN) 是企业的私有内部网跨 Internet 等公共网络的扩展,它通过私有隧道创建安全的私有连接。VPN 可以安全地通过 Internet 传输信息,把远程用户、分支机构办公室和业务伙伴连接成扩大的企业网络。

在 VPN 中,整个通信路径上到处都有可能受到安全攻击的地方:在拨号链路上,在 ISP 的接入服务器中,在 Internet 中,在防火墙或路由器中,甚至在企业内部网中。因此,需要对 VPN 进行保护。Internet Engineering Task Force 建议用 IPSec 协议保护隧道通信流。

VPN 中有各种类型的端点,这要求 IPSec 解决方案能够适应各种类型的系统和环境。本文讨论 AIX IPSec 解决方案以及在 Windows 作为另一个端点的情况下的配置,以此说明这个解决方案适应各种系统的能力。


为 Windows 2000 配置 IPSec

IPSec for Windows 2000 的配置需要使用 AIX snap-in 创建隧道参数和加密类型。

创建定制的 MMC 控制台

可以使用 MMC (Microsoft Management Console) 配置和监视 Windows 2000 系统。需要把 IPSec snap-in 添加到这个控制台中。

  1. 在 Windows 桌面上,单击 Start,单击 Run,在 Open 文本框中输入 mmc。单击 OK
  2. File 菜单中,单击 Add/Remove Snap-in
  3. Add/Remove Snap-in 对话框中,单击 Add
  4. Add Standalone Snap-in 对话框中,单击 IP Security Policy Management,然后单击 Add
  5. 确认选择了 Local Computer,单击 Finish
  6. Add Standalone Snap-in 对话框中,单击 IP Security Monitor,然后单击 Add
  7. 单击 Close 关闭 Add Standalone Snap-in 对话框。
  8. 单击 OK 关闭 Add/Remove Snap-in 对话框。
  9. 把它保存为 IPSec.msc 供以后使用。
IPSec Snap-in
IPSec Snap-in 的屏幕图

创建 IPSec 策略

在这一步中,在 Windows 系统上创建和定义 IPSec 策略,Windows 系统要使用这些策略与其他系统协商。

  1. MMC Console 中,右键单击 IP Security Policies on Local Machine,然后单击 Create IP Security Policy。IP Security Policy Wizard 出现。
    IP Security Policy Wizard
    IP Security Policy Wizard 的屏幕图
  2. 单击 Next
  3. 输入 Policy1 作为策略名称,单击 Next
  4. 如果希望设置自己的规则,那么清除 Activate the default response rule 复选框,然后单击 Next
  5. 确保选择 Edit Properties 复选框(这是默认设置),然后单击 Finish
    创建的 IPSec Policy1
    Policy1 属性窗口的屏幕图
  6. 在刚才创建的策略的 Properties 对话框中,确保选择右下角的 Use Add Wizard 复选框,然后单击 Add 启动 Security Rule Wizard
  7. 单击 Next 继续通过 Security Rule Wizard
  8. 选择 This rule does not specify a tunnel(默认情况下是选中的),然后单击 Next
  9. 选择 All network connections 单选按钮(默认情况下是选中的),单击 Next

创建筛选规则

  1. IP Filter List 对话框中,单击 Add。显示空的 IP 筛选列表。把筛选命名为 Policy1 Filter List
    IP Filter List
    IP Filter List 窗口的屏幕图
    Policy1 Filter List
    Policy1 Filter List 窗口的屏幕图
  2. 确保在屏幕的右边中间区域选择 Use Add Wizard,然后单击 Add。这会启动 IP Filter Wizard
  3. 单击 Next 继续。
  4. 单击 Next 接受 My IP Address 作为默认的源地址。
  5. 从下拉列表框中选择 A Specific IP address;输入您的 Partners IP Address。在这里,还可以通过定义子网让 IPSec 与多个主机通信,然后单击 Next
  6. 单击 Next 接受协议类型为 Any
  7. 确保清除 Edit Properties 复选框(这是默认设置),单击 Finish
  8. 单击 Close 离开 IP Filter List 对话框,返回到 New Rule Wizard
  9. Filter List 对话框中,选择 Policy1 Filter List 旁边的单选按钮。
    创建的 Policy1 Filter List
    Policy1 Filter List 窗口的的屏幕图
  10. 单击 Next 开始配置筛选动作。

配置筛选动作

在本节中,我们定义筛选执行的不同动作。

  1. 在 Filter Action 窗口显示的 Filter 对话框中,选择 Use Add Wizard 复选框,然后单击 Add
    Filter Action
    Filter Action 的屏幕图
  2. 单击 Next 继续通过 Filter Action Wizard
  3. 把这个筛选动作命名为 Policy1 Filter Action 并单击 Next
  4. Filter Action General Options 对话框中,选择 Negotiate Security,然后单击 Next
  5. 在下一个向导页面上单击 Do not communicate with computers that do not support IPSec,然后单击 Next 以保护系统免受入侵。
  6. 从安全方法列表中选择 Custom,然后单击 Settings。在这里选择使用 AH (Authentication Header) 还是使用 ESP (Encapsulating Security Payload) 的安全方法。
  7. 选择在 IPSec 隧道中加密数据所用的加密算法和散列算法。单击 OK 退出 Custom Settings
  8. 单击 Next
    选择安全方法
    选择安全方法的的屏幕图
  9. 确保清除 Edit Properties 复选框(这是默认设置),单击 Finish 关闭向导。
  10. Filter Action 对话框中,单击 Policy1 Filter Action 旁边的单选按钮,然后单击 Next
  11. 在 Authentication method 中,选择 Use this string to protect the key exchange(预共享密钥)旁边的单选按钮。如果不希望使用对称的预共享密钥,还可以指定证书。
  12. 对于选择的预共享密钥,指定 IPSec 隧道中的身份验证(例如 12345)并单击 Next
  13. 确保清除 Edit Properties 复选框(这是默认设置),单击 Finish

    在与伙伴协商期间将使用刚才配置的筛选动作。注意,可以在其他策略中重用这个筛选动作。

  14. 在现在显示的 Properties 页面上,单击 Close。我们已经成功地配置了一个 IPSec 策略。
    创建的 IPSec Policy1
    IPSec Policy1 窗口的的屏幕图

分配策略

右键单击刚才创建的策略并单击 Assign

把 Policy1 分配为 IPSec Security Policy
把 Policy1 分配为 IPSec Security Policy 的屏幕图

为 AIX 配置 IPSec

为了进行 IPSec 协商,需要在防火墙上打开几个端口和协议:

IPSec 使用的端口和协议
   - UDP 端口 500(用于 ISAKMP 通信流)   
   协议  
   - IP 协议 50(用于 ESP 通信流)                        
   - IP 协议 51(用于 AH 通信流)
   - 您的环境需要的其他端口

实现 AIX IPSec 的前提条件

安装 AIX IPSec 软件并应用最新的 IPSec 补丁:

IPSec 文件集
      bos.msg.en_US.net.ipsec                                            
      bos.net.ipsec.keymgt                                               
      bos.net.ipsec.rte                                                  
      bos.net.ipsec.websm          
      bos.crypto-priv
      gskak.rte

运行以下命令在 AIX 上启动 IP 安全性:

Smitty ipsec4 ------->start/stop IP Security-------->start IP Security
启动 IP 安全性
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
                                           [Entry Fields]
Start IP Security                    [Now and After Reboot]
Deny All Non_Secure IP Packets                 [no]

Enter 启动 IP 安全性。运行以下命令检查 IPSec 设备的状态。

#lsdev -Cc ipsec

两个设备(ipsec_v4 和 ipsec_v6)都应该处于 Available 状态。

 # lsdev -Cc ipsec
ipsec_v4 Available  IP Version 4 Security Extension
ipsec_v6 Available  IP Version 6 Security Extension

为了在 AIX 上配置 IPSec,首先需要创建 IPSec 配置文件。这个文件应该采用 XML 文件格式。

示例 XML 文件(用文件名 IPSECpolicy1 保存它)
<?xml version="1.0"?>
<AIX_VPN
      Version="2.0">
   <IKEProtection
         IKE_Role="Both"
         IKE_XCHGMode="Main"
         IKE_KeyOverlap="10"
         IKE_Flags_UseCRL="No"
         IKE_ProtectionName="P1Pol"
         IKE_ResponderKeyRefreshMaxKB="200"
         IKE_ResponderKeyRefreshMinKB="1"
         IKE_ResponderKeyRefreshMaxMinutes="480"
         IKE_ResponderKeyRefreshMinMinutes="1">
      <IKETransform
            IKE_Hash="MD5"
            IKE_DHGroup="1"
            IKE_Encryption="DES-CBC"
            IKE_KeyRefreshMinutes="480"
            IKE_AuthenticationMethod="Preshared_key"/>
   </IKEProtection>
   <IKETunnel
         IKE_TunnelName="P1"
         IKE_ProtectionRef="P1Pol"
         IKE_Flags_AutoStart="Yes"
         IKE_Flags_MakeRuleWithOptionalIP="No">
      <IKELocalIdentity>
         <IPV4_Address
               Value="Local AIX Host IP"/>
      </IKELocalIdentity>
      <IKERemoteIdentity>
         <IPV4_Address
               Value="Remote Windows Server IP"/>
      </IKERemoteIdentity>
   </IKETunnel>
   <IKEPresharedKey
         Value="12345"
         Format="ASCII">
      <IKEPresharedRemoteID>
	  <PK_IPV4_Address
               Value="Remote Windows Server IP"/>
      </IKEPresharedRemoteID>
   </IKEPresharedKey>
   <IPSecProposal
         IPSec_ProposalName="P2Prop">
      <IPSecAHProtocol
            AH_KeyRefreshKB="0"
            AH_Authentication="AH_MD5"
            AH_EncapsulationMode="Transport"
            AH_KeyRefreshMinutes="580"/>
      <IPSecESPProtocol
            ESP_Encryption="ESP_DES"
            ESP_KeyRefreshKB="0"
            ESP_Authentication="HMAC-MD5"
            ESP_EncapsulationMode="Transport"
            ESP_KeyRefreshMinutes="580"/>
   </IPSecProposal>
   <IPSecProtection
         IPSec_Role="Both"
         IPSec_KeyOverlap="10"
         IPSec_ProposalRefs="P2Prop "
         IPSec_ProtectionName="P2Pol"
         IPSec_InitiatorDHGroup="0"
         IPSec_ResponderDHGroup="NO_PFS GROUP_1 GROUP_2 GROUP_5"
         IPSec_Flags_UseLifeSize="No"
         IPSec_Flags_UseCommitBit="No"
         IPSec_ResponderKeyRefreshMaxKB="200"
         IPSec_ResponderKeyRefreshMinKB="1"
         IPSec_ResponderKeyRefreshMaxMinutes="220"
         IPSec_ResponderKeyRefreshMinMinutes="1"/>
   <IPSecTunnel
         IKE_TunnelName="P1"
         IPSec_TunnelName="P2"
         IPSec_ProtectionRef="P2Pol"
         IPSec_Flags_OnDemand="Yes"
         IPSec_Flags_AutoStart="Yes">
      <IPSecLocalIdentity>
         <IPV4_Address
               Value="Local AIX Server IP"/>
      </IPSecLocalIdentity>
      <IPSecRemoteIdentity>
         <IPV4_Address
               Value="Remote Windows Server IP"/>
      </IPSecRemoteIdentity>
   </IPSecTunnel>
</AIX_VPN>

在 IKE 数据库中更新新的 IPSec 配置

  1. 首先需要删除 IKE 数据库中原来的 IPSec 配置,然后把新的配置文件放到 ikedb 中。
  2. 运行以下命令删除原来的配置:
    # ikedb -x
    P1_ITD database created successfully
    P2_ITD database created successfully
    P1_PREKEY database created successfully
    PROPOSAL_LIST database created successfully
    PROPOSAL database created successfully
    POLICY database created successfully
    GROUP database created successfully
    NDBM:/etc/ipsec/inet/DB/privkey
  3. 运行以下命令把新的配置文件放到数据库中:
    # ikedb -p IPSECpolicy1

检查所有三个守护进程(tmd、isakmpd 和 cpsd)是否正在运行。tmd 守护进程负责隧道管理,isakmpd 守护进程负责 IKE 协商。如果不使用证书进行身份验证,就不需要运行 cpsd 守护进程。

运行以下命令启动守护进程:

#  startsrc -g ike
0513-059 The cpsd Subsystem has been started. Subsystem PID is 434304.
0513-059 The tmd Subsystem has been started. Subsystem PID is 315554.
0513-059 The isakmpd Subsystem has been started. Subsystem PID is 401504.

运行以下命令检查守护进程是否已经启动。如果守护进程已经启动,守护进程的状态应该是 active。

# lssrc -g ike
Subsystem         Group            PID          Status
cpsd              ike              241894           active
tmd               ike              315550           active
isakmpd           ike              319648           active

运行以下命令检查是否激活了任何 IPSec 隧道:

# ike cmd=list
No tunnels match your request.

如果在希望通过隧道连接的系统之间没有找到隧道,那么运行以下命令激活隧道:

# ike cmd=activate
Phase 2 tunnel 1 activate request initiated.

注意,ike cmd 命令应该会列出隧道的状态。

# ike cmd=list
Phase  Tun Id  Status      Local Id                        Remote Id
1      1       Dormant         9.124.101.138                9.124.101.175
2      1       Dormant         9.124.101.138                9.124.101.175

需要 ping 远程主机以激活隧道。在隧道激活之前,可能会有一两个 ping 请求被拒绝。在此之后,请求会成功。

# ping 9.124.101.175
PING 9.124.101.175 (9.124.101.175): 56 data bytes
ping: sendto: Permission denied
ping: wrote 9.124.101.175 64 chars, ret=-1
64 bytes from 9.124.101.175: icmp_seq=1 ttl=255 time=0 ms
64 bytes from 9.124.101.175: icmp_seq=2 ttl=255 time=0 ms
64 bytes from 9.124.101.175: icmp_seq=3 ttl=255 time=0 ms

现在,已经成功地创建了 AIX 到 Windows 的 IPSec 隧道,可以使用它进行安全的网络通信。


结束语

本文展示了 AIX IPSec 跨异构环境工作的能力。与本文介绍的 Windows IPSec 配置相似,可以尝试配置其他操作系统,让它们使用 IPSec 与 AIX 安全地通信。这样做可以在包含各类系统的不安全公共网络中提供更强的安全性。

参考资料

学习

讨论

条评论

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=587265
ArticleTitle=AIX 和 Windows 之间的异构 IPSec 解决方案
publish-date=11152010