我注意到我的一台服务器被黑客攻击并感染了一个已知的中国僵尸网络。
它是一个原型/测试虚拟机,拥有自己的静态 IP(美国地址),因此不会造成任何损害(只是花了我一段时间才弄清楚)。
现在我想知道入侵使用了什么IP/s,以了解攻击是否源自中国。
有没有办法查看服务器上 ssh 接收连接的历史记录?
编辑:系统是Linux Debian 7
答案1
查看命令的输出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
如果您将日志从服务器移至安全位置,则可以缓解这种情况。
例如,在我曾经工作过的一家商店,我们有一台“审计库”机器,该机器受到保护,以便仅从数据中心的各个服务器接收审计日志文件。我建议将来进行类似的设置(因为“我有一台测试机”听起来就像您在一家大型商店中操作)
答案2
有没有办法查看服务器上 ssh 接收连接的历史记录?
这应该给你一个列表:
$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort -u
然后您可以使用包geoiplookup
中的geoip-bin
内容从主机名或 IP 地址转到国家/地区。
答案3
仅查看成功的登录尝试:
zgrep sshd /var/log/auth.log* -h |grep -F 'Accepted'
答案4
从这回答,我看到下面的信息。
谈到 SSH 服务器,我将为您提供命令行解决方案。
跟踪用户登录和注销。这很简单,文件/var/log/auth.log
应该包含这些信息。
跟踪这些用户的活动.bash_history
:如果他们有点无辜,你可以检查他们的主目录中的文件。您将看到他们执行的命令的列表。问题当然是他们可以删除或编辑这个文件。
防止用户删除日志:用户不应触摸auth.log
。为了阻止他们玩耍,bash_history
你需要采取一些技巧。
如果用户设法获得 root 访问权限怎么办?: 你完蛋了。除非他犯了错误,否则他将能够隐藏自己所有的脚步。
另外,从这答案是,我们可以使用该变量查看客户端的 IP 地址SSH_CLIENT
。
也来自这回答,我看到 ssh 历史记录可以存储在这些文件中。
除了 之外,和/var/log/lastlog
中还有 3 个文件:、和,它们保存有关当前登录(和附加信息)、历史登录和失败登录的信息。看/var/run
/var/log
utmp
wtmp
btmp
维基百科详细说明。您无法使用普通编辑器编辑这些文件,但可以删除它们。