跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:IP 服务 Oracle Solaris 11 Information Library (简体中文) |
如何使用 IPsec 保护 Web 服务器使之免受非 Web 通信影响
20. Oracle Solaris 中的 IP 过滤器(概述)
以下任务列表列出了在管理 IPsec 时可能要执行的任务。
|
以下过程为如何使用 IPsec 保证两个系统之间的通信安全中的步骤 5 提供了加密材料。您要为两个系统(partym 和 enigma)生成密钥。您在一个系统上生成密钥,然后在两个系统中使用在第一个系统中生成的密钥。
开始之前
您必须位于全局区域中,才能手动管理非全局区域的加密材料。
您需要将三个十六进制随机数用于外发通信,三个十六进制随机数用于传入通信。因此,一个系统需要生成以下数字:
两个作为 spi 关键字值的十六进制随机数。一个数字用于外发通信,一个数字用于传入通信。每个数字的长度最大可以为八个字符。
两个用于 AH 的 SHA-2 算法的十六进制随机数。每个数字的长度都必须为 512 个字符。一个数字用于 dst enigma,另一个数字用于 dst partym。
两个用于 ESP 的 3DES 算法的十六进制随机数。每个数字的长度都必须为 168 个字符。一个数字用于 dst enigma,另一个数字用于 dst partym。
如果您的站点上有随机数生成器,请使用此生成器。
使用 pktool 命令,如《Oracle Solaris 管理:安全服务》中的"如何使用 pktool 命令生成对称密钥"和该节中的 IPsec 示例所示。
# 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. # # Backslashes indicate command continuation. # # for outbound packets on enigma add esp spi 0x8bcd1407 \ src 192.168.116.16 dst 192.168.13.213 \ encr_alg 3des \ auth_alg sha512 \ encrkey d41fb74470271826a8e7a80d343cc5aa... \ authkey e896f8df7f78d6cab36c94ccf293f031... # # for inbound packets add esp spi 0x122a43e4 \ src 192.168.13.213 dst 192.168.116.16 \ encr_alg 3des \ auth_alg sha512 \ encrkey dd325c5c137fb4739a55c9b3a1747baa... \ authkey ad9ced7ad5f255c9a8605fba5eb4d2fd...
# chmod 400 /etc/inet/secret/ipseckeys
# ipseckey -c -f /etc/inet/secret/ipseckeys
注 - 两个系统上的加密材料必须完全相同。
# svcadm enable svc:/network/ipsec/manual-key:default
# svcadm refresh ipsec/manual-key
接下来的步骤
如果建立 IPsec 策略未完成,请返回到 IPsec 过程以启用或刷新 IPsec 策略。
如果您要使用 Oracle Solaris 的基于角色的访问控制 (role-based access control, RBAC) 功能来管理系统,请使用此过程提供网络管理角色或网络安全角色。
% getent prof_attr | grep Network | more Console User:RO::Manage System as the Console User... Network Management:RO::Manage the host and network configuration... Network Autoconf Admin:RO::Manage Network Auto-Magic configuration via nwamd... Network Autoconf User:RO::Network Auto-Magic User... Network ILB:RO::Manage ILB configuration via ilbadm... Network LLDP:RO::Manage LLDP agents via lldpadm... Network VRRP:RO::Manage VRRP instances... Network Observability:RO::Allow access to observability devices... Network Security:RO::Manage network and host security...:profiles=Network Wifi Security,Network Link Security,Network IPsec Management... Network Wifi Management:RO::Manage wifi network configuration... Network Wifi Security:RO::Manage wifi network security... Network Link Security:RO::Manage network link security... Network IPsec Management:RO::Manage IPsec and IKE... System Administrator:RO::Can perform most non-security administrative tasks:profiles=...Network Management... Information Security:RO::Maintains MAC and DAC security policies:profiles=...Network Security...
网络管理配置文件是系统管理员配置文件的补充配置文件。如果您将系统管理员权限配置文件纳入角色,则此角色可以执行网络管理配置文件中的命令。
% getent exec_attr | grep "Network Management" ... Network Management:solaris:cmd:::/sbin/dlstat:euid=dladm;egid=sys ... Network Management:solaris:cmd:::/usr/sbin/snoop:privs=net_observability Network Management:solaris:cmd:::/usr/sbin/spray:euid=0 ...
使用步骤 1 中的权限配置文件定义指导您做出决定。
要创建处理所有网络安全的角色,请使用网络安全权限配置文件。
要创建只处理 IPsec 和 IKE 的角色,请使用网络 IPsec 管理权限配置文件。
对于拥有除网络管理配置文件外还拥有网络安全或网络 IPsec 管理权限配置文件的角色,除了可执行其他命令外,还可按相应的特权执行 ipadm、ipseckey 和 snoop 命令。
要创建该角色、将该角色指定给用户以及使用命名服务注册更改,请参见《Oracle Solaris 管理:安全服务》中的"初次配置 RBAC(任务列表)"。
示例 15-4 在角色之间划分网络安全职责
在此示例中,管理员要在两个角色之间划分网络安全职责。其中一个角色负责管理 wifi 和链路安全,另一个角色负责管理 IPsec 和 IKE。为每个角色指定三个人,一人一班。
管理员创建的角色如下:
管理员将第一个角色命名为 LinkWifi。
管理员将网络 Wifi、网络链路安全和网络管理权限配置文件指定给该角色。
然后,管理员将 LinkWifi 角色指定给适当的用户。
管理员将第二个角色命名为 IPsec Administrator。
管理员将网络 IPsec 管理和网络管理权限配置文件指定给该角色。
然后,管理员将 IPsec Administrator 角色指定给适当的用户。
以下步骤提供了最有可能针对 IPsec、IKE 和手动密钥管理使用 SMF 服务的情况。缺省情况下,policy 和 ipsecalgs 服务处于启用状态,而 ike 和 manual-key 服务处于禁用状态。
# svcadm refresh svc:/network/ipsec/policy
# svccfg -s policy setprop config/config_file=/etc/inet/MyIpsecinit.conf # svccfg -s policy listprop config/config_file config/config_file astring /etc/inet/MyIpsecinit.conf # svcadm refresh svc:/network/ipsec/policy # svcadm restart svc:/network/ipsec/policy
# svcadm enable svc:/network/ipsec/ike
# svcadm restart svc:/network/ipsec/ike:default
# svccfg -s ike setprop config/admin_privilege = astring: "modkeys" # svccfg -s ike listprop config/admin_privilege config/admin_privilege astring modkeys # svcadm refresh svc:/network/ipsec/ike # svcadm restart svc:/network/ipsec/ike
# svcadm disable svc:/network/ipsec/ike
# svcadm enable svc:/network/ipsec/manual-key:default
# svcadm refresh manual-key
# svccfg -s manual-key setprop config/config_file=/etc/inet/secret/MyIpseckeyfile # svccfg -s manual-key listprop config/config_file config/config_file astring /etc/inet/secret/MyIpseckeyfile # svcadm refresh svc:/network/ipsec/manual-key # svcadm restart svc:/network/ipsec/manual-key
# svcadm disable svc:/network/ipsec/manual-key
# svcadm refresh svc:/network/ipsec/ipsecalgs
故障排除
使用 svcs service 命令找到服务的状态。如果服务处于 maintenance 模式,请遵循 svcs -x service 命令输出的调试建议。
要检验包是否受到保护,请使用 snoop 命令来测试连接。以下前缀可以在 snoop 输出中显示:
AH: 前缀指明 AH 正在保护头。如果已使用 auth_alg 来保护通信,则会看到 AH:。
ESP: 前缀指明正在发送加密数据。如果已使用 encr_auth_alg 或 encr_alg 来保护通信,则会看到 ESP:。
开始之前
您必须处于 root 角色,才能创建 snoop 输出。必须可以同时访问两个系统才能测试连接。
% su - Password: Type root password #
在 partym 上的一个终端窗口中,从 enigma 系统搜寻包。
# snoop -d net0 -v enigma Using device /dev/bge (promiscuous mode)
在另一个终端窗口中,远程登录到 enigma 系统。提供您的口令。然后,承担 root 角色并将包从 enigma 系统发送到 partym 系统。包应该由 snoop -v enigma 命令捕获。
% ssh enigma Password: Type your password % su - Password: Type root password # ping partym
在 partym 系统上,您应该看到在初始 IP 头信息之后显示 AH 和 ESP 信息的输出。类似以下内容的 AH 和 ESP 信息表明包正在受到保护:
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 ----- ...