第 6 章 显著的程序漏洞修复
本章论述了在 Red Hat Enterprise Linux 7.7 中修复的、对用户有严重影响的错误。
6.1. 认证和互操作性
目录服务器在后端事务插件失败后清除条目缓存
在以前的版本中,如果后端事务插件失败,Directory 服务器会回滚该操作,但不会恢复条目缓存中的更改。因此,条目缓存包含不正确的条目。在这个版本中,Directory 服务器会在后端事务插件失败后清空条目缓存。因此,客户端在查询上述情形中的数据库时会检索正确的数据。
ds-replcheck
工具不再错误地报告副本上的不匹配 tombstone 条目
在以前的版本中,如果管理员在存在 tombstones 的不同目录服务器副本上运行 ds-replcheck
工具,ds-replcheck
会报告其中一个副本缺少 tombstone 条目。预期每个副本上的 tombstone 条目都不匹配。在这个版本中,ds-replcheck
不再搜索 tombstone 条目。因此,实用程序不会报告作为问题丢失的 tombstone 条目。
在 干净AllRUV
任务运行时关闭服务时目录服务器不再崩溃
在以前的版本中,在 cleanAllRUV
任务时停止 Directory Server 服务在运行任务正在使用的释放资源。因此,服务意外终止。在这个版本中,Directory 服务器会递增参考计数器,使任务在服务关闭过程开始前完成。因此,服务器不再会在上述场景中崩溃。
现在,如果 passwordInHistory
设置为 0,
目录服务器可以正确地拒绝当前密码
在以前的版本中,管理员无法将目录服务器中的 passwordInHistory
属性设置为 0。因此,用户可以将其密码重置为与当前使用的相同密码。在这个版本中,用户可以将
passwordInHistory
设置为 0,
并因此检查当前的密码。
目录服务器不再截断大于 1023 个字符的 nsSSL3Ciphers
值
在以前的版本中,Directory 服务器使用固定缓冲区大小来存储 cn=encryption,cn=config
条目的 nsSSL3Ciphers
参数中设置的首选 TLS 密码。因此,如果值超过 1024 个字符,服务器会截断该值,仅使用前 1023 字符中指定的密码。在这个版本中,Directory 服务器不再使用固定缓冲区大小来存储值。因此,设置可以正常工作。
(BZ#1716267)
目录服务器不再使用优先级高于 real 属性的 CoS 属性
在以前的版本中,Directory 服务器使用优先级高于 real 属性 的操作默认
服务(CoS)属性。因此,服务器会利用子树中定义的 CoS 策略覆盖本地密码中设置的属性。在这个版本中解决了这个问题。因此,CoS 定义的密码策略可以正常工作。
目录服务器现在在更改密码时更新用户的 pwdLastSet
字段
在以前的版本中,如果启用了密码同步,且用户在 Directory 服务器中更改了密码,服务器不会设置 pwdLastSet
属性。因此,Active Directory (AD) 仍强制用户更新密码。目录服务器现在在上述场景中更新 pwdLastSet
。因此,AD 不强制用户再次更改密码。
(BZ#1597202)
带有 范围的
搜索不再返回目录服务器中不完整的结果
在以前的版本中,当用户执行设置为 一个
范围的搜索时,搜索操作不会返回所有预期条目。在这个版本中,Directory 服务器可以为一个级别搜索正确创建条目候选者列表。因此,服务器会返回预期条目。
如果同时使用了 IPv6 和 IPv4 地址,目录服务器不再忽略 ACI 中的 IPv6 地址
管理员可以在访问控制指令(ACI)中指定 IPv4 和 IPv6 地址,以允许或拒绝访问。在以前的版本中,如果 ACI 同时包含 IPv4 和 IPv6 地址,目录服务器会忽略 IPv6 地址。因此,ACI 无法按预期工作。在这个版本中解决了在 ACI 中解析 ip
关键字的问题。因此,在上述场景中,基于 IP 的 ACI 可以正常工作。
将 modrdn
操作复制到只读目录服务器现在可以成功
目录服务器中的冲突条目管理需要为 modrdn
操作添加跟踪条目。在以前的版本中,在只读消费者中添加这些条目会失败,因此 modrdn
操作无法复制到这样的实例。在这个版本中解决了这个问题。因此,将 modrdn
操作复制到只读消费者会成功。
Directory 服务器删除任务的时间已更改
在以前的版本中,Directory Server 在任务完成后 2 分钟删除任务条目。因此,监控任务的应用程序可能会丢失任务结果。此更新将更改服务器删除任务的时间。默认情况下,除导入和导出任务外,所有完成的任务现在都会在 1 小时后删除,这些任务在完成后 24 小时删除。
如果 passwordWarning
设置为小于 86400
,则目录服务器不会返回 shadowWarning
属性
在以前的版本中,如果 cn=config
条目中的 passwordWarning
属性被设置为小于 86400
秒(1 天)的值,目录服务器不会在搜索中返回 shadowWarning
属性。在这个版本中解决了这个问题。因此,服务器会在上述场景中返回 shadowWarning
属性的值。
krb5
内存缓存现在是 thread-safe
在以前的版本中,Kerberos V5 登录程序(krb5)
的内存缓存没有完全线程安全。因此,在某些情况下,多线程访问被意外终止。在这个版本中,内存缓存会被清理为更多线程安全。因此,不会再发生崩溃。
FIPS 140-2 禁止的 krb5
配置现在可以再次正常工作
在以前的版本中,Red Hat Enterprise Linux 7.6 的 Kerberos V5 (krb5
)系统的构建会增加 FIPS 140-2 的合规性。因此,FIPS 140-2 禁止的一些之前允许的配置停止工作。在这个版本中,更改已被恢复,因为 krb5
只需要在 FIPS 模式下工作,所以与 FIPS 不兼容。因此,FIPS 140-2 禁止的配置现在可以再次正常工作。
请注意,Red Hat Enterprise Linux 8 目前不支持这些配置。
即使 numSubordinates
属性中的值超过配置集条目的数量,证书系统也会启动
LDAP numSubordinates
操作属性定义预期的配置集条目数量。在以前的版本中,在载入所有配置集和轻量级证书颁发机构(CA)前,证书系统才会启动。因此,如果属性中的值超过配置集条目的数量,则启动进程无法没有。在这个版本中,watchdog 定时器会在上述场景中短暂延迟后强制启动过程进行,并且证书系统会记录意外状况。因此,即使配置集或轻量级 CA 子树中的 numSubordinates
超过搜索结果中的条目数,证书系统也会启动。
TLS_RSA_* 密码现在在证书系统中被默认禁用
在以前的版本中,在证书系统中默认启用了 TLS_RSA_* 密码。但是,在联邦信息处理标准(FIPS)模式下具有特定硬件安全模块(HSM)的环境中,不支持这些密码。因此,SSL 握手失败且连接没有建立。默认情况下,这个版本禁用 TLS_RSA_* 密码。因此,连接可以在 FIPS 模式中使用这些 HSM。
证书系统 REST API 不再将明文密码存储在日志文件中
在以前的版本中,证书系统 REST API 不会过滤掉纯密码值。因此,日志文件中的密码会在明文中可见。在这个版本中,服务器会将 password 属性值替换为 "(sensitive)"。因此,清除文本密码在日志中不再可见。
现在可以在证书系统中禁用客户端身份验证
以前版本的证书系统添加了一项功能,可在通过 CMCAuth 进行身份验证时强制进行 TLS 客户端身份验证。但是,某些较旧的应用程序不支持 TLS 客户端身份验证,也无法连接到证书系统。在这个版本中,将 bypassClientAuth
配置参数添加到 /var/lib/pki/pki-instance_name/ca/conf/CS.cfg
文件中。现在,如果某些应用程序不支持,管理员可以将此参数设置为 true
来禁用客户端身份验证。
使用 PKCS #12 文件时证书系统 CA 安装成功
在以前的版本中,pki_ca_signing_cert_path
参数的默认值被设置为预定义的路径。由于当管理员使用 PKCS Liberty 文件安装证书颁发机构(CA)时,pkispawn
工具验证参数的方式最近更改,并显示 Invalid certificate path: pki_ca_signing_cert_path=/etc/pki/pki-tomcat/external_ca.cert
错误。在这个版本中解决了这个问题,方法是删除 pki_ca_signing_cert_path
的默认值。因此,在上面提到的场景中 CA 安装会成功。
pki
工具正确要求输入密码
在以前的版本中,如果用户没有使用命令行选项提供密码,pki
工具不会提示输入密码。因此,pki
会错误地报告 Error: Missing 用户密码
,操作会失败。已修复 pki
工具,在上述情况下提示输入密码。
(BZ#1479559)
如果因为完整的文件系统而无法存储签名的审计日志,证书系统会自动关闭
在以前的版本中,如果启用了审计签名,并且证书系统存储了签名的审计日志的文件系统已满,则证书系统将继续运行,但不会记录进一步操作。为了防止缺少签名的审计日志,证书系统现在会在上述场景中自动关闭。
SSSD 使用 AD LDAP 服务器为 initgroup 查找检索 POSIX 属性
SSSD 服务使用 Active Directory (AD)全局目录(GC)进行 initgroup 查找,但 POSIX 属性(如用户主目录或 shell)默认不会复制到 GC 设置。因此,当 SSSD 在 SSSD 查找过程中请求 POSIX 属性时,SSSD 会错误地考虑从服务器中删除属性,因为它们不存在于 GC 中,并将它们也从 SSSD 缓存中删除。在这个版本中,initgroup 查找会根据情况切换 LDAP 和 GC 连接,因为 AD LDAP 服务器包含 POSIX 属性,即使没有架构修改也是如此。因此,POSIX 属性(如 shell 或主目录)不再被覆盖或缺失。
(BZ#1194345)
使用 ypchsh
更改 shell 不再会在 NIS 使用 passwd.adjunct
时产生覆盖的密码
在以前的版本中,当 NIS 服务器被设置为支持 passwd.adjunct
映射时,用户使用 ypchsh
命令更改 NIS 客户端上的 shell,yppasswdd
守护进程会覆盖 passwd.adjunct
中用户 的密码哈希
。因此,受影响的用户因为一个损坏的密码哈希而无法登录。这个程序错误已被解决,在更新用户的 shell 信息时 yppasswdd
不再覆盖用户的密码哈希。因此,用户可以在运行 ypchsh
后成功登录新的 shell。
(BZ#1624295)