有一台我经常pipe理的服务器(每分钟几次)尝试连接到TCP端口22上的另一台机器。(ssh)
我的问题:我怎么能find产生这种连接的过程?
我已经检查了什么:
tcpdump捕获在以太网接口+饲料wireshark =>结果是没有那么有趣,除了它似乎是一个标准的encryptionSSH连接,stream的重组并没有给我有用的信息,因为它是(当然)encryption。
lsof脚本:在每次运行之间,我将lsof已知的所有文件访问转储到文件大约60次,每次1秒。 我可以看到日志文件中的连接设置,但在其周围,我没有认识到有用的信息:
... ssh 8478 root 3u IPv4 945966 TCP servername:randomport->destinationserver:ssh (ESTABLISHED) ...
它看起来像是由root用户拥有的。 重复这个过程几次,但没有什么有趣的认识。
netstat显示了这个:(netstat -ntap)
tcp 0 0 servername:randomport destinationserver:22 TIME_WAIT - tcp 0 0 servername:randomport destinationserver:22 TIME_WAIT -
当我logging足够多的迭代时,我看到它每分钟下降到一个time_wait cnx并且回到2几次。
没有crontabs被发现的任何用户启动一些ssh cnx在/ etc / cron *文件和目录中的ssh
添加了这个规则:
auditctl -a exit,always -F arch=b64 -S connect -k MYCONNECT
除了它看起来确实像一个ssh连接具有相同的源和目标ip等
我不知道这个来自哪里。
如果我找不到这种无用的连接的来源,我至less可以使用iptables来阻止它们,但那不是那么好。
感谢任何提示。
我会试图使用auditd来(简要地)收集关于任务创build的信息,看看我能否从中恢复
auditctl -D auditctl -a task,always
然后拖网通过结果
ausearch -i -sc execve
另外lsof提供了一个PID,所以你可以尝试
ps -p <PID> -o ppid=
有一件事要尝试的是围绕标准的ssh二进制文件包装脚本,并具有包装脚本日志ID和时间。 这只是我的头顶,所以它可能需要一些工作。
mv /usr/bin/ssh /usr/bin/ssh.real
更换
在/ usr / bin中/ SSH
用这个脚本:
#!/usr/bin/perl use Sys::Syslog; # all except setlogsock() use Sys::Syslog qw(:standard :macros); # standard functions & macros openlog('ssh', "ndelay,pid", "auth"); # or whatever is appropriate other than auth syslog('info',"started by $ENV{'USER'}"); exec '/usr/bin/ssh.real', @ARGV;