我们刚刚有一个(相当重要的)WordPress的数据库莫名其妙地下降。 幸运的是,我们每晚进行备份,所以它不会成为世界末日,但是我希望在未来避免或者至less能够追踪这一点。
现在,我们还不知道数据库是否由于初级开发人员意外地将命令input错误的mysql命令行或phpymadmin窗口,或者这是否为恶意SQL注入攻击而被丢弃。
显然,我们需要对初级开发人员mysql用户帐户进行更严格的控制,但除此之外,我想知道通过服务器pipe理来检测/防止sql注入的最佳做法。
请注意, 我不想知道如何根据个人情况对input进行消毒处理 – 我每次都这样做,但是我们会写很多自定义脚本,而且我们总是会让那些可以忘记或得到这个错误的初级开发人员。 至less,我想知道最好的(最简单的)方法:
以标准访问日志logging格式logging所有包含查询string或发布数据的所有GET或POST请求(我想象使用像/(drop|delete|truncate|update|insert)/正则expression式对所有的单个文件虚拟主机,然后我可以grep
只logging以drop , delete , truncate为单个文件的mysql命令。 每个条目都需要包含在最less的时间和mysql用户,但是如果我能够通过命令行或者php来查看,那么也是很好的,如果php是脚本的话。
谢谢你的帮助! 显然,让我知道是否有任何使用我忽略的标准日志的基本解决scheme。
查看GreenSQL: http : //www.greensql.net/
干杯
WordPress的网站build议使用mod_security 。
只需添加GET和POST,您还应该loggingCOOKIE,FILE,REQUEST。
几点build议给你:
– 启用MySQL日志logging。 使用OSSEC来监视这些日志。 http://www.ossec.net/wiki/SQL_Logging#MySQL_Logging
– 启用Wordpress日志logging插件( http://www.ossec.net/main/wpsyslog2 )。 它会生成在Wordpress内发生的所有事件的日志(新post,新用户,login,注销等)。
– 分析你的Apache日志(我的build议是OSSEC)。
有了这三条审计线索,就可以轻松地监视和检测类似这样的问题或任何其他types的攻击。