跳过导航链接 | |
退出打印视图 | |
系统管理指南:IP 服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
1. Oracle Solaris TCP/IP 协议套件(概述)
5. 配置 TCP/IP 网络服务和 IPv4 寻址(任务)
如何将 IKE 配置为查找 Sun Crypto Accelerator 1000 板
如何将 IKE 配置为查找 Sun Crypto Accelerator 4000 板
25. Oracle Solaris 中的 IP 过滤器(概述)
使用预先共享的密钥是验证 IKE 的最简单方法。如果要将两个系统配置为使用 IKE,而且您是这两个系统的管理员,则使用预先共享的密钥是一个良好的选择。但是,与公钥证书不同,预先共享的密钥与特定的 IP 地址相关联。预先共享的密钥不能用于移动系统或可能重新编号的系统。此外,在使用预先共享的密钥时,不能将 IKE 计算转移到连接的硬件。
IKE 实现提供了采用可变密钥长度的算法。所选的密钥长度是由站点安全性确定的。通常,密钥越长,提供的安全性就越高。
以下过程使用系统名称 enigma 和 partym。请用您的系统名称替换名称 enigma 和 partym。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
注 - 远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。
此文件中的规则和全局参数应该允许系统的 ipsecinit.conf 文件中的 IPsec 策略可以成功实施。以下是与如何使用 IPsec 保证两个系统之间的通信安全中的 ipsecinit.conf 示例配合使用的 ike/config 示例。
### ike/config file on enigma, 192.168.116.16 ## Global parameters # ## Phase 1 transform defaults p1_lifetime_secs 14400 p1_nonce_len 40 # ## Defaults that individual rules can override. p1_xform { auth_method preshared oakley_group 5 auth_alg sha encr_alg des } p2_pfs 2 # ## The rule to communicate with partym # Label must be unique { label "enigma-partym" local_addr 192.168.116.16 remote_addr 192.168.13.213 p1_xform { auth_method preshared oakley_group 5 auth_alg sha1 encr_alg aes } p2_pfs 5 }
注 - auth_method 参数的所有变量都必须在同一行上。
### ike/config file on partym, 192.168.13.213 ## Global Parameters # p1_lifetime_secs 14400 p1_nonce_len 40 # p1_xform { auth_method preshared oakley_group 5 auth_alg sha encr_alg des } p2_pfs 2 ## The rule to communicate with enigma # Label must be unique { label "partym-enigma" local_addr 192.168.13.213 remote_addr 192.168.116.16 p1_xform { auth_method preshared oakley_group 5 auth_alg sha1 encr_alg aes } p2_pfs 5 }
# /usr/lib/inet/in.iked -c -f /etc/inet/ike/config
如果站点具有随机数生成器,请使用该生成器。在 Solaris 系统上,可以使用 od 命令。例如,以下命令列显两行十六进制数:
% od -X -A n /dev/random | head -2 f47cb0f4 32e14480 951095f8 2b735ba8 0a9467d0 8f92c880 68b6a40e 0efe067d
有关 od 命令的说明,请参见如何在 Solaris 系统上生成随机数和 od(1) 手册页。
f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
此过程中的验证算法是 SHA–1,如步骤 3 所示。散列的大小(即验证算法输出的大小)确定预先共享密钥的最小建议大小。SHA–1 算法的输出是 160 位或 40 个字符。示例密钥的长度是 56 个字符,这将提供其他加密材料供 IKE 使用。
在每个文件中放置预先共享的密钥。
# ike.preshared on enigma, 192.168.116.16 #… { localidtype IP localid 192.168.116.16 remoteidtype IP remoteid 192.168.13.213 # enigma and partym's shared key in hex (192 bits) key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e }
# ike.preshared on partym, 192.168.13.213 #… { localidtype IP localid 192.168.13.213 remoteidtype IP remoteid 192.168.116.16 # partym and enigma's shared key in hex (192 bits) key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e }
注 - 每个系统上的预先共享密钥必须完全相同。
示例 23-1 为运行不同操作系统的两个系统生成相同的加密材料
Solaris IPsec 可与其他操作系统交互操作。如果您的系统与需要 ASCII 预先共享密钥的系统通信,则需要以两种格式(十六进制格式和 ASCII 格式)生成一个密钥。
在此示例中,Solaris 系统管理员需要 56 个字符的加密材料。该管理员使用以下命令从 ASCII 口令短语中生成十六进制的密钥。在所有 Solaris 系统中,-tx1 选项每次输出一个字节。
# /bin/echo "papiermache with cashews and\c" | od -tx1 | cut -c 8-55 | \ tr -d '\n' | tr -d ' ' | awk '{print}' 7061706965726d616368652077697468206361736865777320616e64
通过删除偏移和串联十六进制输出,Solaris 系统的十六进制密钥为 7061706965726d616368652077697468206361736865777320616e64。管理员可以将该值放在 Solaris 系统上的 ike.preshared 文件中。
# Shared key in hex (192 bits) key 7061706965726d616368652077697468206361736865777320616e64
在需要 ASCII 预先共享密钥的系统中,口令短语就是预先共享的密钥。Solaris 系统管理员使用口令短语 papiermache with cashews and 给其他管理员打电话。
此过程假定您希望按固定的时间间隔替换现有的预先共享密钥。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
注 - 远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。
有关详细信息,请参见如何在 Solaris 系统上生成随机数。如果要生成预先共享密钥的 Solaris 系统与需要 ASCII 的操作系统通信,请参见示例 23-1。
例如,在主机 enigma 和 partym 上,将 /etc/inet/secret/ike.preshared 文件中 key 的值替换为一个相同长度的新数值。
# svcadm refresh ike
# /usr/sbin/ikeadm get priv Current privilege level is 0x0, base privileges enabled
如果该命令返回特权级别 0x1 或 0x2,则您可以更改加密材料。级别 0x0 不允许执行修改或查看加密材料的操作。缺省情况下,in.iked 守护进程按特权级别 0x0 运行。
守护进程重新启动时,它将读取新版本的 ike.preshared 文件。
# pkill in.iked # /usr/lib/inet/in.iked
# ikeadm read preshared
缺省情况下,ikeadm 命令会阻止您在阶段 1 SA 的转储中查看实际密钥。在调试期间查看密钥很有用。
要查看实际密钥,您必须提高守护进程的特权级别。有关特权级别的说明,请参见IKE 管理命令。
开始之前
已配置 IKE,并且 ike 服务正在运行。
# ikeadm ikeadm> dump preshared
# svcprop -p config/admin_privilege ike base # svccfg -s ike setprop config/admin_privilege=keymat
# svcadm refresh ike ; svcadm restart ike
# svcprop -p config/admin_privilege ike keymat
# svccfg -s ike setprop config/admin_privilege=base
# svcadm refresh ike ; svcadm restart ike
示例 23-2 在 Solaris 10 4/09 发行版之前的发行版中检验 IKE 预先共享密钥
在以下示例中,管理员要在运行的不是当前 Solaris 发行版的 Solaris 系统中查看密钥。管理员想要检验该系统中的密钥是否与通信系统中的密钥完全相同。检验两个系统中的密钥是否完全相同后,管理员将特权级别恢复为 0。
首先,管理员确定 in.iked 守护进程的特权级别。
adm1 # /usr/sbin/ikeadm get priv Current privilege level is 0x0, base privileges enabled
由于特权级别不是 0x1 或 0x2,所以管理员会停止 in.iked 守护进程,然后将特权级别提高到 2。
adm1 # pkill in.iked adm1 # /usr/lib/inet/in.iked -p 2 Setting privilege level to 2
管理员显示密钥。
adm1 # ikeadm dump preshared PSKEY: Preshared key (24 bytes): f47cb…/192 LOCIP: AF_INET: port 0, 192.168.116.16 (adm1). REMIP: AF_INET: port 0, 192.168.13.213 (com1).
管理员远程登录到通信系统,并确定密钥是否完全相同。
然后,管理员恢复 base 特权级别。
# ikeadm set priv base
如果在 IPsec 和 IKE 正在运行时添加 IPsec 策略项,则必须将新的策略和 IKE 规则读入内核。从 Solaris 10 4/09 发行版开始,添加新密钥后,要重新启动 policy 服务并刷新 ike 服务。
开始之前
此过程将假定以下内容:
按如何使用预先共享的密钥配置 IKE所述设置了 enigma 系统。
enigma 系统将要用新系统 ada 保护其流量。
in.iked 守护进程正在这两个系统上运行。
在这两个系统的 /etc/hosts 文件中,均会将这些系统的接口作为项列出。以下项是一个示例。
192.168.15.7 ada 192.168.116.16 enigma
此过程也适用于 /etc/inet/ipnodes 文件中的 IPv6 地址。 从 Solaris 10 6/07 发行版开始,IPv6 项会放置在 /etc/hosts 文件中。
已经在这两个系统上将新的策略项添加到 /etc/inet/ipsecinit.conf 文件。这些项的显示与以下信息类似:
# ipsecinit.conf file for enigma {laddr enigma raddr ada} ipsec {auth_algs any encr_algs any sa shared}
# ipsecinit.conf file for ada {laddr ada raddr enigma} ipsec {auth_algs any encr_algs any sa shared}
在当前发行版中,您已经使用以下命令在两个系统中检验了 /etc/inet/ipsecinit.conf 文件的语法。
# ipsecconf -c -f /etc/inet/ipsecinit.conf
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
注 - 远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。
有关详细信息,请参见如何在 Solaris 系统上生成随机数。如果要生成预先共享密钥的 Solaris 系统与需要 ASCII 的操作系统通信,请参见示例 23-1。
需要同时添加相同的预先共享密钥。密钥的安全性仅与传输机制的安全性相同。带外机制(如已注册的邮件或受保护的传真机)是最佳的。您也可以使用 ssh 会话管理这两个系统。
### ike/config file on enigma, 192.168.116.16 ## The rule to communicate with ada {label "enigma-to-ada" local_addr 192.168.116.16 remote_addr 192.168.15.7 p1_xform {auth_method preshared oakley_group 5 auth_alg sha1 encr_alg blowfish} p2_pfs 5 }
### ike/config file on ada, 192.168.15.7 ## The rule to communicate with enigma {label "ada-to-enigma" local_addr 192.168.15.7 remote_addr 192.168.116.16 p1_xform {auth_method preshared oakley_group 5 auth_alg sha1 encr_alg blowfish} p2_pfs 5 }
# ike.preshared on enigma for the ada interface # { localidtype IP localid 192.168.116.16 remoteidtype IP remoteid 192.168.15.7 # enigma and ada's shared key in hex (32 - 448 bits required) key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d }
# ike.preshared on ada for the enigma interface # { localidtype IP localid 192.168.15.7 remoteidtype IP remoteid 192.168.116.16 # ada and enigma's shared key in hex (32 - 448 bits required) key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d }
# svcadm restart policy
# svcadm refresh ike
示例 23-3 为新的 IPsec 策略项添加 IKE 预先共享密钥
在以下示例中,管理员要将预先共享密钥添加到运行的不是当前 Solaris 发行版的 Solaris 系统。管理员遵循前面的过程来修改 ike/config 和 ike.preshared 文件,然后生成密钥并联系远程系统。管理员使用不同的命令将新的 IPsec 策略和 IKE 规则读入内核。
在生成新密钥之前,管理员将 in.iked 守护进程的特权级别设置为 2。
# pkill in.iked # /usr/lib/inet/in.iked -p 2 Setting privilege level to 2
将密钥发送给另一个系统并将新密钥添加到系统后,管理员降低了特权级别。
# ikeadm set priv base
然后,管理员将新的 IPsec 策略读入内核。
# ipsecconf -a /etc/inet/ipsecinit.conf
最后,管理员将新的 IKE 规则读入内核。
# ikeadm read rules
如果通信系统上的预先共享密钥不是完全相同的,则系统无法进行验证。
开始之前
在要测试的两个系统之间已配置并启用 IPsec。您运行的是当前 Solaris 10 发行版。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
注 - 远程登录会使安全关键型通信易于遭到窃听。即使以某种方式保护远程登录,系统的安全性也会降至远程登录会话的安全性。请使用 ssh 命令进行安全的远程登录。
# svcprop -p config/admin_privilege ike base
然后,刷新并重新启动 ike 服务。
# svccfg -s ike setprop config/admin_privilege=keymat # svcadm refresh ike ; svcadm restart ike # svcprop -p config/admin_privilege ike keymat
# ikeadm dump preshared PSKEY: Preshared key (24 bytes): f47cb…/192 LOCIP: AF_INET: port 0, 192.168.116.16 (enigma). REMIP: AF_INET: port 0, 192.168.13.213 (partym).
如果预先共享的密钥不是完全相同的,则在 /etc/inet/secret/ike.preshared 文件中将一个密钥替换为另一个密钥。
# svccfg -s ike setprop config/admin_privilege=base # svcadm restart ike