我们的一个(相当重要的)WordPress 数据库刚刚莫名其妙地丢失了。幸运的是,我们保留了每晚的备份,所以这不会是世界末日,但我希望避免或至少能够在将来追踪这种情况。
现在,我们仍然不知道数据库是否因为初级开发人员意外地在错误的 mysql 命令行或 phpymadmin 窗口中输入命令而被删除,或者这是否是恶意的 SQL 注入攻击。
显然,我们需要对初级开发人员的 mysql 用户帐户进行更严格的控制,但除此之外,我想知道通过服务器管理检测/防止 sql 注入的最佳实践是什么。
笔记我不想知道如何逐一净化输入-- 我每次都会这样做,但我们编写了大量自定义脚本,而且我们总是会有初级开发人员,他们可能会忘记或出错。至少,我想知道最好的(最简单)方法:
以标准访问日志格式记录所有
GET
或POST
包含查询字符串或发布数据(其中包含任何 SQL)的请求(我想象使用正则表达式,例如/(drop|delete|truncate|update|insert)/
针对所有虚拟主机的单个文件,然后我可以用 grepdrop
仅将以、delete
、开头的 mysql 命令记录truncate
到单个文件中。每个条目至少需要包含时间和 mysql 用户,但如果我可以看到它是通过命令行还是 php 执行的,以及如果是 php,脚本是什么,那就太好了。
谢谢你的帮助!当然,如果有任何使用我忽略的标准日志的基本解决方案,请告诉我。
答案1
查看GreenSQL:http://www.greensql.net/
干杯
答案2
WordPress 网站建议使用mod_security为了这。
答案3
除了 GET 和 POST 之外,您还应该记录 COOKIE、FILE、REQUEST。
答案4
给你几点建议:
-启用 MySQL 日志记录。使用 OSSEC 监控这些日志。 http://www.ossec.net/wiki/SQL_Logging#MySQL_Logging
-启用 Wordpress 日志插件(http://www.ossec.net/main/wpsyslog2)。它将为 Wordpress 内部发生的所有事情生成日志(新帖子、新用户、登录、注销等)。
-分析您的 Apache 日志(我再次推荐 OSSEC)。
通过这 3 条审计跟踪,可以轻松监控和检测此类问题或任何其他类型的攻击。