我试图找出为什么我的安全日志文件中有一些奇怪的连接。类似这样的事情:
Apr 23 11:35:43 li192-61 sshd[11651]: Did not receive identification string from 127.0.0.1
Apr 23 11:35:49 li192-61 sshd[11661]: Connection closed by UNKNOWN
我有许多这样的连接,每分钟都有。所以我使用命令netstat
来netstat -ta --numeric-ports --program | grep 22
获取更多信息。我得到了这个(我删除了我自己的 ssh 连接):
tcp 0 0 localhost:56145 localhost:22 TIME_WAIT -
接下来我尝试找出哪一个正在使用这个端口,因此我使用了它lsof -i :22
,但除了我自己的连接之外什么也没得到。
再次启动netstat
命令后,我得到了以下信息:
tcp 0 0 localhost:45979 localhost:22 TIME_WAIT -
一个新端口正通过端口 22 用作从本地主机的远程目的地。每分钟都是同样的事情。
我现在没有其他想法。所以我的问题是:
有没有办法获取所有使用 ssh 连接的进程或获取所有尝试连接到特定端口(例如:45979)的进程?
感谢您的时间 !
答案1
这里有一篇帖子这表明当有两个竞争的 sshd 进程尝试绑定到同一个端口时就会发生这种情况。
您可能需要获取本地控制台,然后运行service sshd stop
并检查ps -ef | grep sshd
是否存在任何不受服务包装器控制的恶意 sshd 服务器。
答案2
如果你看一下 netstat 标头:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
您将看到高“随机”端口是本地地址。建立传出连接的程序需要一个端口来接收来自远程服务器的响应。它为此接收一个高范围内的端口。
您看到的是从本地应用程序/脚本到本地主机的 SSH 连接。
但是由于某种原因,连接似乎无法建立。应用程序无法正确验证自身身份。
因此,您要找的不是连接到端口 45979 的应用程序,而是连接到本地主机上的端口 22 的应用程序。最有可能的只是ssh localhost
。
检查建立连接的时间,然后检查这些时间的 cron 计划和/或 cron 日志。
答案3
将所有这些虚假连接尝试的进程 ID 与您自己使用的进程 ID 关联起来;您自己的连接的进程 ID 不应改变。
如果确实如此,某些设置会导致你的连接一次又一次地重新连接(这在 SSH 中是可能的,而不会丢失连接)