总览
Internet协议安全性是一个协议套件,为信息安全提供了各种功能。 单个用户或组织使用IPSec功能来保护所有应用程序的通信,而不必对应用程序本身进行任何修改。 IPSec使用身份验证,完整性检查和加密保护数据流量。 在通信堆栈的IP层提供了数据安全性,因此应用程序不需要任何修改。 但是,必须分别配置每台计算机才能使用IPSec。
在本文中,了解有关AIX IPSec管理功能的信息,该功能简化了如何为大型网络应用和管理IPSec配置。 该功能使用轻型目录访问协议(LDAP)作为维护和分发IPSec配置的中央存储库,对配置进行集中管理。 AIX 61V / 71H及更高版本支持此功能。
IPSEC简化的需求
当前,要使系统使用IPSec隧道,必须使用XML配置文件或命令行分别对其进行配置。 在配置几个系统时,这可能不是很大的工作,但是在具有多个系统的大型企业中,配置成为一项艰巨的任务。 要在两个系统之间创建IPSec隧道,需要配置20多个配置参数,其中只有少数是与计算机相关的。
使用大量的配置参数,IPSec配置容易出错且耗时。 为了减少工作量和错误配置的风险,AIX IPSec中添加了一项新功能,该功能简化了企业的整个过程。 该功能提供:
可以在LDAP服务器上存储多组IPSec配置策略以进行集中管理的能力。 定义IPSec配置策略并将其与一组主机关联的能力。
与IPSec配置策略关联的所有计算机将使用XML文件定义的同一组IPSec配置(规则)。 一台机器一次只能与一个策略关联。
设置每60分钟刷新一次。 如果隧道配置已更改,则旧的隧道将被销毁,新的隧道将被创建。 仅支持对阶段1隧道的基于证书的身份验证。
新的AIX功能为IPSec配置策略中的每对IP地址创建隧道。
配置AIX IPSec
AIX用于创建IPSec隧道的配置文件为XML格式。 必须配置20多个配置参数才能在两个系统之间创建隧道。 可配置参数放在XML文件中。 但是,XML文件不包含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目录中。
使用gskit命令创建两个密钥数据库文件。 要为机器1创建数据库,请使用清单6中的代码。
清单6.创建数据库,机器1
#gsk7cmd -keydb -create -db /GSK_CERTS/ikekey -pw
123456 -type cms –stash 要为机器2创建数据库,请使用清单7中的代码。
清单7.创建数据库,机器2
#gsk7cmd -keydb -create -db /GSK_CERTS/ikekey1 -pw
123456 -type cms –stash 使用清单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 要列出数据库内容,请使用清单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策略
要将IPSec策略与第一台计算机相关联,请使用ikedb命令,如清单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配置。
翻译自: https://www.ibm.com/developerworks/aix/library/se-simplify/index.html
相关资源:25个经典网站源代码