系统管理指南:安全性服务

典型的 Solaris 安全 Shell 会话

Solaris 安全 Shell 守护进程 (sshd) 通常在引导时(启动网络服务时)启动。该守护进程侦听来自客户机的连接。Solaris 安全 Shell 会话在用户运行 sshscpsftp 命令时开始。系统将为每个传入连接派生一个新的 sshd 守护进程。派生的守护进程处理密钥交换、加密、验证、命令执行以及与客户机的数据交换。这些会话的特征由客户端配置文件和服务器端配置文件确定。命令行参数可以覆盖配置文件中的设置。

客户机和服务器必须相互进行认证。验证成功后,用户可以远程执行命令和在主机之间复制数据。

Solaris 安全 Shell 中会话的特征

sshd 守护进程的服务器端行为由 /etc/ssh/sshd_config 文件中的关键字设置控制。例如,sshd_config 文件控制访问服务器时可采用哪些类型的验证。启动 sshd 守护进程时,命令行选项也可控制服务器端行为。

客户端的行为由 Solaris 安全 Shell 关键字控制,其优先级顺序如下:

例如,用户可以通过在命令行中指定 -c 3des 来覆盖在系统范围内配置的 Cipher 的设置值 blowfish

Solaris 安全 Shell 中的验证和密钥交换

Solaris 安全 Shell 协议(v1 和 v2)均支持客户机用户/主机验证和服务器主机验证。这两种协议都涉及会话加密密钥(用于保护 Solaris 安全 Shell 会话)的交换。每种协议提供了用于验证和密钥交换的各种方法。一些方法是可选的。Solaris 安全 Shell 支持许多客户机验证机制,如表 18–1 中所示。通常使用已知的主机公钥对服务器进行验证。

对于 v1 协议,Solaris 安全 Shell 支持使用口令进行用户验证。该协议也支持用户公钥,以及使用受信任的主机公钥进行验证。服务器验证使用主机公钥完成。对于 v1 协议,所有公钥都是 RSA 密钥。会话密钥交换涉及对定期重新生成的暂时服务器密钥的使用。

对于 v2 协议,Solaris 安全 Shell 支持用户验证和一般交互验证,这通常涉及到口令。该协议也支持使用用户公钥和受信任的主机公钥进行验证。这些密钥可以是 RSA 或 DSA。会话密钥交换由在服务器验证步骤中签名的 Diffie-Hellman 暂时密钥交换组成。此外,Solaris 安全 Shell 可以使用 GSS 凭证进行验证。

获取 Solaris 安全 Shell 中的 GSS 凭证

要在 Solaris 安全 Shell 中使用 GSS-API 进行验证,服务器必须具有 GSS-API 接收器凭证,客户机必须具有 GSS-API 启动器凭证。支持 mech_dhmech_krb5

对于 mech_dh,如果 root 已运行 keylogin 命令,则服务器具有 GSS-API 接收器凭证。

对于 mech_krb5,如果 /etc/krb5/krb5.keytab 中包含与该服务器对应的主机主体的有效项,则服务器具有 GSS-API 接收器凭证。

如果执行了以下某项操作,则客户机具有 mech_dh 的启动器凭证:

如果执行了以下某项操作,则客户机具有 mech_krb5 的启动器凭证:

有关 mech_dh 在安全 RPC 中的使用,请参见第 15 章,使用验证服务(任务)。有关如何使用 mech_krb5,请参见第 20 章,Kerberos 服务介绍。有关机制的更多信息,请参见 mech(4)mech_spnego(5) 手册页。

Solaris 安全 Shell 中的命令执行和数据转发

完成验证后,用户通常可通过请求 shell 或执行命令来使用 Solaris 安全 Shell。通过 ssh 命令选项可发出请求。请求可能包括分配伪 tty、转发 X11 连接或 TCP/IP 连接,或通过安全连接启用 ssh-agent 验证程序。用户会话的基本组成部分如下:

  1. 用户请求 shell 或请求执行命令,以开始会话模式。

    在此模式下,数据通过客户端的终端进行发送或接收。在服务器端,数据通过 shell 或命令进行发送。

  2. 数据传送完成后,用户程序将终止。

  3. 除已存在的连接外,所有 X11 转发和 TCP/IP 转发均停止。现有 X11 连接和 TCP/IP 连接仍然处于打开状态。

  4. 服务器向客户机发送退出状态消息。关闭所有连接后(如仍处于打开状态的转发端口),客户机将关闭到服务器的连接。然后,客户机退出。