我的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,所以就在提到的date/时间之前。 这是一个二进制文件,内容对我来说看起来并不熟悉。 另外,该文件只有-rw-------权限。

在我阅读的时候,这意味着有人(或者某个人)已经(有)访问我的机器。 显然不是root访问(还),但仍然足以将文件写入我的/tmp目录。

是否有人指点我可以在哪里寻找更多的信息:谁可以做到这一点,以及他们如何做到这一点?

我的路由器被configuration为允许访问SSH,HTTP(nginx作为其他服务之一的反向代理),SMTP,POP(后缀)和IMAP(dovecot)以及端口51413(传输)的转发stream量。

我意识到问了原问题已经两年了,但是如果有人像我一样通过Google来到这里:我看到Dropbox守护进程在没有运行的服务器上运行非root帐户X服务器。 我设法在文件被删除之前复制这些文件。 由于某种原因,守护进程想要重置其数据目录的权限(不必介意它甚至不需要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 

如果你的SSH在互联网上开放,你将会看到脚本试图破解密码的黑客攻击。

可能的缓解步骤:

  • 不要允许通过SSH进行rootlogin(如果需要,请在login后login)
  • 有一个非常强大的密码(认为密码 – 10个或更多的字符)
  • 使用SSH密钥validation并closures密码validation
  • 安装fail2ban以在n次login尝试后阻止login尝试
  • 将ssh从默认端口移出(按照@voithos的build议)

注意:如果您的机器已经被盗用,以上都不会有帮助。

这个答案也指的是在@ uSlakr的post上发表的评论。

您的电脑至less部分受损。 能够用你的用户名写入你的/ tmp表明能够在你的用户名下工作。 能够写下您的用户名=能够做你正在做的事情。

如果您有使用您的用户名运行的服务,则大多数情况下该服务可能已被入侵。 (1)如果您没有使用您的用户名运行的服务,那么您的帐户已被完全泄露(即使用交互式shell访问)。 但是这是不太可能的,参见(1)。

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

(1):正如你所看到的,入侵者正试图运行一些程序来获取root权限。 这听起来不像他们有交互式shell访问 – 如果他们有交互式shell,他们应该抓住你的密码散列,并以某种方式破解它/ /安装某种程序到交互式shell来捕获你的root密码/ /使用sudo(这些通常比错误的密码3倍,好吧,如果他们是愚蠢的…不要害怕)