介绍一款MySQL和PostgreSQL的数据库防火墙--GreenSQL
GreenSQL是一个开放源码数据库防火墙,用于保护数据库阻止SQL注入攻击。 GreenSQL项目作为代理的SQL命令,并为MySQL和PostgreSQL的中内置支持。这种逻辑是基于使用的SQL命令的风险评价得分矩阵以及阻止已知数据库(删除,创建等)的管理命令。 GreenSQL是在GPL许可协议下发布的。
GreenSQL结构
GreenSQL项目作为MySQL连接的反向代理。这就是说,不是直接连接到MySQL服务器,应用程序将连接到GreenSQL服务器。 GreenSQL会分析客户端的SQL查询,然后,如果他们是安全的,再将它们转发到后端的MySQL服务器中。
下图描述了整个过程。
正如你所看到的,GreenSQL调用真正的数据库服务器来执行SQL命令和Web应用程序连接到GreenSQL服务器,就好像它是一个真正的数据库服务器。对应用透明
GreenSQL可以与数据库一起安装在同一台计算机服务器,也可以使用不同的服务器。默认情况下GreenSQL监听127.0.0.1:3306端口(默认的MySQL设置)本地端口127.0.0.1:3305重定向SQL请求。这些设置可以使用GreenSQL控制台改变
该GreenSQL数据库防火墙可以用在许多方面:
*模拟模式(数据库ID)
*阻止可疑的命令(数据库的IPS)
*学习模式
*主动防护(数据库防火墙)未知查询
在模拟模式基本上没有被*。在这种情况下,GreenSQL(IDS的入侵检测系统的缩写)作为数据库入侵检测系统。在这种模式下,我们的风险识别可疑的打分矩阵引擎的查询和使用GreenSQL管理控制台通知数据库管理员。
当系统被配置为阻止可疑的命令,GreenSQL使用其启发式引擎来查找“非法的”自动查询和阻止他们。在这种模式下,GreenSQL基本上是一个数据库IPS系统(IPS是入侵防御系统)。如果查询被认为是非法的,如果发现它在白名单中,它会被重定向到真正的MySQL服务器。如果它被发现是“非法”,GreenSQL将返回一个空结果集的应用程序。在这种模式下,有时会产生GreenSQL假阳性和假阴性的错误。因此,一些法律问题可能会被*或GreenSQL系统可以通过一个“非法的”查询未被发现。这些都是IPS系统的优点和缺点。 GreenSQL不断提高其启发式引擎,但它仍然是不完美的。
为了解决我们建议启用的学习模式,然后在学习期间,上述方法的缺点是结束了,切换到查询不明的主动保护。在学习模式下,所有的查询会自动添加到白名单中。当学习模式结束后,GreenSQL自动启用积极的保护。当Active从保护模式启用未知的查询,所有未知的命令被*。这是数据库防火墙模式。当检测到未知的SQL命令,它会自动阻止。此外,计算其风险GreenSQL使用它的启发式方法和结果显示使用GreenSQL管理控制台。这是最快的模式,因为GreenSQL只计算为新的查询不经常发生的风险。
GreenSQL如何找到“非法的”查询?
GreenSQL发现使用可疑的一些方法查询:
*通过确定敏感的SQL命令
*通过计算查询的风险
确定敏感的SQL命令
GreenSQL使用模式匹配引擎,搜寻被认为是“非法”的命令。从本质上讲,这是一个基于签名的子系统。例如,下面的命令被视为“非法”:数据库管理命令;命令,试图改变一个DB结构和命令,用来访问系统文件。管理员可以批准加入到白名单或改变配有“非法”模式的列表配置文件是“非法”查询。
计算查询的风险
GreenSQL计算每个查询的风险。从本质上讲,这是一个异常检测子系统。经过计算的风险,GreenSQL可以阻止查询或只是制造了一个警告消息(这在应用模式而定)。有许多启发数GreenSQL计算风险时使用。例如,查询的风险增加了:
*访问敏感表(用户,帐户,信用卡信息)
在SQL *评论命令
*一个空密码字符串
*一个'或'查询标记内
* SQL表达式,它总是返回true(同义反复的SQL)
为了找到异常,GreenSQL使用自己的SQL语言词法分析器找到SQL令牌。
如何命令*?
当GreenSQL确定某个查询应该被阻止,就会产生一个空结果集并将其发送回应用程序,因此它可以继续正常。
白名单是如何工作的?
每次GreenSQL认为一个SQL查询是一个安全风险,它被*。您可以通过改变明确将它添加到白名单这个特定的查询行为。
新:在所有新的学习模式查询会自动添加到白名单。
原文地址:http://www.greensql.net/about
本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/456635,如需转载请自行联系原作者