几天前,一位朋友的服务器遭到入侵。攻击者安装了一个新的 SSH 守护程序,允许任何有效帐户进入,而无需提供有效密码。登录后,每个帐户都会自动获得 root 权限,服务器会显示以下内容:
此次攻击还删除了显示入侵的系统日志条目(我们通过系统日志的日志弄清楚了这一点)并更改了 Debian 软件包位置路径/etc/apt/sources.list
。
服务器运行在 Debian Etch 下,在攻击期间未更新:Apache/PHP 没有安装所有安全更新。我们认为入侵可能是由于缺少这些更新而发生的,但我们实际上并不确定。在攻击前一天,我们安装了 Wordpress 3.0.1;但我们不知道安装 Wordpress 是否是打开大门的钥匙。
有什么方法可以找出服务器上的哪个安全漏洞导致了入侵?
答案1
一旦攻击者获得 root 权限,通常很难判断他们是如何进入的,因为他们可以修改系统,包括日志。除非您的日志通过网络发送到另一个系统,否则您可能运气不佳 —— 特别是当您提到日志被修改时。
显然,我们学到的教训是,你需要及时更新补丁。我们通常在补丁通过 yum/apt-get 发布后一天内应用补丁。
请注意,针对 PHP、Apache 或 Wordpress 的攻击可能只会赋予攻击者 Web 服务器权限。但从您的描述来看,他们肯定获得了 root 权限。因此,如果他们确实通过 Web 应用程序进入,则还有另一种折衷方法允许他们从 Apache 获得 root 权限。但我还想知道他们是否通过 SSH 上的弱 root 密码进入,等等...
但是,知道攻击方法可能并不会让您彻底清除。根据您的描述,此时机器已严重受损,最好的办法是从头开始安装新操作系统并重新设置系统。审核您从旧机器中带来的所有数据和软件。修复受损的机器非常困难。
无论如何,为了回答你的问题,是否有任何方法可以找出答案,这里有一些常见的地方可以查找发生了什么:
- /var/log/syslog 或 /var/log/messages——查找攻击可能发生的时间,可能是通过日志中的间隙或您无法解释的活动。
- 其他日志可能没有被清除,例如 /var/log/security
- .bash_history 包括 root 和 web 服务器在内的各种帐户。这可能提供他们运行的命令或有关所做操作的信息。
- 查找正在运行的您不认识的进程,或者您认识的可能从不寻常的目录或名称运行的进程。查看您看到正在运行的进程的各种进程 ID ($PID) 的 /proc/$PID 和 /proc/$PID/fd。
- 也许“最后”会告诉你一些事情,但他们可能已经把它抹去了。
- rkhunter 可以帮助您了解系统中哪些部分受到了损害,并帮助您找到可以查找更多信息的地方。
- Apache 日志可能会显示一些异常活动的迹象,但通常很难从真正破坏系统的攻击中筛选出您一直受到的攻击。
这项工作的大部分是不同日志文件之间的严格互相关,以找出哪些是有趣的,哪些只是噪音。
做这种调查不是件容易的事。它可能需要 4 个小时甚至更长时间,尤其是如果你是第一次做这种调查的话。
答案2
除非您有某种远程日志记录,否则您可能运气不佳。
我认为最好将其归结为“吸取的教训”,从头开始重新安装系统(认真的说,不要跳过这个步骤!),然后不断修补新系统。
根据我的经验,使用自动更新并冒着在自动补丁出现问题后进行清理的风险要比手动更新并冒着落后的风险要好得多。在第一种情况下,如果供应商/发行版补丁出现问题(这种情况非常罕见),您通常最多只需几分钟就可以解决问题。如果系统出现问题,则需要重建整个系统并浪费大量时间。