本文对BCLinux8U6系统进行基线加固致无法su的问题分析。
一、问题现象
对BCLinux8U6系统进行基线加固,su切换用户失败,报错信息如下:
[ABCD@localhost ~]$ su -
密码:
su: 模块未知
二、问题分析
1、错误排查
出错前,按照系统安全加固基线要求,对/etc/pam.d/system-auth进行了修改,修改添加了以下内容:
cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authselect is run.
auth required pam_env.so
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900 even_deny_root
auth required pam_tally2.so onerr=fail deny=5 unlock_time=900 even_deny_root
从控制台登录,对添加内容进行注释测试,发现是“auth required pam_tally2.so onerr=fail deny=5 unlock_time=900 even_deny_root”这一行有问题。注释后问题即解决。
2、问题定位
经深度摸排,BCLinux8U6系统已经不再支持pam_tally2模块,用pam_faillock模块这个模块进行了替代,用于记录并限制用户尝试登录的失败次数。而安全基线无法准确识别到BCLinux8U6系统的版本信息,它会尝试检查pam_tally2.so 这一行的配置,而未检查pam_faillock.so配置。
三、问题解决
知道问题原因了,要解决基线扫描问题,又不影响系统运行,可以采用以下两种办法:
1、方法一:
文件替换法,实测pam_faillock.so模块替代pam_tally2.so且完全支持pam_tally2.so相关配置,因此可以复制一份pam_faillock.so模块文件命名为pam_tally2.so:
cp /usr/lib64/security/pam_faillock.so /usr/lib64/security/pam_tally2.so
保留/etc/pam.d/system-auth文件中“auth required pam_tally2.so onerr=fail deny=5 unlock_time=900 even_deny_root”配置。实测运行正常。
2、方法二:
引导基线检查程序正常运行,经排查,基线检查程序是用的redhat系统脚本来运行,当检查到系统版本大于6小于8.2时,就转为检查pam_faillock.so模块了,因此可经设置相应版本文件来诱导基线检查程序正常运行:
echo "bclinux8.0" >/etc/redhat-release
基线检查脚本提取到8.0的版本信息后,自动转为检查pam_faillock.so模块,无需配置pam_tally2.so模块行,基线即已合规。
最后采用方法二进行解决,毕竟BCLinux8U6系统已经淘汰pam_tally2.so模块,这样子操作对系统实际上没有任何影响。