在 Oracle® Solaris 11.2 中确保网络安全

退出打印视图

更新时间: 2014 年 9 月
 
 

如何在隧道模式下使用 IPsec 保护两个 LAN 之间的连接

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

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

有关运行特定命令的更详尽的原因说明,请参见如何使用 IPsec 保护两台服务器之间的网络通信 中的相应步骤。


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

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


注 - 要在 Trusted Extensions 系统上在隧道模式下使用带标签的 IPsec,请参见Trusted Extensions 配置和管理 中的如何通过不可信网络配置隧道中此过程的扩展。

开始之前

每个系统均为全局区域或专用 IP 区域。有关更多信息,请参见IPsec 和 Oracle Solaris 区域

    拥有特定权限的用户可以运行这些命令,不必成为 root

  • 要运行配置命令,您必须成为分配有 "Network IPsec Management"(网络 IPsec 管理)权限配置文件的管理员。

  • 要编辑与 IPsec 相关的系统文件和创建密钥,请使用 pfedit 命令。

  • 要编辑 hosts 文件,您必须承担 root 角色或拥有编辑此文件的显式权限。

有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限

如果执行远程管理,请参见Example 7–1在 Oracle Solaris 11.2 中管理安全 Shell 访问 中的如何使用安全 Shell 远程管理 ZFS,了解进行安全远程登录的说明。

  1. 在配置 IPsec 之前控制包流。
    1. 禁用 IP 转发和 IP 动态路由。
      # routeadm -d ipv4-routing
      # ipadm set-prop -p forwarding=off ipv4
      # routeadm -u

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

    2. 启用 IP 严格多宿主。
      # ipadm set-prop -p hostmodel=strong ipv4

      启用 IP 严格多宿主要求发往系统的目标地址之一的包到达正确的目标地址。

      hostmodel 参数设置为 strong 时,到达特定接口的包的地址必须为该接口的本地 IP 地址之一。所有其他包,甚至是传送到系统其他本地地址的包,均被丢弃。

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

      验证 ssh 服务是否正在运行。

      % svcs | grep network
      …
      online         Aug_09   svc:/network/ssh:default
  2. 将 VPN 的 IPsec 策略添加到 /etc/inet/ipsecinit.conf 文件。

    有关其他示例,请参见在隧道模式下使用 IPsec 保护 VPN 的示例

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

    1. euro-vpn 系统上,向 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-2.
      {tunnel tun0 negotiate tunnel} 
       ipsec {encr_algs aes encr_auth_algs sha512 sa shared}
    2. calif-vpn 系统上,向 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-2.
      {tunnel tun0 negotiate tunnel} 
       ipsec {encr_algs aes encr_auth_algs sha512 sa shared}
  3. 在每个系统上,配置 IKE 以在两个系统之间添加一对 IPsec SA。

    按照配置 IKEv2 中的配置过程之一来配置 IKE。有关 IKE 配置文件的语法,请参见 ikev2.config(4) 手册页。如果与仅支持 IKEv1 协议的系统通信,请参阅配置 IKEv1ike.config(4) 手册页。


    注 - 如果您必须手动生成并维护密钥,请参见如何手动创建 IPsec 密钥
  4. 检验 IPsec 策略文件的语法。
    # ipsecconf -c /etc/inet/ipsecinit.conf

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

  5. 刷新 IPsec 策略。
    # svcadm refresh ipsec/policy

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

    # svcadm enable ipsec/policy
  6. 创建并配置隧道 tun0

    以下命令用于配置内部接口和外部接口、创建 tun0 隧道并为该隧道指定 IP 地址。

    1. calif-vpn 系统上,创建该隧道并进行配置。
      # ipadm create-ip net1
      # ipadm create-addr -T static -a local=10.1.3.3 net1/inside
      # dladm create-iptun -T ipv4 -a local=192.168.13.213,remote=192.168.116.16 tun0
      # ipadm create-ip tun0
      # ipadm create-addr -T static \
      -a local=10.1.3.3,remote=10.16.16.6 tun0/v4tunaddr

      第一个命令用于创建 IP 接口 net1。第二个命令用于将地址添加到 net1。第三个命令用于创建 IP 接口 tun0。第四个命令用于添加在隧道链路中封装的 IP 地址。有关更多信息,请参见 dladm(1M)ipadm(1M) 手册页。

    2. euro-vpn 系统上,创建该隧道并进行配置。
      # ipadm create-ip net1
      # ipadm create-addr -T static -a local=10.16.16.6 net1/inside
      # dladm create-iptun -T ipv4 -a local=192.168.116.16,remote=192.168.13.213 tun0
      # ipadm create-ip tun0
      # ipadm create-addr -T static \
      -a local=10.16.16.6,remote=10.1.3.3 tun0/v4tunaddr

      注 - ipadm 命令的 –T 选项用于指定要创建的地址类型。dladm 命令的 –T 选项用于指定该隧道。

      有关这些命令的信息,请参见 dladm(1M)ipadm(1M) 手册页以及在 Oracle Solaris 11.2 中配置和管理网络组件 中的如何配置 IPv4 接口。有关定制名称的信息,请参见在 Oracle Solaris 11.2 中配置和管理网络组件 中的Oracle Solaris 中的网络设备和数据链路命名

  7. 在每个系统上,配置转发。
    # ipadm set-ifprop -m ipv4 -p forwarding=on net1
    # ipadm set-ifprop -m ipv4 -p forwarding=on tun0
    # ipadm set-ifprop -m ipv4 -p forwarding=off net0

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

    因为 net1 接口在内联网内部,所以必须启用 net1 的 IP 转发功能。因为 tun0 通过 Internet 连接两个系统,所以必须启用 tun0 的 IP 转发功能。net0 接口已禁用其 IP 转发功能以阻止 Internet 上的外部入侵者向受保护的内联网中注入包。

  8. 在每个系统上,禁止公布专用接口。
    # ipadm set-addrprop -p private=on net0

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

  9. 重新启动网络服务。
    # svcadm restart svc:/network/initial:default
  10. 手动添加通过 net0 接口实现的缺省路由。

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

    1. calif-vpn 系统上,添加以下路由:
      # route -p add net default 192.168.13.5
    2. euro-vpn 系统上,添加以下路由:
      # route -p add net default  192.168.116.4

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