我不在的时候,服务器冻结了,大约一天没有响应。重新启动后问题解决了。
Apache 错误日志什么都没显示,但是在我重新启动之前,Apache 访问日志中出现的最后内容是一堆乱码,以大约一百个重复的 ^@ 字符开头,然后是几 KB 的(我猜)二进制有效负载 - 诸如“<80>è<86>då^S^H·F^M2^B®<8c>ØiGÌ.àV¨<90>”之类的东西。
这是什么意思?我该怎么办?
答案1
^0 只是 ASCII 0 的表示 - 如果您执行此操作,man ascii
您会看到右列与左列值对齐,这是一种轻松回忆控制字符的方法。不幸的是,0 通常用于空填充攻击有效载荷(假设您已经排除了文件系统问题)。
最重要的是,这些垃圾信息前面加的是什么 - 是脚本 URL、静态资源、模块等?有人要么试图利用您的系统,要么在对随机系统进行模糊测试以寻找漏洞。
崩溃意味着某件事成功了 - 至少导致了崩溃。这至少是一种 DoS,而且崩溃(尤其是当他们试图超限缓冲区时)通常会导致堆栈崩溃并运行漏洞代码。这很糟糕,但不能确定您是否被利用了(就像其他人说的,检查 rootkit)。如果它是某种重复模式,您可以使用 iptables 字符串匹配来阻止它进入 Apache,但如果您的 apache 是最新的,那么您也应该向 Apache 安全部门报告该漏洞。
答案2
它确实看起来像某种漏洞。我会立即运行 rkhunter 和 chkrootkit 扫描。一旦你相对确定你没有受到攻击,更新也是有帮助的。你可以查看 tripwire 或 OSSEC 以进一步监控当前情况。
根据您的发行版,rkhunter 和 chkrootkit 应该位于您的存储库中。
尽管我不知道 ^@ 翻译成什么,但如果你看到那么多,它闻起来有点像 nop 雪橇。