-密码复杂度和登录失败处理

1,背景
应等保三级安全要求,现需要对生产环境MySQL数据库进行插件安装,以满足密码复杂度和登录失败处理的安全要求

(1)设置口令位数至少为8位,至少一位大小写字母,一位数字,一位特殊字符

(2)设置当密码错误超过一定次数后(建议3次或5次),自动锁定账户(建议30分钟以上)

2,密码复杂度插件
(1)安装插件

mysql> install plugin validate_password soname 'validate_password.so';
Query OK, 0 rows affected (1.00 sec)

更改my.cnf文件

[mysqld]plugin-load-add=validate_password.so

#服务器在启动时加载插件,并防止在服务器运行时删除插件。
 
validate-password=FORCE_PLUS_PERMANENT
(2)卸载插件

mysql> uninstall  plugin validate_password;
Query OK, 0 rows affected (0.09 sec)

(3)查看插件安装状态

mysql> show  plugins;

(4)变量参数查看

mysql> show global  variables  like  '%validate_password%';

参数定义:

validate_password_check_user_name   :设置为ON的时候表示能将密码设置成当前用户名。

validate_password_dictionary_file         :validate_password用于检查密码的字典文件的路径名。

validate_password_length                    :validate_password所需密码的最小字符数。

validate_password_mixed_case_count  :如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。对于给定的这个值密码必须有那么多小写字符和那么多大写字符。

validate_password_number_count         :如果密码策略是中等或更强的,validate_password要求密码具有的数字(数字)字符的最小数量。

validate_password_policy                    : validate_password强制执行的密码策略,validate_password_policy影响validate_password如何使用它的其他策略设置系统变量,除了根据用户名检查密码之外,后者由validate_password_check_user_name独立控制。

validate_password_policy值可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。下表描述了为每个策略执行的测试。对于长度测试,所需的长度是validate_password_length系统变量的值。类似地,其他测试所需的值由其他validate_password_xxx变量提供。

(5)结果验证

mysql> create user cow identified by  '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user cow identified by  'A12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user cow identified by  'Aa1234567';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user cow identified by  'Aa#12345678';
Query OK, 0 rows affected (0.17 sec)

3,登录失败处理插件
(1)安装插件

mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
Query OK, 0 rows affected (0.09 sec)mysql> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
Query OK, 0 rows affected (0.01 sec)

配置文件my.cnf

[mysqld]
plugin-load-add=connection_control.so
connection-control=FORCE_PLUS_PERMANENT
connection-control-failed-login-attempts=FORCE_PLUS_PERMANENT
connection_control_failed_connections_threshold=5
connection_control_max_connection_delay=2147483647
connection_control_min_connection_delay=1500

(2)验证

mysql>  show plugins;

或者

select PLUGIN_NAME, PLUGIN_STATUS from INFORMATION_SCHEMA.PLUGINS where PLUGIN_NAME like 'connection%';

(3)变量参数查看

show variables like "connection_control%";

参数含义:

connection_control_failed_connections_threshold:单个用户登录失败(由于密码错误引起)次数上限,默认3次

connection_control_max_connection_delay:失败上限之后再次尝试登录前最小等待时间,单位ms

connection_control_min_connection_delay:失败上限之后再次尝试登录前最小等待时间,默认1秒(1000ms)

上述3个参数均可以利用 set global 的方式在线修改。

(4)结果验证

[root@localhost ~]# mysql -uroot -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)mysql> show global status like "%conn%control%";
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| Connection_control_delay_generated | 2     |
+------------------------------------+-------+
1 row in set (0.02 sec)

Connection_control_delay_generated :尝试3次错误输入密码后,在第4次登录时会delay 1秒(由connection_control_min_connection_delay指定),同时Connection_control_delay_generated计数+1(若登录密码继续输入错误,则delay秒数与计数器继续增加。直到成功登录为止之后,此时delay清零,但计数器不清零。需要注意的是,即使后续密码正确,依然要先延迟一定的秒数,才会进入账号校验流程)

mysql> select * from information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
+--------------------+-----------------+
| USERHOST           | FAILED_ATTEMPTS |
+--------------------+-----------------+
| 'root'@'localhost' |               4 |
+--------------------+-----------------+

4,生产问题处理
生产环境mysql最大连接数用满,本地也无法登录,这里采用gdb修改最大连接数gdb -p 2075 -ex "set max_connections=1500" -batch

通过show processlist ,发现大量状态为“Waiting in connection_control plugin”的等待连接。

由于问题连接过多,逐个kill掉显然不太现实。

故障模拟脚本:

[root@localhost scripts]# cat tt.sh #!/bin/bash
for i in {1..254};doip="172.20.202.$i"#ping -c 2 $ip &> /dev/null && echo $ip is up &mysql -uroot -p123 -hlocalhost -e "select now()" &sleep 1
done
wait

使用pt-kill工具
pt-kill --user=root --password=123456  -hlocalhost  --no-version-check --match-command Connect --match-state "Waiting in connection_control plugin" --victims all --interval 2  --print --kill
批量拼接 kill 语句
 select concat('KILL ',id,';') from information_schema.processlist where Command='Connect' and STATE='Waiting in connection_control plugin';

原文链接:https://blog.csdn.net/weihaodong0557/article/details/113805838

mysql 安全插件相关推荐

  1. MySQL HandlerSocket插件 资料

    2019独角兽企业重金招聘Python工程师标准>>> HandlerSocket的优势和缺陷阐述 下一站:HandlerSocket! MySQL HandlerSocket 插件 ...

  2. mysql审计插件安装_MySQL审计插件安装使用说明文档--升级版

    目的 基于之前设计开发的MySQL审计插件,以及<MySQL审计插件安装使用说明文档>的内容介绍,对完善后的mysql审计插件进行补充和说明.主要对新增内容进行详细说明,进一步完善审计插件 ...

  3. Mysql的插件下载流程

    Mysql的插件下载流程 转载地址:https://www.cnblogs.com/it-mh/p/11205866.html 官网地址:官网地址:http://dev.mysql.com/downl ...

  4. 技术分享 | 一款功能全面的 MySQL Shell 插件

    作者:杨涛涛 资深数据库专家,专研 MySQL 十余年.擅长 MySQL.PostgreSQL.MongoDB 等开源数据库相关的备份恢复.SQL 调优.监控运维.高可用架构设计等.目前任职于爱可生, ...

  5. mysql 审计插件_MySQL审计插件使用

    下载MySQL审计插件 https://github.com/mcafee/mysql-audit/releases or 本文使用mcafee官网下载链接的软件: https://dl.bintra ...

  6. mysql innodb插件_mysql安装innodb插件

    1.可以用 show engines;或者show plugins;来查看 mysql>show plugins;+----------------------------+--------+- ...

  7. mysql 图形插件_对我来说数据库图形化管理工具用这个足够了

    1. 前言 胖哥是一个有软件洁癖的人,能用现有的软件解决问题的绝不安装新的软件.Java后端开发主要跟数据库打交道,所以数据库图形化界面(GUI)是少不了的.通常图形化操作关系型数据库(RMDBS)大 ...

  8. es mysql 同步插件_[es和数据库怎么同步]mysql与elasticsearch实时同步常用插件及优缺点对比(ES与关系型数据库同步)...

    目前mysql与elasticsearch常用的同步机制大多是基于插件实现的,常用的插件包括:elasticsearch-jdbc,elasticsearch-river-MySQL,go-mysql ...

  9. mysql 卸载插件_MySQL 插件安装或卸载(window validate_password 为例)

    查看插件: mysql> show plugins; mysql> select plugin_name,plugin_status,plugin_type,load_option,plu ...

  10. mysql分页插件springboot_SpringBoot--使用Mybatis分页插件

    1.导入分页插件包和jpa包 org.springframework.boot spring-boot-starter-data-jpa com.github.pagehelper pagehelpe ...

最新文章

  1. 关系数据库标准语言 SQL (ch.3)
  2. 网络营销外包浅析B站破圈运营是如何增强网络营销能力的?
  3. windows 程序员电脑设置
  4. day36 03-Hibernate检索方式:排序、参数绑定、投影查询
  5. SAP Customer Experience Extensibility gold rule
  6. 热门话题“看第一学历招人公平吗?”数据告诉你,网友们都是如何想的
  7. 管理感悟:忙的真正含义是没心思
  8. Haroopad--最好用的markdown编辑器
  9. FPGA学习记录(7)<巴特沃斯低通IIR滤波器FPGA实现>
  10. linux磁盘刻录ISO工具,技术|Ubuntu下的三个好用的CD/DVD刻录工具
  11. Direct2D 介绍
  12. 【LeetCode LCP 3】机器人大冒险
  13. C#串口开发案例:迈瑞血球分析仪
  14. ae字体预设下载_AE超强文字预设包(附插件和教程)Videohive 2D Text Preset Pack for Animation Composer Plug-in...
  15. 【LearnOpenGL】-PBR材质
  16. 使用TimerOne库
  17. 判断图片是否为现场照片(Live Photo亦即内含Exif信息)
  18. 谷歌中阻止冒泡在火狐中失效_如何在Google表格中乘数字
  19. EasyRecovery15万能数据恢复软件全面详细功能讲解
  20. oracle 10g 新特性中文笔记(第五章)

热门文章

  1. JAVA编程环境搭建 JDK与环境变量、Eclipse
  2. Win10自带的SSH客户端
  3. mysql中sign函数_Oracle中sign函数和decode函数的使用
  4. QT 定位 dmp 文件 错误
  5. vue照片墙使用crooper.js
  6. 第十四届蓝桥杯模拟赛(第三期)Java组个人题解
  7. Harbor版本升级
  8. Kubernetes K8S架构师实战集训营-[高级班] 视频教程
  9. 英语基础语法学习笔记 1
  10. Android之仿淘宝商品详情浏览效果