系统管理指南:IP 服务

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}