系统管理指南:IP 服务

Procedure如何手动创建 IPsec 安全关联

以下过程提供了如何使用 IPsec 保证两个系统之间的通信安全过程的加密材料。您要为两个系统(partymenigma)生成密钥。您在一个系统上生成密钥,然后在两个系统中使用在第一个系统中生成的密钥。

开始之前

必须位于全局区域中才能手动管理共享 IP 区域的加密材料。

  1. 为 SA 生成加密材料。

    您需要将三个十六进制随机数用于外发通信,三个十六进制随机数用于传入通信。

    因此,一个系统需要生成以下数字:

    • 两个作为 spi 关键字值的十六进制随机数。一个数字用于外发通信,一个数字用于传入通信。每个数字的长度最大可以为八个字符。

    • 两个用于验证的 SHA1 算法的十六进制随机数。对于 160 位密钥,每个数字的长度必须为 40 个字符。一个数字用于 dst enigma,另一个数字用于 dst partym

    • 两个用于 ESP 加密的 AES 算法的十六进制随机数。对于 256 位密钥,每个数字的长度必须为 64 个字符。一个数字用于 dst enigma,另一个数字用于 dst partym

    如果您的站点上有随机数生成器,请使用此生成器。您也可以使用 od 命令。有关过程,请参见如何在 Solaris 系统上生成随机数

  2. 在其中一个系统的系统控制台上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”


    注 –

    远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。


  3. 创建 SA。

  4. 启用 ipseckey 命令模式。


    # ipseckey
    
    >

    > 提示符指明您处于 ipseckey 命令模式下。

  5. 如果您要替换现有的 SA,请刷新当前的 SA。


    > flush
    > 

    为防止入侵者有时间破坏您的 SA,您需要替换加密材料。


    注 –

    您必须在通信系统上协调密钥替换。当您在一个系统上替换 SA 时,也必须在远程系统上替换此 SA。


  6. 要创建 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。

    protocol

    指定 espah

    random-hex-string

    以十六进制格式指定最多包含八个字符的随机数。字符以 0x 开头。如果输入多于安全参数索引 (security parameter index, SPI) 所能接受的数字,系统会忽略多余的数字。如果输入少于 SPI 可接受的数字,系统对您的输入进行填充。

    addr

    指定一个系统的 IP 地址。

    addr2

    指定 addr 的同级系统的 IP 地址。

    protocol-prefix

    指定 encrauth 中的一个。encr 前缀与 esp 协议一起使用。auth 前缀与 ah 协议一起使用,用于验证 esp 协议。

    protocol-algorithm

    为 ESP 或 AH 指定算法。每种算法都需要具有特定长度的密钥。

    验证算法包括 MD5 和 SHA1。从 Solaris 10 4/09 发行版开始,支持 SHA256 和 SHA512。加密算法包括 DES、3DES、AES 和 Blowfish。

    random-hex-string-of-algorithm-specified-length

    指定具有算法所要求长度的随机十六进制数。例如,MD5 算法要求其 128 位密钥使用 32 个字符的字符串。3DES 算法要求其 192 位密钥使用 48 个字符的字符串。

    1. 例如,在 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。


    2. 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。


  7. 要退出 ipseckey 命令模式,请按 Ctrl-D 组合键或键入 quit

  8. 将加密材料添加到 /etc/inet/secret/ipseckeys 文件。

    在 Solaris 10 4/09 发行版之前的发行版中,此步骤可确保在重新引导时这些加密材料可用于 IPsec。

    /etc/inet/secret/ipseckeys 文件中的行与 ipseckey 命令行语言完全相同。

    1. 例如,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
    2. 使用只读权限保护该文件。


      # chmod 400 /etc/inet/secret/ipseckeys
      
  9. partym 系统上重复该过程。

    使用 enigma 上使用的相同加密材料。

    两个系统上的加密材料必须完全相同。如以下示例所示,只有 ipseckeys 文件中的注释不同。注释不同是因为 dst enigmaenigma 系统上为传入,在 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
  10. 启用 manual-key 服务。


    # svcadm enable svc:/network/ipsec/manual-key
    

    要在当前发行版中替换密钥,请参见示例 20–4


示例 20–4 替换 IPsec SA

在此示例中,管理员要配置运行当前 Solaris 10 发行版的系统。管理员生成新密钥,更改 ipseckeys 文件中的加密信息,然后重新启动服务。