以下过程提供了如何使用 IPsec 保证两个系统之间的通信安全过程的加密材料。您要为两个系统(partym 和 enigma)生成密钥。您在一个系统上生成密钥,然后在两个系统中使用在第一个系统中生成的密钥。
必须位于全局区域中才能手动管理共享 IP 区域的加密材料。
为 SA 生成加密材料。
您需要将三个十六进制随机数用于外发通信,三个十六进制随机数用于传入通信。
因此,一个系统需要生成以下数字:
两个作为 spi 关键字值的十六进制随机数。一个数字用于外发通信,一个数字用于传入通信。每个数字的长度最大可以为八个字符。
两个用于验证的 SHA1 算法的十六进制随机数。对于 160 位密钥,每个数字的长度必须为 40 个字符。一个数字用于 dst enigma,另一个数字用于 dst partym。
两个用于 ESP 加密的 AES 算法的十六进制随机数。对于 256 位密钥,每个数字的长度必须为 64 个字符。一个数字用于 dst enigma,另一个数字用于 dst partym。
如果您的站点上有随机数生成器,请使用此生成器。您也可以使用 od 命令。有关过程,请参见如何在 Solaris 系统上生成随机数。
在其中一个系统的系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。
创建 SA。
启用 ipseckey 命令模式。
# ipseckey > |
> flush > |
您必须在通信系统上协调密钥替换。当您在一个系统上替换 SA 时,也必须在远程系统上替换此 SA。
要创建 SA,请键入以下命令。
> add protocol spi random-hex-string \ src addr dst addr2 \ protocol-prefix_alg protocol-algorithm \ protocol-prefixkey random-hex-string-of-algorithm-specified-length |
也可使用此语法来替换已刷新的 SA。
指定 esp 或 ah。
以十六进制格式指定最多包含八个字符的随机数。字符以 0x 开头。如果输入多于安全参数索引 (security parameter index, SPI) 所能接受的数字,系统会忽略多余的数字。如果输入少于 SPI 可接受的数字,系统对您的输入进行填充。
指定一个系统的 IP 地址。
指定 addr 的同级系统的 IP 地址。
指定 encr 或 auth 中的一个。encr 前缀与 esp 协议一起使用。auth 前缀与 ah 协议一起使用,用于验证 esp 协议。
为 ESP 或 AH 指定算法。每种算法都需要具有特定长度的密钥。
验证算法包括 MD5 和 SHA1。从 Solaris 10 4/09 发行版开始,支持 SHA256 和 SHA512。加密算法包括 DES、3DES、AES 和 Blowfish。
指定具有算法所要求长度的随机十六进制数。例如,MD5 算法要求其 128 位密钥使用 32 个字符的字符串。3DES 算法要求其 192 位密钥使用 48 个字符的字符串。
例如,在 enigma 系统上,保护外发的包。
使用在步骤 1 中生成的随机数。
对于 Solaris 10 1/06:
> add esp spi 0x8bcd1407 \ src 192.168.116.16 dst 192.168.13.213 \ encr_alg aes \ auth_alg sha1 \ encrkey c0c65b888c2ee301c84245c3da63127e92b2676105d5330e85327c1442f37d49 \ authkey 6fab07fec4f2895445500ed992ab48835b9286ff > |
同级系统必须使用相同的加密材料和相同的 SPI。
在 enigma 系统上,仍使用 ipseckey 命令模式保护传入的包。
键入以下命令来保护包:
> add esp spi 0x122a43e4 \ src 192.168.13.213 dst 192.168.116.16 \ encr_alg aes \ auth_alg sha1 \ encrkey a2ea934cd62ca7fa14907cb2ad189b68e4d18c976c14f22b30829e4b1ea4d2ae \ authkey c80984bc4733cc0b7c228b9b74b988d2b7467745 > |
对于每个 SA,密钥和 SPI 可以不同。您应该为每个 SA 指定不同的密钥和不同的 SPI。
要退出 ipseckey 命令模式,请按 Ctrl-D 组合键或键入 quit。
将加密材料添加到 /etc/inet/secret/ipseckeys 文件。
在 Solaris 10 4/09 发行版之前的发行版中,此步骤可确保在重新引导时这些加密材料可用于 IPsec。
/etc/inet/secret/ipseckeys 文件中的行与 ipseckey 命令行语言完全相同。
例如,enigma 系统上的 /etc/inet/secret/ipseckeys 文件的显示与以下内容类似:
# ipseckeys - This file takes the file format documented in # ipseckey(1m). # Note that naming services might not be available when this file # loads, just like ipsecinit.conf. # # for outbound packets on enigma add esp spi 0x8bcd1407 \ src 192.168.116.16 dst 192.168.13.213 \ encr_alg aes \ auth_alg sha1 \ encrkey c0c65b888c2ee301c84245c3da63127e92b2676105d5330e85327c1442f37d49 \ authkey 6fab07fec4f2895445500ed992ab48835b9286ff # # for inbound packets add esp spi 0x122a43e4 \ src 192.168.13.213 dst 192.168.116.16 \ encr_alg aes \ auth_alg sha1 \ encrkey a2ea934cd62ca7fa14907cb2ad189b68e4d18c976c14f22b30829e4b1ea4d2ae \ authkey c80984bc4733cc0b7c228b9b74b988d2b7467745 |
# chmod 400 /etc/inet/secret/ipseckeys |
在 partym 系统上重复该过程。
使用 enigma 上使用的相同加密材料。
两个系统上的加密材料必须完全相同。如以下示例所示,只有 ipseckeys 文件中的注释不同。注释不同是因为 dst enigma 在 enigma 系统上为传入,在 partym 系统上为外发。
# partym ipseckeys file # # for inbound packets add esp spi 0x8bcd1407 \ src 192.168.116.16 dst 192.168.13.213 \ encr_alg aes \ auth_alg sha1 \ encrkey c0c65b888c2ee301c84245c3da63127e92b2676105d5330e85327c1442f37d49 \ authkey 6fab07fec4f2895445500ed992ab48835b9286ff # # for outbound packets add esp spi 0x122a43e4 \ src 192.168.13.213 dst 192.168.116.16 \ encr_alg aes \ auth_alg sha1 \ encrkey a2ea934cd62ca7fa14907cb2ad189b68e4d18c976c14f22b30829e4b1ea4d2ae \ authkey c80984bc4733cc0b7c228b9b74b988d2b7467745 |
启用 manual-key 服务。
# svcadm enable svc:/network/ipsec/manual-key |
要在当前发行版中替换密钥,请参见示例 20–4。
在此示例中,管理员要配置运行当前 Solaris 10 发行版的系统。管理员生成新密钥,更改 ipseckeys 文件中的加密信息,然后重新启动服务。
首先,管理员通过完成如何在 Solaris 系统上生成随机数生成密钥。
然后,管理员在 /etc/inet/secret/ipseckeys 文件中使用所生成的密钥。
管理员使用了相同的算法。因此,管理员只更改 SPI、encrkey 和 authkey 的值:
add esp spi 0x8xzy1492 \ src 192.168.116.16 dst 192.168.13.213 \ encr_alg aes \ auth_alg sha1 \ encrkey 0a1f3886b06ebd7d39f6f89e4c29c93f2741c6fa598a38af969907a29ab1b42a \ authkey a7230aabf513f35785da73e33b064608be41f69a # # add esp spi 0x177xce34\ src 192.168.13.213 dst 192.168.116.16 \ encr_alg aes \ auth_alg sha1 \ encrkey 4ef5be40bf93498017b2151d788bb37e372f091add9b11149fba42435fefe328 \ authkey 0e1875d9ff8e42ab652766a5cad49f38c9152821 |
最后,管理员重新启动 manual-key 服务。添加新密钥前,重新启动命令会刷新旧密钥。
# svcadm restart manual-key |