[HCS]管控面EICommon-region-master管理节点root账号频繁被锁
涉及版本:HCS850
1、问题描述:登录管控面管理节点EICommon-region-master,切换root账号发现频繁被锁,需要等锁定时间结束才可以输入密码
2、两个排查方向:远程客户端定时重连时密码错误;节点本地有定时任务无正确密码导致
使用lastb命令查看近期的客户端登录时间和ip,都是用户自己操作,无任何异常
然后怀疑是本地服务导致,OS同事给了sudo脚本导致账号被锁的排查指导进行排查
3、首先确认root用户被锁是否因为sudo调用导致
观察/var/log/secure日志,搜索"conversation failed",确认开头是sudo调用,同时也可以看出调用时间
4、创建定位工具:创建/usr/bin/sudo.a,内容如下
#!/bin/sh
TRACE=""
PID=$$
LOGFILE="/testout.log"
while true
do
CMDLINE=$(cat /proc/$PID/cmdline | tr '\000' ' ')
PP=$(grep PPid /proc/$PID/status | awk '{ print $2; }')
TRACE="${TRACE}${INDENT}($PID) ${CMDLINE}\n"
if [ "$PID" == "1" ]; then
break
fi
PID=$PP
INDENT=" ${INDENT}"
done
echo "-- $(date +%T.%N) ----------------------------" >> "$LOGFILE"
echo -en "$TRACE" >> "$LOGFILE"
/usr/bin/sudo.b "$@"
5、使sudo自动调用走入上一步的自定义脚本,同时记录日志默认在/testout.log
touch /testout.log;
chmod a+rw /testout.log; # 给所有用户赋w权限确保日志正常记录
chmod 777 /usr/bin/sudo.a;
mv /usr/bin/sudo /usr/bin/sudo.b; mv /usr/bin/sudo.a /usr/bin/sudo;
# 2次mv后sudo实际会调用以下脚本,先记录调用关系,随即在脚本末尾调用sudo.b二进制执行原有命令
6、检查sudo功能是否正常,/testout.log是否能正常记录日志
7、等待下一次的sudo失败,在secure日志中确认调用失败的时间点(sudo.b开头表示从脚本调用过来,可以在日志中查到)
8、在/testout.log中用对应时间点寻找到被调用的sudo命令。
以上图的第一次失败时间19:35:39为例,可见该时间点共有4个不同的sudo调用,仅有1次失败,说明4个调用中有一个存在问题
9、在配置文件/etc/sudoers、/etc/sudoers.d/*下面确认对应执行的命令是否正确配置
如上例,需要依次确认 chage XX / curl XXX / df XX / write_pid.sh四个命令
常见的2种问题,以curl调用举例:
①未正确配置,sudoers配置文件中未配置curl命令
②文件不存在,正确配置了NOPASSWD调用,但是curl文件(/bin/curl)不存在(多见于产品自研脚本)
cat /etc/sudoers.d/* 下面配置,发现只有第三个脚本pod_health_check.sh没有配置NOPASSWD
定位脚本到找到华为研发工程师确认丢失配置修复即可
10、打开/testout.log日志,即可查询到从1号进程到sudo的完整的调用关系,确认是哪个进程调用的对应sudo命令
11、环境恢复
cd /usr/bin;
rm sudo;
mv sudo.b sudo;
rm /testout.log; # 删除日志
- 点赞
- 收藏
- 关注作者
评论(0)