JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:安全性服务     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  控制对设备的访问(任务)

5.  使用基本审计报告工具(任务)

6.  控制对文件的访问(任务)

7.  使用自动安全性增强工具(任务)

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

10.  基于角色的访问控制(参考)

11.  特权(任务)

12.  特权(参考)

第 4 部分加密服务

13.  Oracle Solaris 加密框架(概述)

14.  Oracle Solaris 加密框架(任务)

15.  Oracle Solaris 密钥管理框架

第 5 部分验证服务和安全通信

16.  使用验证服务(任务)

17.  使用 PAM

18.  使用 SASL

19.  使用 Oracle Solaris 安全 Shell(任务)

20.  Oracle Solaris 安全 Shell(参考)

第 6 部分Kerberos 服务

21.  Kerberos 服务介绍

22.  规划 Kerberos 服务

23.  配置 Kerberos 服务(任务)

24.  Kerberos 错误消息和故障排除

Kerberos 错误消息

SEAM Tool 错误消息

常见的 Kerberos 错误消息 (A-M)

常见的 Kerberos 错误消息 (N-Z)

Kerberos 故障排除

krb5.conf 文件的格式存在问题

传播 Kerberos 数据库时出现问题

挂载基于 Kerberos 的 NFS 文件系统时出现问题

root 身份进行验证时出现问题

观察从 GSS 凭证到 UNIX 凭证的映射

25.  管理 Kerberos 主体和策略(任务)

26.  使用 Kerberos 应用程序(任务)

27.  Kerberos 服务(参考)

第 7 部分Oracle Solaris 审计

28.  Oracle Solaris 审计(概述)

29.  规划 Oracle Solaris 审计

30.  管理 Oracle Solaris 审计(任务)

31.  Oracle Solaris 审计(参考)

词汇表

索引

Kerberos 错误消息

本节介绍有关 Kerberos 错误消息的信息,包括每个错误出现的原因以及解决此错误的方法。

SEAM Tool 错误消息

Unable to view the list of principals or policies; use the Name field.

原因: 登录时使用的 admin 主体在 Kerberos ACL 文件 (kadm5.acl) 中没有列出特权 (l)。因此,无法查看主体列表或策略列表。

解决方法: 必须在 "Name"(名称)字段中键入主体名称和策略名称才能对其进行处理,或者需要使用具有相应特权的主体登录。

JNI: Java array creation failed

JNI: Java class lookup failed

JNI: Java field lookup failed

JNI: Java method lookup failed

JNI: Java object lookup failed

JNI: Java object field lookup failed

JNI: Java string access failed

JNI: Java string creation failed

原因: SEAM Tool (gkadmin) 使用的 Java 本机接口存在严重问题。

解决方法: 退出 gkadmin 然后重新启动。如果问题仍然存在,请报告错误。

常见的 Kerberos 错误消息 (A-M)

本节按字母顺序 (A-M) 列出了 Kerberos 命令、Kerberos 守护进程、PAM 框架、GSS 接口、NFS 服务和 Kerberos 库的常见错误消息。

All authentication systems disabled; connection refused

原因: 此版本的 rlogind 不支持任何验证机制。

解决方法: 确保调用 rlogind 时使用了 -k 选项。

Another authentication mechanism must be used to access this host

原因: 无法完成验证。

解决方法: 确保客户机使用 Kerberos V5 机制进行验证。

Authentication negotiation has failed, which is required for encryption. Good bye.

原因: 无法与服务器协商验证。

解决方法: 通过使用 toggle authdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。另外,确保具有有效凭证。

Bad krb5 admin server hostname while initializing kadmin interface

原因: krb5.conf 文件中为 admin_server 配置了无效的主机名。

解决方法: 确保在 krb5.conf 文件的 admin_server 行中为主 KDC 指定了正确的主机名。

Bad lifetime value

原因: 提供的生命周期值无效或格式不正确。

解决方法: 确保提供的值与 kinit(1) 手册页中“时间格式”一节相符。

Bad start time value

原因: 提供的开始时间值无效或格式不正确。

解决方法: 确保提供的值与 kinit(1) 手册页中“时间格式”一节相符。

Cannot contact any KDC for requested realm

原因: 请求的领域中没有 KDC 响应。

解决方法: 确保至少可以访问一个 KDC(主从皆可),或 krb5kdc 守护进程正在 KDC 上运行。有关已配置 KDC (kdc = kdc-name) 的列表,请查看 /etc/krb5/krb5.conf 文件。

Cannot determine realm for host

原因: Kerberos 无法确定主机的领域名称。

解决方法: 确保存在缺省领域名称,或在 Kerberos 配置文件 (krb5.conf) 中设置了域名映射。

Cannot find KDC for requested realm

原因: 在请求的领域中找不到 KDC。

解决方法: 确保 Kerberos 配置文件 (krb5.conf) 在 realm 部分指定了 KDC。

cannot initialize realm realm-name

原因: KDC 可能没有存储文件。

解决方法: 确保 KDC 具有存储文件。否则,请使用 kdb5_util 命令创建一个存储文件,然后尝试重新启动 krb5kdc 命令。

Cannot resolve KDC for requested realm

原因: Kerberos 无法确定领域的任何 KDC。

解决方法: 确保 Kerberos 配置文件 (krb5.conf) 在 realm 部分指定了 KDC。

Cannot reuse password

原因: 指定的口令之前已被该主体使用。

解决方法: 请选择一个以前未曾选用的口令,至少不应使用 KDC 数据库中为每个主体保存的那些口令。该策略由主体的策略强制执行。

Can't get forwarded credentials

原因: 无法建立凭证转发。

解决方法: 确保主体具有可转发的凭证。

Can't open/find Kerberos configuration file

原因: Kerberos 配置文件 (krb5.conf) 不可用。

解决方法: 确保 krb5.conf 文件位于正确的位置,并具有合适的权限。该文件应可由 root 写入,并可由其他任何用户读取。

Client did not supply required checksum--connection rejected

原因: 未与客户机协商使用校验和进行验证。客户机使用的可能是不支持初始连接支持的早期 Kerberos V5 协议。

解决方法: 确保客户机使用的是支持初始连接支持的 Kerberos V5 协议。

Client/server realm mismatch in initial ticket request

原因: 在初始票证请求中,客户机与服务器之间的领域不匹配。

解决方法: 确保与之通信的服务器与客户机处于同一领域,或者确保领域配置正确。

Client or server has a null key

原因: 主体拥有空密钥。

解决方法: 使用 kadmincpw 命令修改主体,使其拥有非空密钥。

Communication failure with server while initializing kadmin interface

原因: 为管理服务器指定的主机(也称为主 KDC)没有运行 kadmind 守护进程。

解决方法: 确保为主 KDC 指定了正确的主机名。如果指定了正确的主机名,请确保 kadmind 正在指定的主 KDC 上运行。

Credentials cache file permissions incorrect

原因: 您对凭证高速缓存 (/tmp/krb5cc_uid) 没有相应的读写权限。

解决方法: 请确保您拥有对凭证高速缓存的读写权限。

Credentials cache I/O operation failed XXX

原因: Kerberos 在向系统的凭证高速缓存 (/tmp/krb5cc_uid) 进行写入时出现问题。

解决方法: 请使用 df 命令确认尚未删除凭证高速缓存,并且设备中还有剩余空间。

Decrypt integrity check failed

原因: 您的票证可能无效。

解决方法: 请检验以下两种情况:

Encryption could not be enabled. Goodbye.

原因: 无法与服务器协商加密。

解决方法: 通过使用 toggle encdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。

failed to obtain credentials cache

原因: kadmin 初始化期间,kadmin 尝试获取 admin 主体的凭证时失败。

解决方法: 确保在执行 kadmin 时使用正确的主体和口令。

Field is too long for this implementation

原因: 基于 Kerberos 的应用程序所发送的消息太长。如果传输协议是 UDP,则可能会生成此错误。UDP 的缺省最大消息长度是 65535 字节。此外,对通过 Kerberos 服务发送的协议消息中的单个字段也有限制。

解决方法: 确认您没有在 KDC 服务器的 /etc/krb5/kdc.conf 文件中将传输协议限制为 UDP。

GSS-API (or Kerberos) error

原因: 此消息是通用的 GSS-API 或 Kerberos 错误消息,可能由几种不同的问题所导致。

解决方法: 检查 /var/krb5/kdc.log 文件,找出发生此错误时记录的更具体的错误消息。

Hostname cannot be canonicalized

原因: Kerberos 客户机找不到服务器的全限定主机名。

解决方法: 确保在 DNS 中定义了服务器主机名,且主机名至地址的映射和地址至主机名的映射保持一致。

Illegal cross-realm ticket

原因: 发送的票证所跨的领域不正确。领域可能未设置正确的信任关系。

解决方法: 确保使用的领域具有正确的信任关系。

Improper format of Kerberos configuration file

原因: Kerberos 配置文件包含无效项。

解决方法: 确保 krb5.conf 文件中的所有关系后面都跟有 "=" 符号和值。另外,请确认每个子段中的括号都是成对出现的。

Inappropriate type of checksum in message

原因: 消息中包含无效的校验和类型。

解决方法: 检查在 krb5.confkdc.conf 文件中指定的有效校验和类型。

Incorrect net address

原因: 网络地址不匹配。正在转发的票证中的网络地址与处理该票证的网络地址不同。转发票证时可能会出现此消息。

解决方法: 确保网络地址正确。使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

Invalid credential was supplied

Service key not available

原因: 凭证高速缓存中的服务票证可能不正确。

解决方法: 尝试使用该服务之前,请销毁当前凭证高速缓存并重新运行 kinit

Invalid flag for file lock mode

原因: 出现 Kerberos 内部错误。

解决方法: 请报告错误。

Invalid message type specified for encoding

原因: Kerberos 无法识别基于 Kerberos 的应用程序发送的消息类型。

解决方法: 如果使用的基于 Kerberos 的应用程序是由您的站点或供应商开发的,请确保此应用程序正确使用 Kerberos。

Invalid number of character classes

原因: 为主体指定的口令包含的口令类数目不足,达不到主体策略强制要求的数量。

解决方法: 确保指定的口令包含策略要求的最少口令类数。

KADM err: Memory allocation failure

原因: 用于运行 kadmin 的内存不足。

解决方法: 释放内存并再次尝试运行 kadmin

kadmin: Bad encryption type while changing host/<FQDN>'s key

原因: Solaris 10 8/07 发行版的基本版本中包括更多的缺省加密类型。客户机请求的加密类型可能不受运行该软件旧版本的 KDC 支持。

解决方法: 有几种解决方案可以解决这一问题。最简单的一种首先列出:

  1. 向 KDC 服务器添加 SUNWcry 和 SUNWcryr 软件包。这可以增加 KDC支持的加密类型数量。

  2. 在客户机上的 krb5.conf 中设置 permitted_enctypes,使其不包括 aes256 加密类型。将需要对每台新的客户机执行此步骤。

KDC can't fulfill requested option

原因: KDC 不允许请求的选项。一种可能是正在请求以后生效或可转发的选项,而 KDC 不允许这些选项。另一种可能是请求了 TGT 更新,但没有可更新的 TGT。

解决方法: 确定是请求了 KDC 不允许的选项,还是票证类型不可用。

KDC policy rejects request

原因: KDC 策略不允许该请求。例如,对 KDC 的请求中不含 IP 地址。或者,请求了转发,KDC 却不允许。

解决方法: 确保使用的 kinit 具有正确的选项。如有必要,请修改与主体关联的策略或更改主体的属性以允许该请求。可以使用 kadmin 修改策略或主体。

KDC reply did not match expectation

原因: KDC 回复中未包含所需的主体名称,或者响应中的其他值不正确。

解决方法: 确保您与之通信的 KDC 符合 RFC4120,或发送的请求是 Kerberos V5 请求,或该 KDC 可用。

kdestroy: Could not obtain principal name from cache

原因: 凭证高速缓存缺失或已损坏。

解决方法: 检查提供的高速缓存位置是否正确。如有必要,使用 kinit 删除 TGT 并获取新的 TGT。

kdestroy: No credentials cache file found while destroying cache

原因: 凭证高速缓存 (/tmp/krb5c_ uid) 缺失或已损坏。

解决方法: 检查提供的高速缓存位置是否正确。如有必要,使用 kinit 删除 TGT 并获取新的 TGT。

kdestroy: TGT expire warning NOT deleted

原因: 凭证高速缓存缺失或已损坏。

解决方法: 检查提供的高速缓存位置是否正确。如有必要,使用 kinit 删除 TGT 并获取新的 TGT。

Kerberos authentication failed

原因: Kerberos 口令错误,或该口令可能与 UNIX 口令不同步。

解决方法: 如果口令不同步,则必须指定其他口令才能完成 Kerberos 验证。用户可能会忘记其原始口令。

Kerberos V5 refuses authentication

原因: 无法与服务器协商验证。

解决方法: 通过使用 toggle authdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。另外,确保具有有效凭证。

Key table entry not found

原因: 网络应用服务器的密钥表文件中不存在服务主体的对应项。

解决方法: 将相应的服务主体添加到服务器的密钥表文件中,以便该文件可提供基于 Kerberos 的服务。

Key version number for principal in key table is incorrect

原因: 密钥表文件中主体的密钥版本与 Kerberos 数据库中的版本不同。可能已更改了服务密钥,也可能正在使用旧服务票证。

解决方法: 如果更改了服务密钥(例如,通过使用 kadmin),则需要提取新密钥,并将其存储在正在运行该服务的主机的密钥表文件中。

或者,您也可能正在使用具有较旧密钥的旧服务票证。在这种情况下,可能需要运行 kdestroy 命令,然后再次运行 kinit 命令。

kinit: gethostname failed

原因: 本地网络配置中的错误导致 kinit 失败。

解决方法: 确保主机配置正确。

login: load_modules: can not open module /usr/lib/security/pam_krb5.so.1

原因: Kerberos PAM 模块缺失,或不是有效的可执行二进制文件。

解决方法: 确保 Kerberos PAM 模块在 /usr/lib/security 目录下,并且是有效的可执行二进制文件。另外,请确保 /etc/pam.conf 文件包含指向 pam_krb5.so.1 的正确路径。

Looping detected inside krb5_get_in_tkt

原因: Kerberos 多次尝试获取初始票证,但均失败。

解决方法: 确保至少有一个 KDC 正在响应验证请求。

Master key does not match database

原因: 装入的数据库转储不是基于包含主密钥的数据库创建的。主密钥位于 /var/krb5/.k5.REALM 中。

解决方法: 确保装入的数据库转储中的主密钥与 /var/krb5/.k5.REALM 中的主密钥匹配。

Matching credential not found

原因: 未找到与请求匹配的凭证。凭证高速缓存中没有您的请求需要的凭证。

解决方法: 使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

Message out of order

原因: 使用顺序保密机制发送的消息到达时发生顺序混乱。某些消息可能已在传输过程中丢失。

解决方法: 应该重新初始化 Kerberos 会话。

Message stream modified

原因: 计算出的校验和与消息校验和不匹配。消息在传输过程中可能已被修改,这表明存在安全泄露。

解决方法: 确保消息在网络中正确发送。由于此消息还可能表明消息在发送过程中被篡改,因此请使用 kdestroy 销毁票证,然后重新初始化所使用的 Kerberos 服务。

常见的 Kerberos 错误消息 (N-Z)

本节按字母顺序 (N-Z) 列出了 Kerberos 命令、Kerberos 守护进程、PAM 框架、GSS 接口、NFS 服务和 Kerberos 库的常见错误消息。

No credentials cache file found

原因: Kerberos 找不到凭证高速缓存 (/tmp/krb5cc_uid)。

解决方法: 确保凭证文件存在且可读。否则,请再次尝试执行 kinit

No credentials were supplied, or the credentials were unavailable or inaccessible

No credential cache found

原因: 用户的凭证高速缓存不正确或不存在。

解决方法: 用户应在尝试启动服务之前运行 kinit

No credentials were supplied, or the credentials were unavailable or inaccessible

No principal in keytab matches desired name

原因: 尝试验证服务器时出现错误。

解决方法: 确保主机主体或服务主体位于服务器的密钥表文件中。

Operation requires "privilege" privilege

原因: 所使用的 admin 主体未在 kadm5.acl 文件中配置相应的特权。

解决方法: 使用具有相应特权的主体。或者,通过修改 kadm5.acl 文件来配置所使用的主体,使其具有相应特权。通常,名称中包含 /admin 的主体都具有相应的特权。

PAM-KRB5 (auth): krb5_verify_init_creds failed: Key table entry not found

原因: 远程应用程序尝试在本地 /etc/krb5/krb5.keytab 文件中读取主机的服务主体,但不存在任何主体。

解决方法: 将主机的服务主体添加到主机的密钥表文件中。

Password is in the password dictionary

原因: 指定的口令位于正在使用的口令字典中。您选择的口令不适合用作口令。

解决方法: 请选用包含混合口令类的口令。

Permission denied in replay cache code

原因: 无法打开系统的重放高速缓存。首次运行服务器时所使用的用户 ID 可能与当前的用户 ID 不同。

解决方法: 确保重放高速缓存具有相应的权限。重放高速缓存存储在运行基于 Kerberos 的服务器应用程序的主机上。对于非 root 用户,重放高速缓存文件名为 /var/krb5/rcache/rc_service_name_uid。对于 root 用户,重放高速缓存文件名为 /var/krb5/rcache/root/rc_service_name

Protocol version mismatch

原因: 很可能向 KDC 发送了 Kerberos V4 请求。Kerberos 服务仅支持 Kerberos V5 协议。

解决方法: 确保应用程序使用的是 Kerberos V5 协议。

Request is a replay

原因: 请求已经发送到该服务器,并进行了处理。票证可能已被盗用,其他用户正在尝试重用这些票证。

解决方法: 等待几分钟,然后重新发送请求。

Requested principal and ticket don't match

原因: 您正连接的服务主体和您拥有的服务票证不匹配。

解决方法: 确保 DNS 正常运行。如果使用的是其他供应商的软件,请确保该软件使用的主体名称正确。

Requested protocol version not supported

原因: 很可能向 KDC 发送了 Kerberos V4 请求。Kerberos 服务仅支持 Kerberos V5 协议。

解决方法: 确保应用程序使用的是 Kerberos V5 协议。

Server refused to negotiate authentication, which is required for encryption. Good bye.

原因: 远程应用程序无法接受或已配置为不接受来自客户机的 Kerberos 验证。

解决方法: 提供可以协商验证的远程应用程序,或配置该应用程序以使用相应标志来启用验证。

Server refused to negotiate encryption. Good bye.

原因: 无法与服务器协商加密。

解决方法: 通过使用 toggle encdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。

Server rejected authentication (during sendauth exchange)

原因: 您正在尝试与其通信的服务器拒绝了验证。此错误通常出现在 Kerberos 数据库传播过程中。一些常见的原因可能是 kpropd.acl 文件、DNS 或密钥表文件存在问题。

解决方法: 如果在运行 kprop 以外的应用程序时收到此错误,请检查服务器的密钥表文件是否正确。

The ticket isn't for us

Ticket/authenticator don't match

原因: 票证与验证者不匹配。请求中的主体名称可能与服务主体的名称不匹配。原因可能是所发送票证使用的是主体的 FQDN 名称,而服务需要非 FQDN 名称,或者所发送票证使用的是主体的非 FQDN 名称,而服务需要 FQDN 名称。

解决方法: 如果在运行 kprop 以外的应用程序时收到此错误,请检查服务器的密钥表文件是否正确。

Ticket expired

原因: 您的票证已到期。

解决方法: 使用 kdestroy 销毁票证,然后使用 kinit 创建新票证。

Ticket is ineligible for postdating

原因: 主体不允许其票证在以后生效。

解决方法: 使用 kadmin 修改主体,以允许以后生效。

Ticket not yet valid

原因: 以后生效的票证仍然无效。

解决方法: 请使用正确的日期创建新票证,或等待当前票证生效。

Truncated input file detected

原因: 操作中使用的数据库转储文件不是完整的转储文件。

解决方法: 重新创建转储文件,或使用其他数据库转储文件。

Unable to securely authenticate user ... exit

原因: 无法与服务器协商验证。

解决方法: 通过使用 toggle authdebug 命令调用 telnet 命令启动验证调试,并查看调试消息以获取更多线索。另外,确保具有有效凭证。

Wrong principal in request

原因: 票证中包含无效的主体名称。此错误可能表明 DNS 或 FQDN 存在问题。

解决方法: 确保服务的主体与票证中的主体匹配。