我在网络服务器上遇到问题。 有人用泄露的wordpress感染了它。 问题是如下,文件中某处有一些恶意的phpscript。 恶意脚本将iframe放在Web服务器(/ home)上的每个文件中 但问题是我不知道脚本在哪里,我在/ home中有成千上万的web文件,它可能在任何地方。 我知道如何擦除所有iframe,但想法是删除触发器。 所以我在徘徊如何解决它,我可能有一个解决方案,但我需要你的建议
我注意到脚本不时被执行但完全随机(大概每周一次) 现在让我们假设我使用以下shell命令擦除了所有恶意iframe(我目前每30分钟运行一次)
find /home -type f | xargs sed -i 's$<iframe src="[^"]*" width="2" height="2" frameborder="0"></iframe>$ $g'
既然我的所有php文件都没有iframe,那么想法是在iframe再次出现时提醒我。 像这样,如果我有iframe出现的近似时间,那么我可以查看apache日志以查看调用哪个webscript。
所以我创建了另一个bash shell,我想让你的建议知道它是否合适。 我会在服务器上每30分钟运行一次,直到收到邮件为止。
然后我会在apache日志中查看最近30分钟的日志。
所以这是我正在考虑的bash:
#!/bin/bash
find /home -type f | xargs grep -q '<iframe src="[^"]*" width="2" height="2" frameborder="0"></iframe>' #Find the string in all file on my all directory
if [ $? -eq 0 ] #if the result is not equal to zero
then
echo "At the following time : " $(date +%H-%M-%S) | mail -s "[Serveur Leaked] Bad iframe has been found " me@mymail #we send a mail with the date
find /home -type f | xargs sed -i 's$<iframe src="[^"]*" width="2" height="2" frameborder="0"></iframe>$ $g' #we replace the iframe with a whitespace
else
exit 1
fi
exit 0
我真的需要找到一个解决方案,因为正确的知道我说我每30分钟运行一次find和replace命令并且需要花费大量的时间。
但是我无法让我的服务器上的iframe太长,以至于我的网站会被谷歌列入黑名单而且我买不起。
非常感谢您未来的建议。
安塞尔姆
答案 0 :(得分:3)
您可以使用inotify
在更改html文件时获取通知,并在这种情况下仅运行您的脚本。
当您知道文件被修改时(例如通过上面的inotify),您可以使用进程的proc系统(或类似lsof
)来找出哪个进程已打开修改后的文件。
答案 1 :(得分:3)
找到想要监控的iframe文件之后,也许shell脚本化的inotify版本inotifywait将是最简单的解决方案。在你的脚本中使用它:
#!/bin/sh
while inotifywait -e modify /var/log/messages; do
if tail -n1 /var/log/messages | grep httpd; then
kdialog --msgbox "Apache needs love!"
fi
done
通常,有更好的文件监控工具,例如auditd,其中包含预构建的实用程序,专门用于安全性和审计。
此外,还有fanotify提供用户信息,可以有效监控整个卷。查看优秀的示例工具:fatrace。
inotify存在几个重大问题:它无法可靠地监视新创建的文件夹,并且无法识别文件更改的源(PID)。这些都不在这里,但直接使用inotify需要一些编码。
答案 2 :(得分:3)
它可能不是导致这种情况的PHP脚本,黑客可能已经获得了您服务器的密码。该网站提供了一些资源,可指导您查看内容
http://wordpress.org/support/topic/new-malware-code-injection-attack
这是关于如何强化安装的Wordpress文档
http://codex.wordpress.org/Hardening_WordPress
更改系统的root密码是一个很好的起点。
并让您了解您可能遇到的恶意复杂程度
我的同情。