![每分钟都有奇怪的 sshd 日志消息](https://linux22.com/image/485358/%E6%AF%8F%E5%88%86%E9%92%9F%E9%83%BD%E6%9C%89%E5%A5%87%E6%80%AA%E7%9A%84%20sshd%20%E6%97%A5%E5%BF%97%E6%B6%88%E6%81%AF.png)
我的 Linux 机器每隔几分钟就会在 /var/log/secure 中收到此错误消息
Jun 14 04:24:28 mybox sshd[19741]: Connection closed by 127.0.0.1
Jun 14 04:25:28 mybox sshd[19764]: Connection closed by 127.0.0.1
Jun 14 04:26:28 mybox sshd[19770]: Connection closed by 127.0.0.1
Jun 14 04:27:28 mybox sshd[19776]: Connection closed by 127.0.0.1
Jun 14 04:28:28 mybox sshd[19782]: Connection closed by 127.0.0.1
Jun 14 04:29:28 mybox sshd[19789]: Connection closed by 127.0.0.1
它是带有 OpenSSH_4.3p2 的 centos 5.2 x86_64,sshd 端口未设置为默认端口,我使用了不同的端口,我认为是一些恶意程序从内部进行了一些暴力 ssh 攻击 (lo)。我曾尝试将 sshd:127.0.0.1 放入 /etc/hosts.deny,然后消息现在发生了变化,
Jun 14 12:45:54 mybox sshd[25736]: refused connect from ::ffff:127.0.0.1 (::ffff:127.0.0.1)
Jun 14 12:45:59 mybox sshd[25701]: Received signal 15; terminating.
Jun 14 12:46:00 mybox sshd[25761]: Server listening on :: port 5522.
Jun 14 12:46:00 mybox sshd[25761]: error: Bind to port 5522 on 0.0.0.0 failed: Address already in use.
Jun 14 12:47:01 mybox sshd[25767]: refused connect from ::ffff:127.0.0.1 (::ffff:127.0.0.1)
Jun 14 12:47:06 mybox sshd[25761]: Received signal 15; terminating.
Jun 14 12:47:07 mybox sshd[25792]: Server listening on :: port 5522.
Jun 14 12:47:07 mybox sshd[25792]: error: Bind to port 5522 on 0.0.0.0 failed: Address already in use.
Jun 14 12:54:19 mybox sshd[25881]: error: Bind to port 5522 on 0.0.0.0 failed: Address already in use.
Jun 14 12:54:19 mybox sshd[25881]: fatal: Cannot bind any address.
有人遇到过这个问题吗?我该如何分析这个问题?
答案1
这里的关键是“地址已在使用中”。另一个进程已绑定到该端口。您是否尝试运行该服务的两个实例?有时,控制脚本会失去理智(实际上并非如此,实际发生的是删除了 pid 文件,但没有删除进程),并且它们会尝试在服务已运行时启动该服务。首先,停止服务一次,看看是否出现该消息。
service sshd stop
然后检查是否已经有一个 sshd......
ps ax | grep "ssh" | grep -v "grep"
如果在服务停止后看到一个,则这就是问题的原因。将其终止,然后重新启动服务
service sshd start
PS:是的,我知道我的 shell 脚本很糟糕,但有时清晰比简洁更重要。
答案2
您是否有某种系统监控工具(monit/collectd)可以检查您的 ssh 服务器是否处于活动状态并接受连接?
答案3
Jun 14 12:46:00 mybox sshd[25761]: Server listening on :: port 5522.
Jun 14 12:46:00 mybox sshd[25761]: error: Bind to port 5522 on 0.0.0.0 failed: Address already in use.
我认为无论启动什么脚本sshd
都无法检测到它正在运行的进程并反复重新启动它。
答案4
这些连接显然来自本地机器(127.0.0.1)——因此您不必看得很远。
并且日志消息是由 sshd 生成的(因此 sshd 正在检测尝试的连接) - 所以您知道无论是哪个进程导致了这些事件,要么它知道非标准端口,要么您有在标准端口上运行的第二个 sshd 实例(使用 netstat 进行检查)。
您能否暂时删除 hosts.deny 条目,然后使用 lsof 确定哪个进程正在尝试访问您的非标准 sshd 端口(lsof -i:港口)?
如果没有任何结果,我会使用 chkrootkit 或 rkhunter 来确保您的系统没有受到损害。