开放源码数据库防火墙GreenSQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

介绍一款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,如需转载请自行联系原作者


相关文章
|
15天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
49 3
|
14天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
18天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
60 2
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
222 2
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
58 3
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
43 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
3月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js技术栈的高校选课管理系统的设计与实现。该系统采用前后端分离架构,旨在提高选课效率、优化资源分配及提升用户体验。技术栈包括:后端Spring Boot 2.0、前端Vue 2.0、数据库MySQL 8.0、开发环境JDK 1.8和Maven 3.6等。系统功能覆盖登录、学生信息管理、选课管理、成绩查询等多个方面,并针对学生、教师和管理员提供了不同的操作界面。系统采用了响应式设计,支持多设备访问,并通过Element UI增强了界面的友好性和交互性。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
|
3月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。