Azure上CIS加固的RHEL 9.1虚拟机部署Solr 9.2时低熵问题求助
大家好!我最近在Azure上基于CIS官方镜像的RHEL 9.1虚拟机部署Solr 9.2,遇到了低熵的问题,折腾了好几种方法都没解决,来这儿求助各位大佬!
问题现象
启动Solr时,日志里一直弹出低熵警告,相关依赖随机数的功能(比如UUIDField、SSL)可能无法正常工作:
Started Apache Solr 9.
Java 17 detected. Enabled workaround for SOLR-16463
Warning: Available entropy is low. As a result, use of the UUIDField, SSL, or any other features that require
RNG might not work properly. To check for the amount of available entropy, use 'cat /proc/sys/kernel/random/entropy_avail'.
执行cat /proc/sys/kernel/random/entropy_avail查看,结果始终停留在256,完全没变化。
已尝试的操作
我已经安装了rng-tools和haveged这两个常用的熵补充工具,但问题依旧,两个服务的运行状态如下:
haveged服务状态
Started Entropy Daemon based on the HAVEGE algorithm.
haveged[14569]: haveged: command socket is listening at fd 3
haveged[14569]: haveged: fills: 1, generated: 512 K bytes, RNDADDENTROPY: 256
rngd服务状态
Started Hardware RNG Entropy Gatherer Daemon.
rngd[14506]: Disabling 7: PKCS11 Entropy generator (pkcs11)
rngd[14506]: Disabling 5: NIST Network Entropy Beacon (nist)
rngd[14506]: Disabling 9: Qrypt quantum entropy beacon (qrypt)
rngd[14506]: Initializing available sources
rngd[14506]: [hwrng ]: Initialization Failed
rngd[14506]: [rdrand]: Enabling RDSEED rng support
rngd[14506]: [rdrand]: Initialized
rngd[14506]: [jitter]: JITTER timeout set to 5 sec
rngd[14506]: [jitter]: Initializing AES buffer
我的疑问
有没有朋友遇到过类似的情况?我是不是漏掉了什么关键配置?目前自己梳理了几个可能的方向,也希望大家帮忙看看是否可行:
检查CIS加固的内核参数限制:因为是CIS镜像,可能内核里被强制设置了固定的熵池大小,比如
kernel.random.poolsize。可以用sysctl -a | grep random查看相关参数,如果这个值被设为256,试试调整到4096:sysctl -w kernel.random.poolsize=4096 echo "kernel.random.poolsize=4096" >> /etc/sysctl.d/99-random.conf然后重启相关服务,观察熵值是否提升。
调整haveged的配置参数:默认的haveged填充阈值可能太低,导致无法有效提升熵池。可以修改
/etc/sysconfig/haveged(或/etc/default/haveged)文件,调整DAEMON_ARGS:DAEMON_ARGS="-w 1024"设置更高的警告阈值后,重启haveged服务:
systemctl restart haveged,再查看熵值变化。让Solr直接使用urandom绕开低熵问题:其实Java应用可以指定使用
/dev/urandom获取随机数(现代系统中urandom的安全性已经足够满足Solr的需求),这个方法往往能直接解决警告。修改Solr的启动配置文件solr.in.sh,在Java参数部分添加:SOLR_OPTS="$SOLR_OPTS -Djava.security.egd=file:/dev/./urandom"然后重启Solr,应该就不会再出现低熵警告了。
排查rngd的有效源配置:从日志看rngd的硬件RNG初始化失败,仅启用了rdrand和jitter。可以尝试调整rngd的配置,强制它使用urandom作为输入源,修改
/etc/sysconfig/rngd:RNGDOPTIONS="-r /dev/urandom -o /dev/random -b"重启rngd服务后观察效果。
备注:内容来源于stack exchange,提问作者Obirieni Simeo

