跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:IP 服务 Oracle Solaris 11 Information Library (简体中文) |
如何使用 IPsec 保护 Web 服务器使之免受非 Web 通信影响
20. Oracle Solaris 中的 IP 过滤器(概述)
Oracle Solaris 可以配置受 IPsec 保护的 VPN。可在隧道模式或传输模式下创建隧道。有关介绍,请参见IPsec 中的传输模式和隧道模式。本节中的示例和过程使用 IPv4 地址,但这些示例和过程同样适用于 IPv6 VPN。有关简短介绍,请参见使用 IPsec 保护通信。
有关处于隧道模式的隧道的 IPsec 策略示例,请参见在隧道模式下使用 IPsec 保护 VPN 的示例。
图 15-1 受 IPsec 保护的隧道
以下示例假设这些 LAN 的所有子网都配置了隧道:
## Tunnel configuration ## # Tunnel name is 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
# Tunnel name address object is tun0/to-central # Tunnel name address object is tun0/to-overseas
示例 15-2 创建一个所有子网都可以使用的隧道
在此示例中,来自图 15-1 中的中心 LAN 的本地 LAN 的所有通信都可以通过隧道从路由器 1 传送到路由器 2,然后再传送到国外 LAN 的所有本地 LAN。通信使用 AES 进行加密。
## IPsec policy ## {tunnel tun0 negotiate tunnel} ipsec {encr_algs aes encr_auth_algs sha512 sa shared}
示例 15-3 创建一个仅连接两个子网的隧道
在此示例中,仅为中心 LAN 的子网 10.1.2.0/24 和国外 LAN 的子网 10.2.3.0/24 之间的通信建立了隧道并对通信进行了加密。在中心 LAN 没有其他 IPsec 策略的情况下,如果中心 LAN 尝试通过此隧道路由其他 LAN 的任何通信,则通信会在路由器 1 处被丢弃。
## IPsec policy ## {tunnel tun0 negotiate tunnel laddr 10.1.2.0/24 raddr 10.2.3.0/24} ipsec {encr_algs aes encr_auth_algs sha512 shared}
本节中的过程假设您已经进行了以下设置。有关此网络的描述,请参见图 15-2。
每个系统都使用 IPv4 地址空间。
每个系统都有两个接口。net0 接口连接到 Internet。在此示例中,Internet IP 地址以 192.168 开始。net1 接口连接到公司的 LAN(即公司的内联网)。在此示例中,内联网 IP 地址以数字 10 开始。
每个系统都需要采用 SHA-2 算法的 ESP 验证。在此示例中,SHA-2 算法需要 512 位的密钥。
每个系统都需要采用 AES 算法的 ESP 加密。AES 算法使用 128 位或 256 位的密钥。
每个系统都可以连接到能直接访问 Internet 的路由器。
每个系统都使用共享安全关联。
图 15-2 通过 Internet 连接的办公室之间的 VPN 样例
如上图所示,这些过程使用以下配置参数。
|
有关隧道名称的信息,请参见使用 dladm 命令进行隧道配置和管理。有关地址对象的信息,请参见如何配置 IP 接口和 ipadm(1M) 手册页。
在隧道模式下,内部 IP 包决定保护其内容的 IPsec 策略。
此过程扩展了如何使用 IPsec 保证两个系统之间的通信安全过程。用于保护 VPN 的 IPsec 任务的网络拓扑说明介绍了具体设置。
有关运行特定命令的更详尽的原因说明,请参见如何使用 IPsec 保证两个系统之间的通信安全中的相应步骤。
注 - 在两个系统中执行此过程中的步骤。
除了连接两个系统之外,还要连接两个连接到这两个系统的内联网。此过程中的系统作为网关使用。
注 - 要在 Trusted Extensions 系统上在隧道模式下使用带标签的 IPsec,请参见《Trusted Extensions 配置和管理》中的"如何通过不可信网络配置通道"中此过程的扩展。
开始之前
必须位于全局区域中才能为系统或共享 IP 区域配置 IPsec 策略。对于专用 IP 区域,请在非全局区域中配置 IPsec 策略。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。如果您以远程方式登录,请使用 ssh 命令实现安全的远程登录。有关示例,请参见示例 15-1。
# routeadm -d ipv4-routing # ipadm set-prop -p forwarding=off ipv4 # routeadm -u
关闭 IP 转发功能可阻止包通过此系统从一个网络转发到另一个网络。有关 routeadm 命令的说明,请参见 routeadm(1M) 手册页。
# ipadm set-prop -p hostmodel=strong ipv4
打开 IP 严格多宿主要求发往系统的目标地址之一的包到达正确的目标地址。
当 hostmodel 参数设置为 strong 时,到达特定接口的包的地址必须为该接口的本地 IP 地址之一。所有其他包,甚至是传送到系统其他本地地址的包,均被丢弃。
检验回送挂载和 ssh 服务是否正在运行。
# svcs | grep network online Aug_02 svc:/network/loopback:default … online Aug_09 svc:/network/ssh:default
编辑 /etc/inet/ipsecinit.conf 文件来为 VPN 添加 IPsec 策略。有关其他示例,请参见在隧道模式下使用 IPsec 保护 VPN 的示例。
在此策略中,本地 LAN 上的系统与网关的内部 IP 地址之间不需要 IPsec 保护,因此将添加 bypass 语句。
# 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}
# 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}
按照配置 IKE(任务列表)中的配置过程之一来配置 IKE。有关 IKE 配置文件的语法,请参见 ike.config(4) 手册页。
# ipsecconf -c -f /etc/inet/ipsecinit.conf
修复任何错误、检验文件的语法,然后继续。
# svcadm refresh svc:/network/ipsec/policy:default
IPsec 策略缺省情况下处于启用状态,因此要对其进行刷新。如果您已禁用了 IPsec 策略,请将其启用。
# svcadm enable svc:/network/ipsec/policy:default
以下命令用于配置内部接口和外部接口、创建 tun0 隧道并为该隧道指定 IP 地址。
如果接口 net1 不存在,第一个命令将会创建该接口。
# ipadm create-addr -T static -a local=10.1.3.3 net1/inside # dladm create-iptun -T ipv4 -a local=10.1.3.3,remote=10.16.16.6 tun0 # ipadm create-addr -T static \ -a local=192.168.13.213,remote=192.168.116.16 tun0/v4tunaddr
# ipadm create-addr -T static -a local=10.16.16.6 net1/inside # dladm create-iptun -T ipv4 -a local=10.16.16.6,remote=10.1.3.3 tun0 # ipadm create-addr -T static \ -a local=192.168.116.16,remote=192.168.13.213 tun0/v4tunaddr
注 - ipadm 命令的 -T 选项用于指定要创建的地址类型。dladm 命令的 -T 选项用于指定该隧道。
有关这些命令的信息,请参见 dladm(1M)、ipadm(1M) 手册页以及如何配置 IP 接口。有关定制名称的信息,请参见《Oracle Solaris 管理:网络接口和网络虚拟化》中的"网络设备和数据链路名称"。
# ipadm set-ifprop -m ipv4 -p forwarding=on net1 # ipadm set-ifprop -m ipv4 -p forwarding=off net0
IP 转发指可以转发来自其他位置的包。IP 转发也指由此接口发出的包可能源于其他位置。要成功转发包,必须打开接收接口和传送接口的 IP 转发功能。
因为 net1 接口在内联网内部,所以必须打开 net1 的 IP 转发功能。由于 tun0 通过 Internet 连接两个系统,因此 IP 转发必须对 tun0 保持打开状态。net0 接口已关闭其 IP 转发功能以阻止外部入侵者向受保护的内联网中注入包。外部是指 Internet。
# ipadm set-addrprop -p private=on net0
即使 net0 关闭 IP 转发功能,路由协议实现仍会通告接口。例如,in.routed 协议仍会通告 net0 可将包转发到内联网中的对等接口。可以通过设置接口的专用标志,阻止这些通告。
# svcadm restart svc:/network/initial:default
缺省路由必须是可以直接访问 Internet 的路由器。
# route -p add net default 192.168.13.5
# route -p add net default 192.168.116.4
即使 net0 接口不是内联网的一部分,net0 也需要通过 Internet 访问其同级系统。要找到其同级系统,net0 需要有关 Internet 路由的信息。对于 Internet 的其他部分来说,VPN 系统像是一台主机,而不是路由器。因此,您可以使用缺省的路由器或运行路由器搜索协议来查找同级系统。有关更多信息,请参见 route(1M) 和 in.routed(1M) 手册页。