第 6 章 显著的程序漏洞修复
本章论述了 Red Hat Enterprise Linux 7 中修复的、对用户有严重影响的错误。
6.1. 认证和互操作性
目录服务器 rebase 到版本 1.3.10
389-ds-base 软件包已升级到上游版本 1.3.10,它修复了几个程序错误。
现在,如果服务器拒绝搜索操作,目录服务器可以正确地记录搜索基础
在以前的版本中,当目录服务器因为协议错误而拒绝搜索操作时,服务器会记录 base=" (null) "
而不是实际的搜索基础。在这个版本中,Directory 服务器会将正确的内部变量传递给日志操作。因此,服务器会在上述场景中正确记录搜索基础。
目录服务器改进了 etime
值的日志记录
在以前的版本中,如果操作以秒的边顺序启动并完成,且操作需要小于一秒,Directory 服务器会记录错误计算的 etime
值。因此,日志记录的值太大。在这个版本中解决了这个问题。因此,计算的 etime
值现在接近启动和结束时间戳。
目录服务器现在在访问日志中记录正确的 etime
值
在以前的版本中,Directory 服务器错误地格式化 /var/log/dirsrv/slapd-<instance_name>/access 日志文件中的
etime
字段。因此,纳秒的时间值低于实际值。在这个版本中解决了这个问题。因此,Directory 服务器现在在 etime
字段中记录正确的纳秒值。
更改了 Directory Server 日志消息的严重性
在以前的版本中,Directory 服务器错误记录 Event <event_name> 不应处于状态 <state_name>; 将休眠
信息作为 错误
。在这个版本中,此消息的严重性更改为 警告
。
当搜索一个请求中的 1.1
和其他属性时,目录服务器与 RFC 4511- 兼容
若要仅检索匹配的可分辨名称(DN)的列表,LDAP 用户可以搜索 1.1
特殊属性。根据 RFC 4511,如果 LDAP 客户端与一个搜索请求中的其他属性相结合,则服务器必须忽略 1.1
特殊属性。
在以前的版本中,当目录服务器用户搜索同一搜索请求中的 1.1
特殊属性和其他属性时,服务器会返回任何属性。在这个版本中解决了这个问题。因此,在上述场景中 Directory Server 符合 RFC 4511。
目录服务器以正确顺序返回密码策略控制
在以前的版本中,如果用户的密码过期,Directory 服务器会根据宽限期是否已耗尽,以不同顺序返回密码策略控制。因此,这有时会在 LDAP 客户端中造成问题与 RFC 4511 标准兼容。在这个版本中解决了这个问题,Directory 服务器会以正确顺序返回密码策略控制。
(BZ#1724914)
目录服务器现在也适用于从扩展操作接收的最大并发 清理AllRUV
任务的限制
目录服务器最多支持 64 个并发 清理AllRUV
任务。在以前的版本中,Directory 服务器只会将这个限制应用到手动创建的任务,而不适用于从扩展操作接收的服务器。因此,超过 64 个并发 清理AllRUV
任务可以同时运行,并减慢服务器的速度。在这个版本中,添加了一个计数器来跟踪清理任务的数量并中止线程。因此,最多 64 个并发 清理AllRUV
任务可以同时运行。
将大型 LDIF 文件导入到带有许多嵌套子树的 Directory Server 数据库现在会快得多
在以前的版本中,如果 Directory 服务器数据库包含很多嵌套的子树,使用 ldif2db
和 ldif2db.pl
工具导入大型 LDIF 文件会很慢。在这个版本中,Directory 服务器在所有条目 后添加祖先
索引。因此,将 LDIF 文件导入到带有许多嵌套子树的数据库会非常快。
目录服务器现在在之前的 SASL 绑定完全初始化连接后处理新的操作
在使用简单身份验证和安全层(SASL)框架绑定过程中,目录服务器初始化一组回调功能。在以前的版本中,如果 Directory 服务器在 SASL 绑定过程中收到同一连接的额外操作,则此操作可以访问并使用回调功能,即使它们没有被完全初始化。因此,Directory 服务器实例会意外终止。在这个版本中,服务器会阻止操作访问和使用回调结构,直到之前的 SASL 绑定成功初始化为止。因此,Directory 服务器不再会在这种情况下崩溃。
cl-dump.pl
和 cl-dump
工具现在在导出更改日志后删除临时文件
在以前的版本中,Directory 服务器中的 cl-dump.pl
和 cl-dump
工具在 /var/lib/dirsrv/slapd-<instance_name>/changelogdb/
目录中创建临时 LDIF 文件。导出更改日志后,实用程序会将临时文件重命名为 thecrypt done
。因此,如果临时文件较大,则可能会导致可用磁盘空间较低。有了这个更新,默认情况下 cl-dump.pl
和 cl-dump
现在删除导出末尾的临时文件。另外,在两个工具中添加了 -l
选项来手动保留临时文件。因此,在导出更改日志或用户可以使用 -l
选项强制使用旧行为后,cl-dump.pl
和 cl-dump
会释放磁盘空间。
IdM 将 Apache NSS 模块配置为仅在安装或更新 IdM 服务器或副本时使用 TLS 1.2
在以前的版本中,当管理员安装身份管理(IdM)服务器或副本时,安装程序会在 Apache Web 服务器的网络安全服务(NSS)模块中启用 TLS 1.0、TLS 1.1 和 TLS 1.2 协议。这个版本提供以下更改:
- 当您设置新服务器或副本时,IdM 只启用强大的 TLS 1.2 协议。
- 在现有的 IdM 服务器和副本中,这个更新会禁用弱 TLS 1.0 和 TLS 1.1 协议。
因此,新的和更新的 IdM 服务器和副本仅在 Apache Web 服务器的 NSS 模块中使用强大的 TLS 1.2 协议。
IdM 现在可以正确地更新 cn=CAcert,cn=ipa,cn=etc,<base_DN&
gt; 条目中的证书记录
在以前的版本中,在续订身份管理(IdM)证书颁发机构(CA)证书或修改 CA 证书链后,IdM 不会更新存储在 cn=CAcert,cn=ipa,cn=etc,<base_DN>
; 条目中的证书记录。因此,在 RHEL 6 中安装 IdM 客户端会失败。在这个版本中,IdM 更新 cn=CAcert,cn=ipa,cn=etc,<base_DN&
gt; 中的证书记录。现在,管理员在更新 CA 证书或更新 IdM CA 中的证书链后,在 RHEL 6 上安装 IdM 6 会成功。
ipa-replica-install
工具现在验证 --server
中指定的服务器是否提供所有必需的角色
ipa-replica-install
工具提供了一个 --server
选项,用于指定安装程序用于注册的身份管理(IdM)服务器。在以前的版本中,ipa-replica-install
不会验证提供的服务器是否提供证书颁发机构(CA)和密钥恢复授权(KRA)角色。因此,安装程序从提供 CA 和 KRA 角色的不同服务器中复制来自指定服务器和 CA 数据的域数据。在这个版本中,ipa-replica-install
验证指定的服务器是否提供所有必需的角色。因此,如果管理员使用 --server
选项,ipa-replica-install
仅从指定的服务器复制数据。
当选项添加到现有 sudo 规则时,ipa sudorule-add-option
不再显示 false 错误
在以前的版本中,当 sudo 规则已包含主机、主机组、用户或 usergroups 时,ipa sudorule-add-option
命令会错误地处理 sudo 规则内容。因此,即使成功完成,与 sudooption
参数一起使用的 ipa sudorule-add-option
命令会返回错误。这个程序错误已被解决,ipa sudorule-add-option
现在会在上述场景中显示准确的输出。
(BZ#1691939)
当将帐户从 preserved 变为 stage 时,IdM 不再丢弃所有自定义属性
在以前的版本中,IdM 只处理保留帐户中定义的一些属性。因此,当将帐户从 preserved 变为 stage 时,所有自定义属性都会丢失。在这个版本中,IdM 处理保留帐户中定义的所有属性,上面描述的问题不再发生。
(BZ#1583950)
Sub-CA 密钥复制不再失败
在以前的版本中,Kerberos 库中的凭证缓存(ccache)的更改会导致轻量级证书颁发机构(CA)密钥复制失败。在这个版本中,IdM 轻量级 CA 密钥复制客户端代码适应更改的 ccache 的行为。因此,轻量级 CA 密钥复制现在可以正常工作。
现在,如果系统作为客户端对其他子系统或 LDAP 服务器使用,证书系统现在会记录审计事件
在以前的版本中,如果系统充当其他子系统或 LDAP 服务器的客户端,证书系统不包含审计事件。因此,服务器不会记录在这种情况下的任何事件。在这个版本中,CLIENT_ACCESS_SESSION_ESTABLISH_FAILURE
、CLIENT_ACCESS_SESSION_ESTABLISH_SUCCESS
,以及 CLIENT_ACCESS_SESSION_TERMINATED
事件添加到证书系统。因此,证书系统在作为客户端时会记录这些事件。
(BZ#1523330)
python-kdcproxy
库不再丢弃大型 Kerberos 回复
在以前的版本中,如果 Active Directory Kerberos 分发中心(KDC)将大型 Kerberos 回复分成多个 TCP 数据包,python-kdcproxy
库丢弃这些软件包。在这个版本中解决了这个问题。因此,python-kdcproxy
可以正确地处理大型 Kerberos 回复。