系统管理指南:IP 服务

第 20 章 配置 IPsec(任务)

本章提供了在网络中实现 IPsec 的过程。以下任务列表中介绍了这些过程:

有关 IPsec 的概述信息,请参见第 19 章。有关 IPsec 的参考信息,请参见第 21 章

使用 IPsec 保护通信(任务列表)

以下任务列表提供了指向在一个或多个系统之间设置 IPsec 的过程的链接。ipsecconf(1M)ipseckey(1M)ifconfig(1M) 手册页也在各自的“示例”部分中介绍了有用的过程。

任务 

说明 

参考 

保证两个系统之间的通信安全。 

确保系统间传送的包的安全。 

如何使用 IPsec 保证两个系统之间的通信安全

使用 IPsec 策略保证 Web 服务器的安全。 

要求非 Web 通信使用 IPsec。Web 客户机由特定端口识别,这些端口将跳过 IPsec 检查。 

如何使用 IPsec 保护 Web 服务器使之免受非 Web 通信影响

显示 IPsec 策略。 

按照执行的顺序显示当前正在执行的 IPsec 策略。 

如何显示 IPsec 策略

生成随机数。 

为手动创建的安全关联生成加密材料的随机数。 

如何在 Solaris 系统上生成随机数

《System Administration Guide: Security Services》中的“How to Generate a Symmetric Key by Using the pktool Command”

手动创建或替换安全关联。 

为安全关联提供原始数据: 

  • IPsec 算法名称和加密材料

  • 安全参数索引的密钥

  • IP 源地址和目标地址

如何手动创建 IPsec 安全关联

检查 IPsec 是否正在保护包。 

检查 snoop 输出以了解指示如何保护 IP 数据报的特定头。

如何检验包是否受 IPsec 保护

(可选)创建网络安全角色。 

创建可以设置安全网络,但权限级别低于超级用户的角色。 

如何配置网络安全角色

将 IPsec 和加密材料作为一组 SMF 服务来管理。 

介绍何时以及如何使用相应命令来启用、禁用、刷新和重新启动服务。此外,还介绍了用于更改服务的属性值的命令。 

如何管理 IKE 和 IPsec 服务

设置安全的虚拟专用网络 (virtual private network, VPN)。 

在由 Internet 分隔的两个系统之间设置 IPsec。 

使用 IPsec 保护 VPN(任务列表)

使用 IPsec 保护通信

本节提供保证两个系统之间的通信安全以及保证 Web 服务器的安全的过程。要保护 VPN,请参见使用 IPsec 保护 VPN(任务列表) 。其他过程提供加密材料和安全关联并检验 IPsec 是否按照配置工作。

以下信息适用于所有的 IPsec 配置任务:

Procedure如何使用 IPsec 保证两个系统之间的通信安全

假设此过程具有以下设置:

开始之前

必须位于全局区域中才能为系统或共享 IP 区域配置 IPsec 策略。对于专用 IP 区域,请在非全局区域中配置 IPsec 策略。

  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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


    注 –

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


  2. 在每个系统上,检查主机项。

    在当前发行版中,将主机项添加到 /etc/inet/hosts 文件。

    在运行 Solaris 10 7/07 之前的发行版的系统上,将 IPv4 和 IPv6 项添加到 /etc/inet/ipnodes 文件中。一个系统的项在文件中必须是连续的。有关系统配置文件的更多信息,请参见TCP/IP 配置文件第 11 章

    如果您仅连接具有 IPv4 地址的系统,则需要修改 /etc/inet/hosts 文件。在此示例中,连接的系统运行的是早期的 Solaris 发行版并且使用的是 IPv6 地址。

    1. 在名为 enigma 的系统上,将以下内容键入到 hostsipnodes 文件中:


      # Secure communication with partym
      192.168.13.213 partym
      2001::eeee:3333:3333 partym
    2. 在名为 partym 的系统上,将以下内容键入到 hostsipnodes 文件中:


      # Secure communication with enigma
      192.168.116.16 enigma
      2001::aaaa:6666:6666 enigma

    将名称服务用于符号名称是不安全的。

  3. 在每个系统上,创建 IPsec 策略文件。

    该文件名为 /etc/inet/ipsecinit.conf。有关示例,请参见 /etc/inet/ipsecinit.sample 文件。

  4. 将 IPsec 策略项添加到 ipsecinit.conf 文件。

    1. enigma 系统上添加以下策略:


      {laddr enigma raddr partym} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym 系统上添加相同的策略:


      {laddr partym raddr enigma} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

      有关 IPsec 策略项的语法,请参见 ipsecconf(1M) 手册页。

  5. 在每个系统上,添加两个系统之间的一对 IPsec SA。

    您可以配置 Internet 密钥交换 (Internet Key Exchange, IKE) 来自动创建 SA,也可以手动添加 SA。


    注 –

    您应该使用 IKE,除非您有充分的理由手动生成和维护密钥。IKE 密钥管理比手动密钥管理更为安全。


  6. 启用 IPsec 策略。

    • 如果您运行的是 Solaris 10 4/09 发行版之前的发行版,请重新引导系统。


      # init 6
      

      然后,转至如何检验包是否受 IPsec 保护

    • 从 Solaris 10 4/09 发行版开始,请刷新 IPsec 服务并启用密钥管理服务。

      完成步骤 7步骤 10

  7. 检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    

    修复任何错误、检验文件的语法,然后继续。

  8. 刷新 IPsec 策略。


    # svcadm refresh svc:/network/ipsec/policy:default
    

    IPsec 策略缺省情况下处于启用状态,因此要对其进行刷新。如果您已禁用了 IPsec 策略,请将其启用。


    # svcadm enable svc:/network/ipsec/policy:default
    
  9. 激活 IPsec 的密钥。

    • 如果在步骤 5 中配置了 IKE,请执行以下操作之一:

      • 如果未启用 ike 服务,请将其启用。


        # svcadm enable svc:/network/ipsec/ike:default
        
      • 如果已启用 ike 服务,请重新启动此服务。


        # svcadm restart svc:/network/ipsec/ike:default
        
    • 如果在步骤 5 中手动配置了密钥,请执行以下操作之一:

      • 如果未启用 manual-key 服务,请将其启用。


        # svcadm enable svc:/network/ipsec/manual-key:default
        
      • 如果已启用 manual-key 服务,请刷新此服务。


        # svcadm refresh svc:/network/ipsec/manual-key:default
        
  10. 验证是否对包进行了保护。

    有关过程,请参见如何检验包是否受 IPsec 保护


示例 20–1 使用 ssh 连接时添加 IPsc 策略

在此示例中,管理员作为超级用户通过使用 ssh 命令访问第二个系统,在两个系统上配置 IPsc 策略和密钥。有关更多信息,请参见 ssh(1) 手册页。

下次这两个系统进行通信(包括使用 ssh 连接)时,此通信将会受 IPsec 保护。



示例 20–2 在不重新引导的情况下使用 IPsec 保证通信安全

以下示例适用于运行 Solaris 10 4/09 发行版之前的发行版的情况。即,在您的发行版中,不将 IPsec 作为服务来管理。此示例介绍了如何在测试环境中实现 IPsec。在生产环境中,重新引导比运行 ipsecconf 命令更为安全。有关安全注意事项,请参见此示例的结尾。

选择以下选项之一,而不是在步骤 6 进行重新引导:

安全注意事项-请在执行 ipsecconf 命令时阅读警告。已锁定的套接字(即已使用的套接字)提供了通向系统的不安全的后门。有关更广泛的讨论,请参见ipsecinit.confipsecconf 的安全注意事项


Procedure如何使用 IPsec 保护 Web 服务器使之免受非 Web 通信影响

安全的 Web 服务器允许 Web 客户机与 Web 服务对话。在安全的 Web 服务器上,不属于 Web 通信的通信必须通过安全检查。以下过程会跳过 Web 通信。此外,此 Web 服务器可以发出不安全的 DNS 客户机请求。所有其他通信都需要使用 AES 和 SHA-1 算法的 ESP。

开始之前

必须位于全局区域中才能配置 IPsec 策略。对于专用 IP 区域,请在非全局区域中配置 IPsec 策略。您已完成了如何使用 IPsec 保证两个系统之间的通信安全,因此实际环境符合以下状况:

  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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


    注 –

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


  2. 确定哪些服务需要跳过安全策略检查。

    对于 Web 服务器,这些服务包括 TCP 端口 80 (HTTP) 和 443 (安全 HTTP)。如果 Web 服务器提供 DNS(域名系统)名称查找,则服务器还可能需要针对 TCP(传输控制协议)和 UDP(用户数据报协议)包括端口 53。

  3. 为 Web 服务器创建 IPsec 策略,并将其启用。

    对于所有 Solaris 发行版,步骤 12 均是可选的。

  4. 将 Web 服务器策略添加到 IPsec 策略文件。

    将以下行添加到 /etc/inet/ipsecinit.conf 文件:


    # Web traffic that web server should bypass.
    {lport  80 ulp tcp dir both} bypass {}
    {lport 443 ulp tcp dir both} bypass {}
    
    # Outbound DNS lookups should also be bypassed.
    {rport 53 dir both} bypass {}
    
    # Require all other traffic to use ESP with AES and SHA-1.
    # Use a unique SA for outbound traffic from the port
    {} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    此配置仅允许安全通信访问系统,跳过检查的例外情况在步骤 4 中进行了介绍。

  5. 检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. 刷新 IPsec 策略。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  7. 刷新 IPsec 的密钥。

    您的设置已完成。(可选)您可以执行步骤 12

  8. /etc/inet 目录中为 Web 服务器策略创建一个文件。


    注 –

    以下步骤用于配置运行 Solaris 10 4/09 发行版之前的发行版的 Web 服务器。


    为此文件指定一个表明其用途的名称,例如 IPsecWebInitFile。在此文件中键入以下行:


    # Web traffic that web server should bypass.
    {lport  80 ulp tcp dir both} bypass {}
    {lport 443 ulp tcp dir both} bypass {}
    
    # Outbound DNS lookups should also be bypassed.
    {rport 53 dir both} bypass {}
    
    # Require all other traffic to use ESP with AES and SHA-1.
    # Use a unique SA for outbound traffic from the port
    {} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    此配置仅允许安全通信访问系统,跳过检查的例外情况在步骤 4 中进行了介绍。

  9. 将您在步骤 8 中创建的文件的内容复制到 /etc/inet/ipsecinit.conf 文件中。

  10. 使用只读权限保护 IPsecWebInitFile 文件。


    # chmod 400 IPsecWebInitFile
    
  11. 在不重新引导的情况下保证 Web 服务器的安全。

    选择以下选项之一:

    • 如果您使用 IKE 管理密钥,请停止并重新启动 in.iked 守护进程。


      # pkill in.iked
      # /usr/lib/inet/in.iked
      
    • 如果您手动管理密钥,请使用 ipseckeyipsecconf 命令。

      请使用 IPsecWebInitFile 作为 ipsecconf 命令的参数。如果您使用 ipsecinit.conf 文件作为参数,则当文件中的策略已经在系统上实现时,ipsecconf 命令会生成错误。


      # ipseckey -c -f /etc/inet/secret/ipseckeys 
      # ipsecconf -a /etc/inet/IPsecWebInitFile 
      

    注意 – 注意 –

    在执行 ipsecconf 命令时应阅读警告。已锁定的套接字(即已使用的套接字)提供了通向系统的不安全的后门。有关更广泛的讨论,请参见ipsecinit.confipsecconf 的安全注意事项。该警告也适用于重新启动 in.iked 守护进程。


    您也可以重新引导。重新引导可确保 IPsec 策略在所有 TCP 连接上都有效。重新引导时,TCP 连接使用 IPsec 策略文件中的策略。

  12. (可选的)使远程系统与 Web 服务器进行非 Web 通信。

    在远程系统的 ipsecinit.conf 文件中键入以下策略:


    # Communicate with web server about nonweb stuff
    #
    {laddr webserver} ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

    仅当系统的 IPsec 策略匹配时,远程系统才能与 Web 服务器安全地进行非 Web 通信。

Procedure如何显示 IPsec 策略

当您发出不带任何参数的 ipsecconf 命令时,便可以查看在系统中配置的策略。

开始之前

必须在全局区域中运行 ipsecconf 命令。对于专用 IP 区域,请在非全局区域中运行 ipsecconf 命令。

  1. 承担拥有网络 IPsec 管理配置文件的角色或成为超级用户。

    如果您运行的是 Solaris 10 4/09 发行版之前的发行版,则网络 IPsec 管理配置文件不可用。请使用网络安全配置文件。

    有关如何创建拥有网络安全配置文件的角色并将该角色指定给用户的信息,请参见如何配置网络安全角色

  2. 显示 IPsec 策略。

    1. 按照全局 IPsec 策略项的添加顺序显示这些项。


      $ ipsecconf
      

      此命令将每项显示为后面跟有一个数字的索引

    2. 按照匹配项出现的顺序显示 IPsec 策略项。


      $ ipsecconf -l
      
    3. 按照匹配项出现的顺序显示 IPsec 策略项,包括每个隧道的项。


      $ ipsecconf -L
      

Procedure如何在 Solaris 系统上生成随机数

如果您要手动指定密钥,则加密材料必须是随机的。对于 Solaris 系统,其加密材料的格式是十六进制的。其他操作系统可能需要 ASCII 加密材料。如果要为 Solaris 系统生成加密材料,而且此系统与需要 ASCII 的操作系统通信,请参见示例 23–1

如果站点具有随机数生成器,请使用该生成器。否则,可以使用 od 命令,并将 /dev/random Solaris 设备作为输入。有关更多信息,请参见 od(1) 手册页。

在 Solaris 10 4/09 发行版中,您也可以使用 pktool 命令。该命令的语法比 od 命令的语法更为简单。有关详细信息,请参见《System Administration Guide: Security Services》中的“How to Generate a Symmetric Key by Using the pktool Command”

  1. 生成十六进制格式的随机数。


    % od -x|-X -A n file | head -n
    
    -x

    显示十六进制格式的八进制转储。十六进制格式对加密材料有用。十六进制以 4 个字符的块显示。

    -X

    显示十六进制格式的八进制转储。十六进制以 8 个字符的块显示。

    -A n

    从显示中删除输入偏移基址。

    file

    作为随机数的源。

    head -n

    将显示限制在输出的前 n 行中。

  2. 合并输出以创建适当长度的密钥。

    删除一行上的数字之间的空格,来创建 32 字符的密钥。一个 32 字符的密钥为 128 位。对于安全参数索引 (security parameter index, SPI),您应该使用 8 字符的密钥。密钥应该使用 0x 前缀。


示例 20–3 生成 IPsec 的加密材料

以下示例显示两行八个十六进制字符为一组的密钥。


% od -X -A n /dev/random | head -2
         d54d1536 4a3e0352 0faf93bd 24fd6cad
         8ecc2670 f3447465 20db0b0c c83f5a4b

通过合并第一行上的四个数字,可以创建一个 32 字符的密钥。以 0x 开头的 8 字符数提供了合适的 SPI 值,如 0xf3447465

以下示例显示两行四个十六进制字符为一组的密钥。


% od -x -A n /dev/random | head -2
         34ce 56b2 8b1b 3677 9231 42e9 80b0 c673
         2f74 2817 8026 df68 12f4 905a db3d ef27

通过合并第一行上的八个数字,可以创建一个 32 字符的密钥。


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 文件中的加密信息,然后重新启动服务。


Procedure如何检验包是否受 IPsec 保护

要检验包是否受到保护,请使用 snoop 命令来测试连接。以下前缀可以在 snoop 输出中显示:

开始之前

您必须是超级用户或承担等效角色,才能创建 snoop 输出。必须可以同时访问两个系统才能测试连接。

  1. 在一个系统(如 partym)上,成为超级用户。


    % su -
    Password: Type root password
    # 
  2. partym 系统上,准备从远程系统搜寻包。

    partym 上的一个终端窗口中,从 enigma 系统搜寻包。


    # snoop -v enigma
    Using device /dev/hme (promiscuous mode)
  3. 从远程系统发送包。

    在另一个终端窗口中,远程登录到 enigma 系统。提供您的口令。然后,成为超级用户并将包从 enigma 系统发送到 partym 系统。包应该由 snoop -v enigma 命令捕获。


    % ssh enigma
    Password: Type your password
    % su -
    Password: Type root password
    # ping partym
    
  4. 检查 snoop 输出。

    partym 系统上,您应该看到在初始 IP 头信息之后显示 AHESP 信息的输出。类似以下内容的 AHESP 信息表明包正在受到保护:


    IP:   Time to live = 64 seconds/hops
    IP:   Protocol = 51 (AH)
    IP:   Header checksum = 4e0e
    IP:   Source address = 192.168.116.16, enigma
    IP:   Destination address = 192.168.13.213, partym
    IP:   No options
    IP:
    AH:  ----- Authentication Header -----
    AH:
    AH:  Next header = 50 (ESP)
    AH:  AH length = 4 (24 bytes)
    AH:  <Reserved field = 0x0>
    AH:  SPI = 0xb3a8d714
    AH:  Replay = 52
    AH:  ICV = c653901433ef5a7d77c76eaa
    AH:
    ESP:  ----- Encapsulating Security Payload -----
    ESP:
    ESP:  SPI = 0xd4f40a61
    ESP:  Replay = 52
    ESP:     ....ENCRYPTED DATA....
    
    ETHER:  ----- Ether Header -----
    ...

Procedure如何配置网络安全角色

如果您要使用基于角色的访问控制 (role-based access control, RBAC) 来管理系统,请使用此过程提供网络管理角色或网络安全角色。

  1. 在本地 prof_attr 数据库中查找网络权限配置文件。

    在当前发行版中,输出会显示类似于以下内容的信息:


    % cd /etc/security
    % grep Network prof_attr
    Network IPsec Management:::Manage IPsec and IKE...
    Network Link Security:::Manage network link security...
    Network Management:::Manage the host and network configuration...
    Network Security:::Manage network and host security...
    Network Wifi Management:::Manage wifi network configuration...
    Network Wifi Security:::Manage wifi network security...

    如果您运行的是 Solaris 10 4/09 发行版之前的发行版,输出会显示类似于以下内容的信息:


    % cd /etc/security
    % grep Network prof_attr
    Network Management:::Manage the host and network configuration  
    Network Security:::Manage network and host security  
    System Administrator::: Network Management 

    网络管理配置文件是系统管理员配置文件的补充配置文件。如果您将系统管理员权限配置文件纳入角色,则此角色可以执行网络管理配置文件中的命令。

  2. 确定网络管理权限配置文件中具有的命令。


    % grep "Network Management" /etc/security/exec_attr
    Network Management:solaris:cmd:::/usr/sbin/ifconfig:privs=sys_net_config
    …
    Network Management:suser:cmd:::/usr/sbin/snoop:uid=0

    使用权限 (privs=sys_net_config) 可以运行 solaris 策略命令。以超级用户 (uid=0) 身份可以运行 suser 策略命令。

  3. 确定网络安全角色在站点中的作用范围。

    使用步骤 1 中的权限配置文件定义指导您做出决定。

    • 要创建处理所有网络安全的角色,请使用网络安全权限配置文件。

    • 在当前发行版中,要创建只处理 IPsec 和 IKE 的角色,请使用网络 IPsec 管理权限配置文件。

  4. 创建拥有网络管理权限配置文件的网络安全角色。

    对于拥有除网络管理配置文件外还拥有网络安全或网络 IPsec 管理权限配置文件的角色,除了可执行其他命令外,还可按相应的权限执行 ifconfigsnoopipsecconfipseckey 命令。

    要创建该角色、将该角色指定给用户以及使用名称服务注册更改,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”


示例 20–5 在角色之间划分网络安全职责

在此示例中,管理员要在两个角色之间划分网络安全职责。其中一个角色负责管理 wifi 和链路安全,另一个角色负责管理 IPsec 和 IKE。为每个角色指定三个人,一人一班。

管理员创建的角色如下:


Procedure如何管理 IKE 和 IPsec 服务

以下步骤提供了最有可能针对 IPsec、IKE 和手动密钥管理使用 SMF 服务的情况。缺省情况下,policyipsecalgs 服务处于启用状态,而 ikemanual-key 服务处于禁用状态。

  1. 要管理 IPsec 策略,请执行以下操作之一:

    • 将新策略添加到 ipsecinit.conf 文件后,刷新 policy 服务。


      # svcadm refresh svc:/network/ipsec/policy
      
    • 更改服务属性的值后,查看属性值,然后刷新并重新启动 policy 服务。


      # svccfg -s policy setprop config/config_file=/etc/inet/MyIpsecinit.conf
      # svcprop -p config/config_file policy
      /etc/inet/MyIpsecinit.conf
      # svcadm refresh svc:/network/ipsec/policy
      # svcadm restart svc:/network/ipsec/policy
      
  2. 要自动管理密钥,请执行以下操作之一:

    • 将项添加到 /etc/inet/ike/config 文件后,启用 ike 服务。


      # svcadm enable svc:/network/ipsec/ike
      
    • 更改 /etc/inet/ike/config 文件中的项后,刷新 ike 服务。


      # svcadm refresh svc:/network/ipsec/ike
      
    • 更改服务属性的值后,查看属性值,然后刷新并重新启动服务。


      # svccfg -s ike setprop config/admin_privilege=modkeys
      # svcprop -p config/admin_privilege ike
      modkeys
      # svcadm refresh svc:/network/ipsec/ike
      # svcadm restart svc:/network/ipsec/ike
      
    • 要停止 ike 服务,请将其禁用。


      # svcadm disable svc:/network/ipsec/ike
      
  3. 要手动管理密钥,请执行以下操作之一:

    • 将项添加到 /etc/inet/secret/ipseckeys 文件后,启用 manual-key 服务。


      # svcadm enable svc:/network/ipsec/manual-key
      
    • 更改 ipseckeys 文件后,刷新服务。


      # svcadm refresh manual-key
      
    • 更改服务属性的值后,查看属性值,然后刷新并重新启动服务。


      # svccfg -s manual-key setprop config/config_file=/etc/inet/secret/MyIpseckeyfile
      # svcprop -p config/config_file manual-key
      /etc/inet/secret/MyIpseckeyfile
      # svcadm refresh svc:/network/ipsec/manual-key
      # svcadm restart svc:/network/ipsec/manual-key
      
    • 要阻止手动密钥管理,请禁用 manual-key 服务。


      # svcadm disable svc:/network/ipsec/manual-key
      
  4. 如果修改 IPsec 协议和算法表,请刷新 ipsecalgs 服务。


    # svcadm refresh svc:/network/ipsec/ipsecalgs
    
故障排除

使用 svcs service 命令找到服务的状态。如果服务处于 maintenance 模式,请遵循 svcs -x service 命令输出的调试建议。

使用 IPsec 保护 VPN

IPsec 隧道可以保护 VPN。在 Solaris 10 7/07 发行版中,隧道可以处于隧道模式或传输模式下。隧道模式可与其他供应商的 IPsec 实现交互使用。传输模式可与 Solaris OS 的早期版本交互使用。有关隧道模式的讨论,请参见IPsec 中的传输模式和隧道模式

处于隧道模式的隧道可提供对通信的更精细控制。在隧道模式中,对于内部 IP 地址,可以为单个端口指定所需的特定保护。

使用 IPsec 保护 VPN 的示例(使用处于隧道模式的隧道)

图 20–1 IPsec 隧道示意图

图中显示了一个连接着两个 LAN 的 VPN。每个 LAN 具有四个子网。

以下示例假设这些 LAN 的所有子网都配置了隧道:


## Tunnel configuration ##
# Tunnel name is ip.tun0
# Intranet point for the source is 10.1.2.1
# Intranet point for the destination is 10.2.3.1
# Tunnel source is 192.168.1.10
# Tunnel destination is 192.168.2.10

示例 20–6 创建一个所有子网都可以使用的隧道

在此示例中,来自图 20–1 中的中心 LAN 的本地 LAN 的所有通信都可以通过隧道从路由器 1 传送到路由器 2,然后再传送到国外 LAN 的所有本地 LAN。通信使用 AES 进行加密。


## IPsec policy ##
{tunnel ip.tun0 negotiate tunnel} 
 ipsec {encr_algs aes encr_auth_algs sha1 sa shared}


示例 20–7 创建一个仅连接两个子网的隧道

在此示例中,仅为中心 LAN 的子网 10.1.2.0/24 和国外 LAN 的子网 10.2.3.0/24 之间的通信建立了隧道并对通信进行了加密。在中心 LAN 没有其他 IPsec 策略的情况下,如果中心 LAN 尝试通过此隧道路由其他 LAN 的任何通信,则通信会在路由器 1 处被丢弃。


## IPsec policy ##
{tunnel ip.tun0 negotiate tunnel laddr 10.1.2.0/24 raddr 10.2.3.0/24} 
 ipsec {encr_algs aes encr_auth_algs md5 sha1 shared}


示例 20–8 仅在两个子网之间为电子邮件通信创建隧道

在此示例中,仅为电子邮件通信创建隧道。通信从中心 LAN 的子网 10.1.2.0/24 传送到国外 LAN 的子网 10.2.3.0/24 上的电子邮件服务器。电子邮件使用 Blowfish 进行加密。这些策略可应用于远程电子邮件端口和本地电子邮件端口。rport 策略可保护从中心 LAN 发送到国外 LAN 远程电子邮件端口的电子邮件。lport 策略可以保护中心 LAN 在本地端口 25 接收到的来自国外 LAN 的电子邮件。


## IPsec policy for email from Central to Overseas ##
{tunnel ip.tun0 negotiate tunnel ulp tcp rport 25 
 laddr 10.1.2.0/24 raddr 10.2.3.0/24} 
 ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}

## IPsec policy for email from Overseas to Central ##
{tunnel ip.tun0 negotiate tunnel ulp tcp lport 25 
 laddr 10.1.2.0/24 raddr 10.2.3.0/24} 
 ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}


示例 20–9 为所有子网的 FTP 通信创建隧道

在此示例中,IPsec 策略使用 AES 保护图 20–1 中用于从中心 LAN 的所有子网向国外 LAN 的所有子网传输数据的 FTP 端口。此配置适用于 FTP 的主动模式。


## IPsec policy for outbound FTP from Central to Overseas ##
{tunnel ip.tun0 negotiate tunnel ulp tcp rport 21} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
{tunnel ip.tun0 negotiate tunnel ulp tcp lport 20} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

## IPsec policy for inbound FTP from Central to Overseas ##
{tunnel ip.tun0 negotiate tunnel ulp tcp lport 21} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
{tunnel ip.tun0 negotiate tunnel ulp tcp rport 20} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

使用 IPsec 保护 VPN(任务列表)

以下任务列表列出了配置 IPsec 以保护 Internet 上的通信的相关过程的参考链接。可使用这些过程在由 Internet 分隔的两个系统之间设置安全的虚拟专用网络 (virtual private network, VPN)。该技术的一种常见用途是确保在家里办公的员工与其公司办公室之间的通信安全。

任务 

说明 

参考 

保护通过 IPv4 进行的处于隧道模式的隧道通信。 

保护两个 Solaris 10 系统之间、两个 Oracle Solaris : 系统之间或 Solaris 10 系统与 Oracle Solaris Express 系统之间处于隧道模式的通信。Solaris 10 系统必须在 Solaris 10 7/07 发行版或更高版本上运行。 

此外,还保护 Solaris 10 系统或 Oracle Solaris : Express 系统与在其他平台上运行的系统之间处于隧道模式的通信。Solaris 10 系统必须在 Solaris 10 7/07 发行版或更高版本上运行。 

如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN

保护通过 Ipv6 进行的处于隧道模式的隧道通信。 

保护两个使用 IPv6 协议的 Oracle Solaris : 系统之间处于隧道模式的通信。 

如何使用通过 Ipv6 实现的处于隧道模式的 IPsec 隧道保护 VPN

保护通过 IPv4 进行的处于传输模式的隧道通信。 

保护两个 Solaris 10 系统之间、两个 Solaris 系统之间或 Solaris 10 系统与 Oracle Solaris 系统之间处于传输模式的通信。Solaris 10 系统必须在 Solaris 10 7/07 发行版或更高版本上运行。 

此外,还保护运行 Solaris OS 的早期版本的系统与 Solaris 10 或 Oracle Solaris : 系统之间处于传输模式的通信。Solaris 10 系统必须在 Solaris 10 7/07 发行版或更高版本上运行。 

如何使用通过 IPv4 实现的处于传输模式的 IPsec 隧道保护 VPN

通过使用旧的、过时的语法来保护通信。在与运行 Solaris OS 的早期版本的系统进行通信时,此方法很有用。此方法简化了两个系统上的配置文件之间的对比。 

示例 20–11

示例 20–16

保护通过 Ipv6 进行的处于传输模式的隧道通信。 

保护两个使用 IPv6 协议的 Oracle Solaris : 系统之间处于传输模式的通信。 

如何使用通过 Ipv6 实现的处于传输模式的 IPsec 隧道保护 VPN

防止 IP 电子欺骗。 

创建 SMF 服务,以防止系统在没有对包进行解密的情况下通过 VPN 转发包。 

如何防止 IP 电子欺骗

用于保护 VPN 的 IPsec 任务的网络拓扑说明

本节中的过程假设您已经进行了以下设置。有关此网络的描述,请参见图 20–2

图 20–2 由 Internet 分隔的办公室之间的 VPN 样例

显示欧洲办事处和加利福尼亚办事处之间的 VPN 的详细信息的图。

如前面的说明所示,IPv4 网络过程使用以下配置参数。

参数 

欧洲 

加利福尼亚 

系统名称 


enigma

partym

系统内联网接口 


hme1

hme1

系统内联网地址,也是步骤 7 中的 -point 地址


10.16.16.6

10.1.3.3

系统 Internet 接口 


hme0

hme0

系统 Internet 地址,也是步骤 7 中的 tsrc 地址


192.168.116.16

192.168.13.213

Internet 路由器名称 


router-E

router-C

Internet 路由器地址 


192.168.116.4

192.168.13.5

隧道名称 


ip.tun0

ip.tun0

下面的 IPv6 地址在过程中使用。隧道名称相同。

参数 

欧洲 

加利福尼亚 

系统内联网地址 


6000:6666::aaaa:1116

6000:3333::eeee:1113

系统 Internet 地址 


2001::aaaa:6666:6666

2001::eeee:3333:3333

Internet 路由器地址 


2001::aaaa:0:4

2001::eeee:0:1

Procedure如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN

在隧道模式下,内部 IP 包决定保护其内容的 IPsec 策略。

此过程扩展了如何使用 IPsec 保证两个系统之间的通信安全过程。用于保护 VPN 的 IPsec 任务的网络拓扑说明介绍了具体设置。


注 –

在两个系统中执行此过程中的步骤。


除了连接两个系统之外,还要连接两个连接到这两个系统的内联网。此过程中的系统作为网关使用。

开始之前

必须位于全局区域中才能为系统或共享 IP 区域配置 IPsec 策略。对于专用 IP 区域,请在非全局区域中配置 IPsec 策略。

  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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


    注 –

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


  2. 在配置 IPsec 之前控制包流。

    1. 确保 IP 转发和 IP 动态路由功能均处于禁用状态。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      IPv4 forwarding     disabled           disabled
         IPv4 routing     default (enabled)   enabled
      …

      如果已启用 IP 转发和 IP 动态路由功能,您可以通过键入以下内容来禁用它们:


      # routeadm -d ipv4-routing -d ipv4-forwarding
      # routeadm -u
      

      关闭 IP 转发功能可阻止包通过此系统从一个网络转发到另一个网络。有关 routeadm 命令的说明,请参见 routeadm(1M) 手册页。

    2. 打开 IP 严格目标多宿主。


      # ndd -set /dev/ip ip_strict_dst_multihoming 1
      

      打开 IP 严格目标多宿主可确保发往系统的目标地址之一的包到达正确的目标地址。

      启用严格目标多宿主时,到达特定接口的包必须传送到此接口的本地 IP 地址之一。所有其他包,甚至是传送到系统其他本地地址的包,均被丢弃。


      注意 – 注意 –

      系统启动时多宿主值会恢复为缺省值。要使更改的值具有持久性,请参见如何防止 IP 电子欺骗


    3. 禁用多数网络服务,也可能会禁用所有网络服务。


      注 –

      如果系统中安装了“受限制的”SMF 配置文件,则可以跳过此步骤。将禁用网络服务(Solaris 安全 Shell 除外)。


      禁用网络服务可防止 IP 包危害系统。例如,可以采用 SNMP 守护进程、telnet 连接或 rlogin 连接。

      选择以下选项之一:

      • 如果运行的是 Solaris 10 11/06 发行版或更高版本,请运行“受限制的”SMF 配置文件。


        # netservices limited
        
      • 否则,单独禁用网络服务。


        # svcadm disable network/ftp:default
        # svcadm disable network/finger:default
        # svcadm disable network/login:rlogin
        # svcadm disable network/nfs/server:default
        # svcadm disable network/rpc/rstat:default
        # svcadm disable network/smtp:sendmail
        # svcadm disable network/telnet:default
        
    4. 检验是否已禁用大多数网络服务。

      检验回送挂载和 ssh 服务是否正在运行。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      …
      online         Aug_09   svc:/network/ssh:default
  3. 在两个系统间添加一对 SA。

    选择以下选项之一:

  4. 添加 IPsec 策略。

    编辑 /etc/inet/ipsecinit.conf 文件来为 VPN 添加 IPsec 策略。要增强策略,请参见示例 20–12。有关其他示例,请参见使用 IPsec 保护 VPN 的示例(使用处于隧道模式的隧道)

    在此策略中,本地 LAN 上的系统与网关的内部 IP 地址之间不需要 IPsec 保护,因此将添加 bypass 语句。

    1. enigma 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.16.16.6 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate tunnel} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.1.3.3 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate tunnel} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
  5. (可选的)检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. 要配置隧道并使用 IPsec 对其加以保护,请根据 Solaris 发行版执行相应步骤:

  7. etc/hostname.ip.tun0 文件中配置隧道 ip.tun0

    此文件的语法如下所示:


    system1-point system2-point tsrc system1-taddr tdst system2-taddr router up
    1. enigma 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 tdst 192.168.13.213 router up
    2. partym 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 tdst 192.168.116.16 router up
  8. 使用创建的 IPsec 策略保护隧道。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. 要将隧道配置文件的内容读入内核,请重新启动网络服务。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 接口打开 IP 转发功能。

    1. enigma 系统上,将路由器项添加到 /etc/hostname.hme1 文件。


      192.168.116.16 router
    2. partym 系统上,将路由器项添加到 /etc/hostname.hme1 文件。


      192.168.13.213 router

    IP 转发指可以转发来自其他位置的包。IP 转发也指由此接口发出的包可能源于其他位置。要成功转发包,必须打开接收接口和传送接口的 IP 转发功能。

    因为 hme1 接口在内联网内部,所以必须打开 hme1 的 IP 转发功能。因为 ip.tun0 通过 Internet 连接两个系统,所以必须打开 ip.tun0 的 IP 转发功能。

    hme0 接口已关闭其 IP 转发功能以阻止外部入侵者向受保护的内联网中注入包。外部是指 Internet。

  11. 确保路由协议不在内联网内通告缺省的路由。

    1. enigma 系统上,将 private 标志添加到 /etc/hostname.hme0 文件。


      10.16.16.6 private
    2. partym 系统上,将 private 标志添加到 /etc/hostname.hme0 文件。


      10.1.3.3 private

    即使 hme0 关闭 IP 转发功能,路由协议实现仍会通告接口。例如,in.routed 协议仍会通告 hme0 可将包转发到内联网中的对等接口。可以通过设置接口的专用标志,阻止这些通告。

  12. 手动添加通过 hme0 接口实现的缺省路由。

    缺省路由必须是可以直接访问 Internet 的路由器。

    1. enigma 系统上,添加以下路由:


      # route add default 192.168.116.4
      
    2. partym 系统上,添加以下路由:


      # route add default 192.168.13.5
      

      即使 hme0 接口不是内联网的一部分,hme0 也需要通过 Internet 访问其同级系统。要找到其同级系统,hme0 需要有关 Internet 路由的信息。对于 Internet 的其他部分来说,VPN 系统像是一台主机,而不是路由器。因此,您可以使用缺省的路由器或运行路由器搜索协议来查找同级系统。有关更多信息,请参见 route(1M)in.routed(1M) 手册页。

  13. 要完成该过程,请转至步骤 22 运行路由协议。

  14. 配置隧道 ip.tun0


    注 –

    以下步骤用于在运行 Solaris 10 4/09 发行版之前的发行版的系统中配置隧道。


    使用 ifconfig 命令创建点对点接口:


    # ifconfig ip.tun0 plumb
    
    # ifconfig ip.tun0 system1-point system2-point \
    tsrc system1-taddr tdst system2-taddr
    
    1. enigma 系统上键入以下命令:


      # ifconfig ip.tun0 plumb
      
      # ifconfig ip.tun0 10.16.16.6 10.1.3.3 \
      tsrc 192.168.116.16 tdst 192.168.13.213
      
    2. partym 系统上键入以下命令:


      # ifconfig ip.tun0 plumb
      
      # ifconfig ip.tun0 10.1.3.3 10.16.16.6  \
      tsrc 192.168.13.213 tdst 192.168.116.16
      
  15. 使用创建的 IPsec 策略保护隧道。


    # ipsecconf
    
  16. 初启隧道的路由器。


    # ifconfig ip.tun0 router up
    
  17. hme1 接口打开 IP 转发功能。


    # ifconfig hme1 router
    

    IP 转发指可以转发来自其他位置的包。IP 转发也指由此接口发出的包可能源于其他位置。要成功转发包,必须打开接收接口和传送接口的 IP 转发功能。

    因为 hme1 接口在内联网内部,所以必须打开 hme1 的 IP 转发功能。因为 ip.tun0 通过 Internet 连接两个系统,所以必须打开 ip.tun0 的 IP 转发功能。

    hme0 接口已关闭其 IP 转发功能以阻止外部入侵者向受保护的内联网中注入包。外部是指 Internet。

  18. 确保路由协议不在内联网内通告缺省的路由。


    # ifconfig hme0 private
    

    即使 hme0 关闭 IP 转发功能,路由协议实现仍会通告接口。例如,in.routed 协议仍会通告 hme0 可将包转发到内联网中的对等接口。可以通过设置接口的专用标志,阻止这些通告。

  19. 手动添加通过 hme0 实现的缺省路由。

    缺省路由必须是可以直接访问 Internet 的路由器。

    1. enigma 系统上,添加以下路由:


      # route add default 192.168.116.4
      
    2. partym 系统上,添加以下路由:


      # route add default 192.168.13.5
      

      即使 hme0 接口不是内联网的一部分,hme0 也需要通过 Internet 访问其同级系统。要找到其同级系统,hme0 需要有关 Internet 路由的信息。对于 Internet 的其他部分来说,VPN 系统像是一台主机,而不是路由器。因此,您可以使用缺省的路由器或运行路由器搜索协议来查找同级系统。有关更多信息,请参见 route(1M)in.routed(1M) 手册页。

  20. 通过向 /etc/hostname.ip.tun0 文件中添加项来确保 VPN 在系统重新引导后启动。


    system1-point system2-point tsrc system1-taddr tdst system2-taddr router up
    1. enigma 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 tdst 192.168.13.213 router up
    2. partym 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 tdst 192.168.116.16 router up
  21. 将接口文件配置为将正确的参数传送到路由选择守护进程。

    1. enigma 系统上,修改 /etc/hostname.interface 文件。


      # cat /etc/hostname.hme0
      ## enigma
      10.16.16.6 private

      # cat /etc/hostname.hme1
      ## enigma
      192.168.116.16 router
    2. partym 系统上,修改 /etc/hostname.interface 文件。


      # cat /etc/hostname.hme0
      ## partym
      10.1.3.3 private

      # cat /etc/hostname.hme1
      ## partym
      192.168.13.213 router
  22. 运行路由协议。


    # routeadm -e ipv4-routing
    # routeadm -u
    

    您可能需要在运行路由协议之前先配置路由协议。有关更多信息,请参见Oracle Solaris : 中的路由协议。有关过程,请参见如何配置 IPv4 路由器


示例 20–10 测试时创建临时隧道

在此示例中,管理员在 Solaris 10 4/09 系统中测试隧道的创建情况。稍后,管理员将使用如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN过程使隧道成为永久隧道。在测试过程中,管理员在系统 system1system2 上执行以下一系列步骤:



示例 20–11 使用命令行为早期版本的 Solaris 系统创建隧道

在 Solaris 10 7/07 发行版中,简化了 ifconfig 命令的语法。在此示例中,管理员将针对运行 Solaris 10 7/07 发行版之前的 Solaris 版本的系统测试隧道创建情况。通过使用 ifconfig 命令的原始语法,管理员可以在两个通信系统中使用完全相同的命令。稍后,管理员将使用如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN使隧道成为永久隧道。

在测试过程中,管理员在系统 system1system2 上执行以下步骤:



示例 20–12 在 LAN 中所有系统中要求 IPsec 策略

在此示例中,管理员注释掉了在步骤 4 中配置的 bypass 策略,从而加强了保护。通过此策略配置,LAN 中的每个系统都必须激活 IPsec 以便与路由器通信。


# LAN traffic must implement IPsec.
# {laddr 10.1.3.3 dir both} bypass {}

# WAN traffic uses ESP with AES and SHA-1.
{tunnel ip.tun0 negotiate tunnel} ipsec {encr_algs aes encr_auth_algs sha1}


示例 20–13 使用 IPsec 保护 Telnet 通信以及使用 IPsec 保护 SMTP 通信(二者不同)

在此示例中,第一条规则使用 Blowfish 和 SHA-1 保护端口 23 上的 telnet 通信。第二条规则使用 AES 和 MD5 保护端口 25 上的 SMTP 通信。


{laddr 10.1.3.3 ulp tcp dport 23 dir both} 
  ipsec {encr_algs blowfish encr_auth_algs sha1 sa unique}
{laddr 10.1.3.3 ulp tcp dport 25 dir both} 
 ipsec {encr_algs aes encr_auth_algs md5 sa unique}


示例 20–14 使用处于隧道模式的 IPsec 隧道保护子网通信以及使用处于隧道模式的 IPsec 隧道保护其他网络通信(二者不同)

以下隧道配置保护子网 10.1.3.0/24 在隧道上的所有通信:


{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

以下隧道配置保护子网 10.1.3.0/24 在隧道上与不同子网的通信。以 10.2.x.x 开头的子网要经由隧道。


{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24 raddr 10.2.1.0/24} 
  ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}

{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24 raddr 10.2.2.0/24} 
  ipsec {encr_algs blowfish encr_auth_algs sha1 sa shared}

{tunnel ip.tun0 negotiate tunnel laddr 10.1.3.0/24 raddr 10.2.3.0/24} 
  ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

Procedure如何使用通过 Ipv6 实现的处于隧道模式的 IPsec 隧道保护 VPN

要在 IPv6 网络中设置 VPN,您需要执行与针对 IPv4 网络执行的步骤相同的步骤。但是,命令的语法稍有不同。有关运行特定命令的更详尽的原因说明,请参见如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN中的相应步骤。


注 –

在两个系统中执行此过程中的步骤。


此过程使用以下配置参数。

参数 

欧洲 

加利福尼亚 

系统名称 


enigma

partym

系统内联网接口 


hme1

hme1

系统 Internet 接口 


hme0

hme0

系统内联网地址 


6000:6666::aaaa:1116

6000:3333::eeee:1113

系统 Internet 地址 


2001::aaaa:6666:6666

2001::eeee:3333:3333

Internet 路由器名称 


router-E

router-C

Internet 路由器地址 


2001::aaaa:0:4

2001::eeee:0:1

隧道名称 


ip6.tun0

ip6.tun0

  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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


    注 –

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


  2. 在配置 IPsec 之前控制包流。

    有关这些命令的作用,请参见步骤 2中的如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN

    1. 确保 IP 转发和 IP 动态路由功能均处于禁用状态。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      …
      IPv6 forwarding     disabled          disabled
         IPv6 routing     disabled          disabled

      如果已启用 IP 转发和 IP 动态路由功能,您可以通过键入以下内容来禁用它们:


      # routeadm -d ipv6-forwarding -d ipv6-routing
      # routeadm -u
      
    2. 打开 IP 严格目标多宿主。


      # ndd -set /dev/ip ip6_strict_dst_multihoming 1
      

      注意 – 注意 –

      系统引导时,会将 ip6_strict_dst_multihoming 的值恢复为缺省值。要使更改的值具有持久性,请参见如何防止 IP 电子欺骗


    3. 禁用多数网络服务,也可能会禁用所有网络服务。


      注 –

      如果系统中安装了“受限制的”SMF 配置文件,则可以跳过此步骤。将禁用网络服务(Solaris 安全 Shell 除外)。


      禁用网络服务可防止 IP 包危害系统。例如,可以采用 SNMP 守护进程、telnet 连接或 rlogin 连接。

      选择以下选项之一:

      • 如果运行的是 Solaris 10 11/06 发行版或更高版本,请运行“受限制的”SMF 配置文件。


        # netservices limited
        
      • 否则,单独禁用网络服务。


        # svcadm disable network/ftp:default
        # svcadm disable network/finger:default
        # svcadm disable network/login:rlogin
        # svcadm disable network/nfs/server:default
        # svcadm disable network/rpc/rstat:default
        # svcadm disable network/smtp:sendmail
        # svcadm disable network/telnet:default 
    4. 检验是否已禁用大多数网络服务。

      检验回送挂载和 ssh 服务是否正在运行。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      ...
      online         Aug_09   svc:/network/ssh:default
  3. 在两个系统间添加一对 SA。

    选择以下选项之一:

  4. 为 VPN 添加 IPsec 策略。

    编辑 /etc/inet/ipsecinit.conf 文件来为 VPN 添加 IPsec 策略。

    1. enigma 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic to and from this host can bypass IPsec.
      {laddr 6000:6666::aaaa:1116 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate tunnel} 
        ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic to and from this host can bypass IPsec.
      {laddr 6000:3333::eeee:1113 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate tunnel} 
        ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
  5. (可选的)检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. 要配置隧道并使用 IPsec 对其加以保护,请根据 Solaris 发行版执行相应步骤:

  7. /etc/hostname.ip6.tun0 文件中配置隧道 ip6.tun0

    1. enigma 系统上,向 hostname.ip6.tun0 文件添加以下项:


      6000:6666::aaaa:1116 6000:3333::eeee:1113 tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up
    2. partym 系统上,向 hostname.ip6.tun0 文件添加以下项:


      6000:3333::eeee:1113  6000:6666::aaaa:1116 tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up
  8. 使用创建的 IPsec 策略保护隧道。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. 要将隧道配置文件的内容读入内核,请重新启动网络服务。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 接口打开 IP 转发功能。

    1. enigma 系统上,将路由器项添加到 /etc/hostname6.hme1 文件。


      2001::aaaa:6666:6666 inet6 router
    2. partym 系统上,将路由器项添加到 /etc/hostname6.hme1 文件。


      2001::eeee:3333:3333 inet6 router
  11. 确保路由协议不在内联网内通告缺省的路由。

    1. enigma 系统上,将 private 标志添加到 /etc/hostname6.hme0 文件。


      6000:6666::aaaa:1116 inet6 private
    2. partym 系统上,将 private 标志添加到 /etc/hostname6.hme0 文件。


      6000:3333::eeee:1113 inet6 private
  12. 手动添加通过 hme0 实现的缺省路由。

    1. enigma 系统上,添加以下路由:


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym 系统上,添加以下路由:


      # route add -inet6 default 2001::eeee:0:1
      
  13. 要完成该过程,请转至步骤 22 运行路由协议。

  14. 配置安全隧道 ip6.tun0


    注 –

    以下步骤用于在运行 Solaris 10 4/09 发行版之前的发行版的系统中配置隧道。


    1. enigma 系统上键入以下命令:


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6 6000:6666::aaaa:1116 6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666   tdst 2001::eeee:3333:3333
      
    2. partym 系统上键入以下命令:


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6 6000:3333::eeee:1113 6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666
      
  15. 使用创建的 IPsec 策略保护隧道。


    # ipsecconf
    
  16. 初启隧道的路由器。


    # ifconfig ip6.tun0 router up
    
  17. 在每个系统上,为 hme1 接口打开 IP 转发功能。


    # ifconfig hme1 router
    
  18. 确保路由协议不在内联网内通告缺省的路由。


    # ifconfig hme0 private
    
  19. 手动添加通过 hme0 实现的缺省路由。

    缺省路由必须是可以直接访问 Internet 的路由器。

    1. enigma 系统上,添加以下路由:


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym 系统上,添加以下路由:


      # route add -inet6 default 2001::eeee:0:1
      
  20. 通过向 /etc/hostname6.ip6.tun0 文件中添加项来确保 VPN 在系统重新引导后启动。

    该项复制在步骤 14 中传递到 ifconfig 命令的参数。

    1. enigma 系统上,向 hostname6.ip6.tun0 文件添加以下项:


      6000:6666::aaaa:1116 6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666  tdst 2001::eeee:3333:3333 router up
    2. partym 系统上,向 hostname6.ip6.tun0 文件添加以下项:


      6000:3333::eeee:1113 6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666  router up
  21. 在每个系统上,将接口文件配置为将正确的参数传送到路由选择守护进程。

    1. enigma 系统上,修改 /etc/hostname6. interface 文件。


      # cat /etc/hostname6.hme0
      ## enigma
      6000:6666::aaaa:1116 inet6 private

      #  cat /etc/hostname6.hme1
      ## enigma
      2001::aaaa:6666:6666 inet6 router
    2. partym 系统上,修改 /etc/hostname6. interface 文件。


      # cat /etc/hostname6.hme0
      ## partym
      6000:3333::eeee:1113 inet6 private

      # cat /etc/hostname6.hme1
      ## partym
      2001::eeee:3333:3333 inet6 router
  22. 运行路由协议。


    # routeadm -e ipv6-routing
    # routeadm -u
    

    您可能需要在运行路由协议之前先配置路由协议。有关更多信息,请参见Oracle Solaris : 中的路由协议。有关过程,请参见配置 IPv6 路由器

Procedure如何使用通过 IPv4 实现的处于传输模式的 IPsec 隧道保护 VPN

在传输模式下,外部头决定保护内部 IP 包的 IPsec 策略。

此过程扩展了如何使用 IPsec 保证两个系统之间的通信安全过程。除了连接两个系统之外,还要连接两个连接到这两个系统的内联网。此过程中的系统作为网关使用。

此过程使用用于保护 VPN 的 IPsec 任务的网络拓扑说明中介绍的设置。有关运行特定命令的更详尽的原因说明,请参见如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN中的相应步骤。


注 –

在两个系统中执行此过程中的步骤。


  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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


    注 –

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


  2. 在配置 IPsec 之前控制包流。

    1. 确保 IP 转发和 IP 动态路由功能均处于禁用状态。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      IPv4 forwarding     disabled           disabled
         IPv4 routing     default (enabled)   enabled
      …

      如果已启用 IP 转发和 IP 动态路由功能,您可以通过键入以下内容来禁用它们:


      # routeadm -d ipv4-routing -d ipv4-forwarding
      # routeadm -u
      
    2. 打开 IP 严格目标多宿主。


      # ndd -set /dev/ip ip_strict_dst_multihoming 1
      

      注意 – 注意 –

      系统引导时,会将 ip_strict_dst_multihoming 的值恢复为缺省值。要使更改的值具有持久性,请参见如何防止 IP 电子欺骗


    3. 禁用多数网络服务,也可能会禁用所有网络服务。


      注 –

      如果系统中安装了“受限制的”SMF 配置文件,则可以跳过此步骤。将禁用网络服务(Solaris 安全 Shell 除外)。


      禁用网络服务可防止 IP 包危害系统。例如,可以采用 SNMP 守护进程、telnet 连接或 rlogin 连接。

      选择以下选项之一:

      • 如果运行的是 Solaris 10 11/06 发行版或更高版本,请运行“受限制的”SMF 配置文件。


        # netservices limited
        
      • 否则,单独禁用网络服务。


        # svcadm disable network/ftp:default
        # svcadm disable network/finger:default
        # svcadm disable network/login:rlogin
        # svcadm disable network/nfs/server:default
        # svcadm disable network/rpc/rstat:default
        # svcadm disable network/smtp:sendmail
        # svcadm disable network/telnet:default 
    4. 检验是否已禁用大多数网络服务。

      检验回送挂载和 ssh 服务是否正在运行。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      …
      online         Aug_09   svc:/network/ssh:default
  3. 在两个系统间添加一对 SA。

    选择以下选项之一:

  4. 添加 IPsec 策略。

    编辑 /etc/inet/ipsecinit.conf 文件来为 VPN 添加 IPsec 策略。要增强策略,请参见示例 20–15

    1. enigma 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.16.16.6 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
    2. partym 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # LAN traffic to and from this host can bypass IPsec.
      {laddr 10.1.3.3 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1 sa shared}
  5. (可选的)检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. 要配置隧道并使用 IPsec 对其加以保护,请根据 Solaris 发行版执行相应步骤:

  7. /etc/hostname.ip.tun0 文件中配置隧道 ip.tun0

    1. enigma 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 tdst 192.168.13.213 router up
    2. partym 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 tdst 192.168.116.16 router up
  8. 使用创建的 IPsec 策略保护隧道。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. 要将 hostname.ip.tun0 文件的内容读入内核,请重新启动网络服务。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 接口打开 IP 转发功能。

    1. enigma 系统上,将路由器项添加到 /etc/hostname.hme1 文件。


      192.168.116.16 router
    2. partym 系统上,将路由器项添加到 /etc/hostname.hme1 文件。


      192.168.13.213 router
  11. 确保路由协议不在内联网内通告缺省的路由。

    1. enigma 系统上,将 private 标志添加到 /etc/hostname.hme0 文件。


      10.16.16.6 private
    2. partym 系统上,将 private 标志添加到 /etc/hostname.hme0 文件。


      10.1.3.3 private
  12. 手动添加通过 hme0 实现的缺省路由。

    1. enigma 系统上,添加以下路由:


      # route add default 192.168.116.4
      
    2. partym 系统上,添加以下路由:


      # route add default 192.168.13.5
      
  13. 要完成该过程,请转至步骤 22 运行路由协议。

  14. 配置隧道 ip.tun0


    注 –

    以下步骤用于在运行 Solaris 10 4/09 发行版之前的发行版的系统中配置隧道。


    使用 ifconfig 命令创建点对点接口:


    # ifconfig ip.tun0 plumb
    
    # ifconfig ip.tun0 system1-point system2-point \
    tsrc system1-taddr tdst system2-taddr
    
    1. enigma 系统上键入以下命令:


      # ifconfig ip.tun0 plumb
      
      # ifconfig ip.tun0 10.16.16.6 10.1.3.3 \
      tsrc 192.168.116.16 tdst 192.168.13.213
      
    2. partym 系统上键入以下命令:


      # ifconfig ip.tun0 plumb
      
      # ifconfig ip.tun0 10.1.3.3 10.16.16.6  \
      tsrc 192.168.13.213 tdst 192.168.116.16
      
  15. 使用创建的 IPsec 策略保护隧道。


    # ipsecconf
    
  16. 初启隧道的路由器。


    # ifconfig ip.tun0 router up
    
  17. hme1 接口打开 IP 转发功能。


    # ifconfig hme1 router
    
  18. 确保路由协议不在内联网内通告缺省的路由。


    # ifconfig hme0 private
    
  19. 手动添加通过 hme0 实现的缺省路由。

    缺省路由必须是可以直接访问 Internet 的路由器。


    # route add default router-on-hme0-subnet
    
    1. enigma 系统上,添加以下路由:


      # route add default 192.168.116.4
      
    2. partym 系统上,添加以下路由:


      # route add default 192.168.13.5
      
  20. 通过向 /etc/hostname.ip.tun0 文件中添加项来确保 VPN 在系统重新引导后启动。


    system1-point system2-point tsrc system1-taddr \
    tdst system2-taddr encr_algs aes encr_auth_algs sha1 router up
    1. enigma 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.16.16.6 10.1.3.3 tsrc 192.168.116.16 \
      tdst 192.168.13.213 router up
    2. partym 系统上,向 hostname.ip.tun0 文件添加以下项:


      10.1.3.3 10.16.16.6 tsrc 192.168.13.213 \
      tdst 192.168.116.16 router up
  21. 将接口文件配置为将正确的参数传送到路由选择守护进程。

    1. enigma 系统上,修改 /etc/hostname.interface 文件。


      # cat /etc/hostname.hme0
      ## enigma
      10.16.16.6 private

      # cat /etc/hostname.hme1
      ## enigma
      192.168.116.16 router
    2. partym 系统上,修改 /etc/hostname.interface 文件。


      # cat /etc/hostname.hme0
      ## partym
      10.1.3.3 private

      # cat /etc/hostname.hme1
      ## partym
      192.168.13.213 router
  22. 运行路由协议。


    # routeadm -e ipv4-routing
    # routeadm -u
    

示例 20–15 在所有处于传输模式的系统上要求 IPsec 策略

在此示例中,管理员注释掉了在步骤 4 中配置的 bypass 策略,从而加强了保护。通过此策略配置,LAN 中的每个系统都必须激活 IPsec 以便与路由器通信。


# LAN traffic must implement IPsec.
# {laddr 10.1.3.3 dir both} bypass {}

# WAN traffic uses ESP with AES and SHA-1.
{tunnel ip.tun0 negotiate transport} ipsec {encr_algs aes encr_auth_algs sha1}


示例 20–16 使用过时的语法配置处于传输模式的 IPsec 隧道

在此示例中,管理员将 Solaris 10 7/07 系统与运行 Solaris 10 发行版的系统连接在一起。因此,管理员在配置文件中使用 Solaris 10 语法,并在 ifconfig 命令中包含 IPsec 算法。

管理员按照如何使用通过 IPv4 实现的处于传输模式的 IPsec 隧道保护 VPN过程进行操作,但在语法上进行了以下更改。


Procedure如何使用通过 Ipv6 实现的处于传输模式的 IPsec 隧道保护 VPN

要在 IPv6 网络中设置 VPN,您需要执行与针对 IPv4 网络执行的步骤相同的步骤。但是,命令的语法稍有不同。有关运行特定命令的更详尽的原因说明,请参见如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN中的相应步骤。


注 –

在两个系统中执行此过程中的步骤。


此过程使用以下配置参数。

参数 

欧洲 

加利福尼亚 

系统名称 


enigma

partym

系统内联网接口 


hme1

hme1

系统 Internet 接口 


hme0

hme0

系统内联网地址 


6000:6666::aaaa:1116

6000:3333::eeee:1113

系统 Internet 地址 


2001::aaaa:6666:6666

2001::eeee:3333:3333

Internet 路由器名称 


router-E

router-C

Internet 路由器地址 


2001::aaaa:0:4

2001::eeee:0:1

隧道名称 


ip6.tun0

ip6.tun0

  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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


    注 –

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


  2. 在配置 IPsec 之前控制包流。

    1. 确保 IP 转发和 IP 动态路由功能均处于禁用状态。


      # routeadm
      Configuration       Current         Current
             Option       Configuration  System State
      --------------------------------------------------
      …
      IPv6 forwarding     disabled          disabled
         IPv6 routing     disabled          disabled

      如果已启用 IP 转发和 IP 动态路由功能,您可以通过键入以下内容来禁用它们:


      # routeadm -d ipv6-forwarding -d ipv6-routing
      # routeadm -u
      
    2. 打开 IP 严格目标多宿主。


      # ndd -set /dev/ip ip6_strict_dst_multihoming 1
      

      注意 – 注意 –

      系统引导时,会将 ip6_strict_dst_multihoming 的值恢复为缺省值。要使更改的值具有持久性,请参见如何防止 IP 电子欺骗


    3. 检验是否已禁用大多数网络服务。

      检验回送挂载和 ssh 服务是否正在运行。


      # svcs | grep network
      online         Aug_02   svc:/network/loopback:default
      …
      online         Aug_09   svc:/network/ssh:default
  3. 在两个系统间添加一对 SA。

    选择以下选项之一:

  4. 添加 IPsec 策略。

    编辑 /etc/inet/ipsecinit.conf 文件来为 VPN 添加 IPsec 策略。

    1. enigma 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic can bypass IPsec.
      {laddr 6000:6666::aaaa:1116 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1}
    2. partym 系统上,将以下项键入到 ipsecinit.conf 文件中:


      # IPv6 Neighbor Discovery messages bypass IPsec.
      {ulp ipv6-icmp type 133-137 dir both} pass {}
      
      # LAN traffic can bypass IPsec.
      {laddr 6000:3333::eeee:1113 dir both} bypass {}
      
      # WAN traffic uses ESP with AES and SHA-1.
      {tunnel ip6.tun0 negotiate transport} 
       ipsec {encr_algs aes encr_auth_algs sha1}
  5. (可选的)检验 IPsec 策略文件的语法。


    # ipsecconf -c -f /etc/inet/ipsecinit.conf
    
  6. 要配置隧道并使用 IPsec 对其加以保护,请根据 Solaris 发行版执行相应步骤:

  7. /etc/hostname.ip6.tun0 文件中配置隧道 ip6.tun0

    1. enigma 系统上,向 hostname.ip6.tun0 文件添加以下项:


      6000:6666::aaaa:1116 6000:3333::eeee:1113 tsrc 2001::aaaa:6666:6666 tdst 2001::eeee:3333:3333 router up
    2. partym 系统上,向 hostname.ip6.tun0 文件添加以下项:


      6000:3333::eeee:1113  6000:6666::aaaa:1116 tsrc 2001::eeee:3333:3333 tdst 2001::aaaa:6666:6666 router up
  8. 使用创建的 IPsec 策略保护隧道。


    # svcadm refresh svc:/network/ipsec/policy:default
    
  9. 要将 hostname.ip6.tun0 文件的内容读入内核,请重新启动网络服务。


    # svcadm restart svc:/network/initial:default
    
  10. hme1 接口打开 IP 转发功能。

    1. enigma 系统上,将路由器项添加到 /etc/hostname6.hme1 文件。


      2001::aaaa:6666:6666 inet6 router
    2. partym 系统上,将路由器项添加到 /etc/hostname6.hme1 文件。


      2001::eeee:3333:3333 inet6 router
  11. 确保路由协议不在内联网内通告缺省的路由。

    1. enigma 系统上,将 private 标志添加到 /etc/hostname6.hme0 文件。


      6000:6666::aaaa:1116 inet6 private
    2. partym 系统上,将 private 标志添加到 /etc/hostname6.hme0 文件。


      6000:3333::eeee:1113 inet6 private
  12. 手动添加通过 hme0 实现的缺省路由。

    1. enigma 系统上,添加以下路由:


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym 系统上,添加以下路由:


      # route add -inet6 default 2001::eeee:0:1
      
  13. 要完成该过程,请转至步骤 22 运行路由协议。

  14. 配置安全隧道 ip6.tun0


    注 –

    以下步骤用于在运行 Solaris 10 4/09 发行版之前的发行版的系统中配置隧道。


    1. enigma 系统上键入以下命令:


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6 6000:6666::aaaa:1116 6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666   tdst 2001::eeee:3333:3333
      
    2. partym 系统上键入以下命令:


      # ifconfig ip6.tun0 inet6 plumb
      
      # ifconfig ip6.tun0 inet6  6000:3333::eeee:1113  6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666
      
  15. 使用创建的 IPsec 策略保护隧道。


    # ipsecconf
    
  16. 初启隧道的路由器。


    # ifconfig ip6.tun0 router up
    
  17. hme1 接口打开 IP 转发功能。


    # ifconfig hme1 router
    
  18. 确保路由协议不在内联网内通告缺省的路由。


    # ifconfig hme0 private
    
  19. 在每个系统上手动添加通过 hme0 实现的缺省路由。

    缺省路由必须是可以直接访问 Internet 的路由器。

    1. enigma 系统上,添加以下路由:


      # route add -inet6 default 2001::aaaa:0:4
      
    2. partym 系统上,添加以下路由:


      # route add -inet6 default 2001::eeee:0:1
      
  20. 在每个系统上,通过向 /etc/hostname6.ip6.tun0 文件中添加项来确保 VPN 在系统重新引导后启动。

    该项复制在步骤 14 中传递到 ifconfig 命令的参数。

    1. enigma 系统上,向 hostname6.ip6.tun0 文件添加以下项:


      6000:6666::aaaa:1116  6000:3333::eeee:1113 \
      tsrc 2001::aaaa:6666:6666   tdst 2001::eeee:3333:3333  router up
    2. partym 系统上,向 hostname6.ip6.tun0 文件添加以下项:


      6000:3333::eeee:1113  6000:6666::aaaa:1116 \
      tsrc 2001::eeee:3333:3333   tdst 2001::aaaa:6666:6666  router up
  21. 将接口文件配置为将正确的参数传送到路由选择守护进程。

    1. enigma 系统上,修改 /etc/hostname6. interface 文件。


      # cat /etc/hostname6.hme0
      ## enigma
      6000:6666::aaaa:1116 inet6 private

      #  cat /etc/hostname6.hme1
      ## enigma
      2001::aaaa:6666:6666 inet6 router
    2. partym 系统上,修改 /etc/hostname6. interface 文件。


      # cat /etc/hostname6.hme0
      ## partym
      6000:3333::eeee:1113 inet6 private

      # cat /etc/hostname6.hme1
      ## 
      partym2001::eeee:3333:3333 inet6 router
  22. 运行路由协议。


    # routeadm -e ipv6-routing
    # routeadm -u
    

示例 20–17 使用过时的语法配置通过 IPv6 实现的处于传输模式的 IPsec

在此示例中,管理员将 Solaris 10 7/07 系统与运行 Solaris 10 发行版的系统连接在一起。因此,管理员在配置文件中使用 Solaris 10 语法,并在 ifconfig 命令中包含 IPsec 算法。

管理员按照如何使用通过 Ipv6 实现的处于传输模式的 IPsec 隧道保护 VPN过程进行操作,但在语法上进行了以下更改。


Procedure如何防止 IP 电子欺骗

要防止系统在未尝试对包进行解密的情况下将包转发至另一个接口,系统需要检查 IP 电子欺骗。一种预防方法是使用 ndd 命令设置 IP 严格目标多宿主参数。在 SMF 清单中设置了此参数时,系统重新引导时就会设置此参数。


注 –

在两个系统中执行此过程中的步骤。


  1. 在系统控制台上,承担主管理员角色或成为超级用户。

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

  2. 创建用于检查 IP 电子欺骗的站点专用 SMF 清单。

    使用以下样例脚本 /var/svc/manifest/site/spoof_check.xml

    <?xml version="1.0"?>
    <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
    
    <service_bundle type='manifest' name='Custom:ip_spoof_checking'>
    
    <!--    This is a custom smf(5) manifest for this system. Place this
            file in /var/svc/manifest/site, the directory for local
            system customizations. The exec method uses an unstable
            interface to provide a degree of protection against IP
            spoofing attacks when this system is acting as a router.
    
            IP spoof protection can also be achieved by using ipfilter(5).
            If ipfilter is configured, this service can be disabled.
    
            Note: Unstable interfaces might be removed in later
            releases.  See attributes(5).
    -->
    
    <service
            name='site/ip_spoofcheck'
            type='service'
            version='1'>
    
            <create_default_instance enabled='false' />
            <single_instance />
    
            <!--    Don't enable spoof protection until the
                    network is up.
            -->
            <dependency
                    name='basic_network'
                    grouping='require_all'
                    restart_on='none'
                    type='service'>
            <service_fmri value='svc:/milestone/network' />
            </dependency>
    
            <exec_method
                    type='method'
                    name='start'
                    exec='/usr/sbin/ndd -set /dev/ip ip_strict_dst_multihoming 1'
    <!--    
         For an IPv6 network, use the IPv6 version of this command, as in:
                    exec='/usr/sbin/ndd -set /dev/ip ip6_strict_dst_multihoming 1
    -->
                    timeout_seconds='60'
            />
    
            <exec_method
                    type='method'
                    name='stop'
                    exec=':true'
                    timeout_seconds='3'
            />
    
            <property_group name='startd' type='framework'>
                    <propval
                            name='duration'
                            type='astring'
                            value='transient'
                    />
            </property_group>
    
            <stability value='Unstable' />
    
    </service>
    </service_bundle>
  3. 将此清单导入到 SMF 系统信息库。


    # svccfg import /var/svc/manifest/site/spoof_check.xml
    
  4. 启用 ip_spoofcheck 服务。

    使用在清单中定义的名称 /site/ip_spoofcheck


    # svcadm enable /site/ip_spoofcheck
    
  5. 检验 ip_spoofcheck 服务是否联机。


    # svcs /site/ip_spoofcheck