ProxySQL 2.0.9 引入了防火墙功能。

在从早期版本版本中,可以通过设置查询规则来创建要阻止的黑名单,或者定义通用规则,实现白名单功能。

但是,如果面对的系统有非常多而且操作内容也不同,这时使用 mysqlqueryrules 就显得笨拙不灵活。比如,对每个用户或 schema,或者针对具体的客户端地址来进行限制,那么使用 mysqlqueryrules 就会很复杂。

现在,这些将在 ProxySQL 2.0.9 中得以解决,因为它引入了专门为白名单设计的新算法。

当然这些实现是受到 MySQL 企业防火墙的启发。

表 historymysqlquery_digest

statshistory 库中引入新表 historymysqlquerydigest

Admin> SHOW TABLES FROM stats_history;
+----------------------------+
| tables |
+----------------------------+
| history_mysql_query_digest |
... Admin> SHOW CREATE TABLE stats_history.history_mysql_query_digest\G
*************************** 1. row ***************************
table: history_mysql_query_digest
Create Table: CREATE TABLE history_mysql_query_digest (
dump_time INT,
hostgroup INT,
schemaname VARCHAR NOT NULL,
username VARCHAR NOT NULL,
client_address VARCHAR NOT NULL,
digest VARCHAR NOT NULL,
digest_text VARCHAR NOT NULL,
count_star INTEGER NOT NULL,
first_seen INTEGER NOT NULL,
last_seen INTEGER NOT NULL,
sum_time INTEGER NOT NULL,
min_time INTEGER NOT NULL,
max_time INTEGER NOT NULL,
sum_rows_affected INTEGER NOT NULL,
sum_rows_sent INTEGER NOT NULL) 数据表 historymysqlquerydigest 是对表 stats.statsmysqlquerydigest(内存中)的拓展,并拓展了一个列 dump_time。 该表可用于持久化保存 statsmysqlquerydigest 表的数据。尽管使用简单的 INSERT ... SELECT ...很容易就可以将数据保存到 historymysqlquerydigest,但是,ProxySQL 还提供了另外两种不同的方法: 使用命令 SAVE MYSQL DIGEST TO DISK。它能自动的将 statsmysqlquerydigest 的所有数据复制到 historymysqlquerydigest,并重置 statsmysqlquery_digest 的内容
设置变量 admin-statsmysqlquerydigesttodisk 。ProxySQL 将会自动将 statsmysqlquerydigest 的数据 dump 到 historymysqlquery_digest 以上是将数据持久的保存的首选方式,这样也是更有效,更快速的复制数据。 防火墙白名单表 ProxySQL 2.0.9 引入两个防火墙白名单算法表 Admin> SELECT name AS tables FROM main.sqlite_master WHERE type='table' AND
name IN ('mysql_firewall_whitelist_rules','mysql_firewall_whitelist_users')
ORDER BY name;
+--------------------------------+
| tables |
+--------------------------------+
| mysql_firewall_whitelist_rules |
| mysql_firewall_whitelist_users |
+--------------------------------+
2 rows in set (0.00 sec) 防火墙白名单全局变量 引入了两个新的全局变量来配置防火墙白名单算法: Admin> SHOW VARIABLES LIKE '%whitelist%';
+-----------------------------------+-----------------------------+
| Variable_name | Value |
+-----------------------------------+-----------------------------+
| mysql-firewall_whitelist_enabled | 0 |
| mysql-firewall_whitelist_errormsg | Firewall blocked this query |
+-----------------------------------+-----------------------------+
2 rows in set (0.00 sec) mysql-firewallwhitelistenabled :全局打开或关闭防火墙白名单算法
mysql-firewallwhitelisterrormsg:除非 mysqlqueryrules.error_msg 已设置,否则将返回给客户端的错误消息。 防火墙白名单命令 ProxySQL 2.0.9 中引入了新命令来管理防火墙白名单: LOAD MYSQL FIREWALL TO RUNTIME(或 LOAD MYSQL FIREWALL FROM MEMORY) SAVE MYSQL FIREWALL TO DISK(或 SAVE MYSQL FIREWALL FROM MEMORY LOAD MYSQL FIREWALL TO MEMORY(或 LOAD MYSQL FIREWALL FROM DISK) SAVE MYSQL FIREWALL TO MEMORY(或 SAVE MYSQL FIREWALL FROM RUNTIME) 请注意,这些命令也适用于 SQL 注入引擎 配置防火墙白名单 尽可能多的收集流量,以便识别正常的流量。运行时的数据也会被保存在 statsmysqlquerydigest 中,也会长久的保存到 statshistory.historymysqlquerydigest,(比如:启用了 admin-statsmysqlquerydigesttodisk)
启用白名单,并配置白名单用户表 mysqlfirewallwhitelist_users,例如:配置所有用户是 DETECTING 模式,执行下面语句: INSERT INTO mysql_firewall_whitelist_users
(active, username, client_address, mode)
SELECT DISTINCT 1, username, '', 'DETECTING', '' FROM mysql_users; 使用表 mysqlfirewallwhitelist_rules 配置所有需要白名单的用户和摘要。例如:将所有 ProxySQL 已知的查询列入白名单,使用下面语句: INSERT INTO mysql_firewall_whitelist_rules
(active, username, client_address, schemaname, flagIN, digest, comment)
SELECT DISTINCT 1, username, client_address, schemaname, 0, digest, ''
FROM stats_history.history_mysql_query_digest; 使用命令将配置加载生效 LOAD MYSQL FIREWALL TO RUNTIME
使用命令将配置保存到磁盘 SAVE MYSQL FIREWALL TO DISK
全局启用防火墙白名单,将变量设置 mysql-firewallwhitelistenabled 为 1

ProxySQL 防火墙白名单的更多相关文章

  1. Linux服务器防火墙白名单设置

    公司最近对网络安全抓的比较严,要求防火墙必须开启,但是项目的服务器有五六台,三台用于负载均衡,服务器之间必须要进行各种连接,那就只能通过添加白名单的方式. 登上服务器,编辑防火墙配置文件 vi /et ...

  2. Linux防火墙白名单设置

    在linux系统中安装yum install iptables-services 然后 vi /etc/sysconfig/iptables # Generated by iptables-save ...

  3. linux ip白名单、防火墙白名单 设置

    http://blog.csdn.net/catoop/article/details/50476099 登录信息在 /var/log/secure linux ip白名单 配置文件:/etc/hos ...

  4. Linux将端口设置进防火墙的白名单

    1.先检查linux服务器的端口是否被防火墙拦住 `telnet 172.168.1.101 8080后面跟端口号,如果连接上证明是防火墙白名单.如果没有配置 vi /etc/sysconfig/ip ...

  5. 【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果

    当使用Azure Redis高级版时候,为了能更好的保护Redis的安全,启用了虚拟网路,把Redis集成在Azure中的虚拟网络,只能通过虚拟网络VENT中的资源进行访问,而公网是不可以访问的.但是 ...

  6. 利用CentOS系统IPtables防火墙添加网站IP白名单

    参考博文: 利用CentOS系统IPtables防火墙添加360网站卫士节点IP白名单 centos6.5添加白名单如下: 在防火墙 配置文件中加入白名单  ip -A INPUT -s 183.13 ...

  7. Centos防火墙添加IP白名单

    Centos iptables防火墙添加IP白名单,指定IP可访问端口 vi /etc/sysconfig/iptables 以下为我虚拟机的防火墙为例(Centos 7) # sample conf ...

  8. linux配置防火墙 Centos7下 添加 端口白名单

    最近在阿里云服务器centos7上部署项目 要开启8484端口 , CentOS 7默认使用的是firewall作为防火墙 在firewall下开启端口白名单 1.查看下防火墙的状态:systemct ...

  9. 嵌入式Linux可用的防火墙——iptables:实现ip白名单、mac地址白名单

    iptables是linux系统下的一个功能强大的模块,不仅可以用作防火墙,还可以实现NAT等众多路由功能.iptables的容器有很清晰的层次关系: 1. iptables是表的容器,iptable ...

随机推荐

  1. TypeScript 接口继承

    1.TypeScript 接口继承 和类一样,接口也可以通过关键字 extents 相互继承.接口继承,分为:单继承和多继承,即继承多个接口.另外,接口也可以继承类,它会继承类的成员,但不包括具体的实 ...

  2. Graph Neural Networks:谱域图卷积

    以下学习内容参考了:1,2, 0.首先回忆CNN,卷积神经网络的结构和特点 处理的数据特征:具有规则的空间结构(Euclidean domains),都可以采用一维或者二维的矩阵描述.(Convolu ...

  3. while循环--和do-while循环

    对于循环语句来说他会有一个回上去的箭头,这个回上去的箭头就形成了一个重复做的事情,那种重复做的事情我们就叫做循环 while循环 ~如果我们把while翻译作"当",那么一个whi ...

  4. Ros的通信第一课

    //////////////////////////Ros创建发布者talker//////////////////////////////////////////////////////////// ...

  5. Java编程作业

    1.编程题 设计一个用户类User,类中的变量有用户名.密码和记录用户数量的变量,定义3个构造方法:无参的.为用户名赋值的.为用户名和密码赋值的,还有获取和设置密码的方法和返回类信息的方法. pack ...

  6. DNS 系列(三):如何免受 DNS 欺骗的侵害

    互联网上每一台设备都会有一个 IP 地址,我们在访问网站或发送信息时,其实都是通过 IP 地址达成准确请求的.但是这个 IP 地址由很长一串数字组成,记忆起来相当困难,所以我们创造了更实用的域名来代替 ...

  7. Josephus问题(Ⅰ)

    题目描述 n个人排成一圈,按顺时针方向依次编号1,2,3-n.从编号为1的人开始顺时针"一二"报数,报到2的人退出圈子.这样不断循环下去,圈子里的人将不断减少.最终一定会剩下一个人 ...

  8. 【CSP-J 2021】总结

    前言:程不在长,能过则行.码不在多,无虫则灵.斯是信竞,惟吾爆零.线段维护快,树状跳的勤.数论剩余系,图论前向星.无数竞之推理,无物竞之劳形.大佬楼教主,超奆姚期智,神犇云:您太强了. 早上5:00就 ...

  9. ooday06 内部类

    笔记: 成员内部类:应用率低,了解 类中套类,外面的称为外部类,里面的称为内部类 内部类通常只服务于外部类,对外不具备可见性 内部类对象只能在外部类中创建 内部类中可以直接访问外部类的成员(包括私有的 ...

  10. 一面数据: Hadoop 迁移云上架构设计与实践

    背景 一面数据创立于 2014 年,是一家领先的数据智能解决方案提供商,通过解读来自电商平台和社交媒体渠道的海量数据,提供实时.全面的数据洞察.长期服务全球快消巨头(宝洁.联合利华.玛氏等),获得行业 ...