我的 Linux 服务器是否已被入侵?我该如何分辨?

我的 Linux 服务器是否已被入侵?我该如何分辨?

在路由器后运行 (X)Ubuntu 10.04.2 LTS。

我刚刚收到一封来自该机器上的根帐户的电子邮件,主题如下:

*** SECURITY information for <hostname>

邮件正文包含以下警告:

<hostname> : jun 1 22:15:17 : <username> : 3 incorrect password attempts ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/sh /tmp/tmpPHBmTO

我看不到任何/tmp/tmpPHBmTO文件,但有一个文件的名称/tmp/tmpwoSrWW为 2011-06-01 22:14,即在上述日期/时间之前。这是一个二进制文件,其内容对我来说并不熟悉。此外,该文件仅具有-rw-------权限。

/tmp在我看来,这意味着某人(或某物)已经访问了我的计算机。显然还不是 root 访问权限(目前),但至少足以将文件写入我的目录。

有人可以告诉我在哪里可以找到更多信息:谁可以做到这一点,以及他们如何做到这一点?

我的路由器配置为允许访问 SSH、HTTP(nginx 充当其他几种服务之一的反向代理)、SMTP、POP(postfix)和 IMAP(dovecot)以及端口 51413(传输)的转发流量。

答案1

我知道这个问题问了两年了,但万一有人像我一样通过 Google 来到这里:我看到这种行为是由 Dropbox 守护进程在一台没有运行任何 X 服务器的服务器上以非 root 帐户运行而引起的。我设法在文件被删除之前复制了它们。出于某种原因,守护进程想要重置其数据目录的权限(别介意它甚至不需要 root 来执行此操作)并终止某个进程。我只能猜测原因,也许它进行了某种自动更新并尝试重新加载自身或类似的事情。

文件 /tmp/tmpe1AGcd 包含:

#!/bin/bash
sudo -K
zenity --entry --title="Dropbox" --text="Dropbox needs your permission to save settings to your computer.

Type your Linux password to allow Dropbox to make changes." --entry-text "" --hide-text | sudo -S /bin/sh /tmp/tmpAH5mxL
if [ "$?" != 0 ]; then
zenity --error --text="Sorry, wrong password"
exit 1
fi

由于机器在无头运行,甚至没有安装二进制文件“zenity”,因此 sudo 会收到空密码尝试,并在尝试执行 /tmp/tmpAH5mxL 时失败,其中包含:

#!/bin/bash
chown -R 1000 "/home/<username>/.dropbox"
chmod -R u+rwX "/home/<username>/.dropbox"
kill -s USR2 5364

我收到的结果消息与您收到的相同:

<hostname> : Jul  4 16:32:24 : <username>: 3 incorrect password attempts ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/sh /tmp/tmpAH5mxL

答案2

如果您打开了 SSH 以访问互联网,那么您将会看到黑客攻击行为,其中脚本会尝试破解该密码。

可能的缓解步骤:

  • 不允许 root 通过 SSH 登录(如果需要,登录后请执行 su)
  • 设置一个非常强的密码(密码短语 - 10 个或更多字符)
  • 使用密钥验证 SSH 并关闭密码验证
  • 安装 fail2ban 以在 n 次登录尝试后阻止登录尝试
  • 将 ssh 从默认端口移出(@voithos 建议)

注意:如果您的机器已经受到攻击,以上任何方法都无济于事。

答案3

该答案也参考了@uSlakr 的帖子上的评论。

您的计算机至少部分受到威胁。能够使用您的用户名写入 /tmp 表明能够以您的用户名工作。能够以您的用户名写入 = 能够执行您当前正在执行的操作。

如果您有以您的用户名运行的服务,则很可能该特定服务已被入侵。 (1) 如果您没有以您的用户名运行的服务,则您的帐户已完全被入侵(即具有交互式 shell 访问)。但这种情况不太可能发生,请参阅 (1)。

最好的办法是(1)将当前系统备份到虚拟机进行检查+从旧备份中恢复(检查类似的文件)+停止网络访问(2)更改所有帐户的密码(3)禁用所有服务(4)将所有服务更新到最新版本(5)安装入侵检测程序。

(1):如您所见,入侵者正在尝试运行某个程序以获取 root 访问权限。这听起来不像是他们拥有交互式 shell 访问权限——如果他们拥有交互式 shell,他们应该会获取您的密码哈希值并以某种方式破解它 // 在交互式 shell 中安装某种程序来获取您的 root 密码 // 使用 sudo(这些通常比输错 3 次密码要好,好吧,如果他们那么愚蠢……没关系)

相关内容