前言
服务器的sshd服务在经过多次连接后出现自动关闭的情况,遂进行排查,记录过程。
1. 排查sshd日志
/var/log/secure
— 包含验证和授权方面信息,sshd会将所有信息记录(其中包括失败登录)在这里。
1 | Jun 29 09:25:55 centos polkitd[672]: Registered Authentication Agent for unix-process:13867:17282775 (system bus name :1.29528 |
可以看到有一个sudo命令被执行,通过/sbin/service sshd stop
来停止sshd服务。日志显示命令是由root用户执行的,并且sudo会话在执行命令后立即关闭。可能有其他的进程或脚本在后台运行,调用了该sudo命令来停止sshd服务。
2. 排查系统日志
为了搞清楚是什么命令停止了sshd服务,排查/var/log/messages
,一般包括整体系统信息,以及cron、daemon等等。
1 | Jun 29 09:25:55 centos systemd: Starting OpenSSH server daemon... |
日志表明sshd.service
服务的主进程被终止,最终导致了OpenSSH守护进程的停止。但看不出具体是什么脚本。
3. 排查journalctl
journalctl 是 systemd-journald 服务的一部分,用于管理和检索系统日志。它使用二进制日志格式(Binary Log Format),可以包含比传统日志文件更详细的信息
查看指定时间区间的日志:journalctl --since "2023-06-29 09:25:55" --until "2023-06-29 09:30:28"
1 | Jun 29 09:30:01 centos systemd[1]: Started Session 14475 of user root. |
看起来唯一像问题的就是:sshd[14512]: pam_lastlog(sshd:session): corruption detected in /var/log/btmp
4. 问题查找
依据发现问题的日志,找到问题原因可能是“用户的默认 Shell 被修改”。
通过cat /etc/passwd | grep usr
查看,例如查看root
输出:root:x:0:0:root:/root:/bin/bash
则表示:
1 | root:登录名,即用户名。 |
但我排查过后,也不是这个问题。下一步应该继续排查/var/log/btmp
,先搁置了。
参考
[1] 腾讯云手册
[2] https://www.cnblogs.com/sunsky303/p/8862040.html
后记
首发于 silencezheng.top,转载请注明出处。