在现在的系统里,改善安全是必须的!安全系统中最薄弱的环节之一,攻击者可以进入的用户密码。为了提高密码强度和安全性,MySQL插件提供了一个名为“验证插件”,可以配置为执行一组密码规则。
安装
插件可以在运行时通过执行以下:
|
1
|
安装
插件
validate_password
SONAME
“validate_password.so”
;
|
或通过添加插件配置文件,但这需要跳跃的MySQL生效:
|
1
2
|
(
mysqld
]
插件- - - - - -负载- - - - - -添加=validate_password
所以
|
也建议,以便添加以下变量在my . cnf中所做插件在运行时不能删除(也需要MySQL反弹生效):
|
1
2
|
(
mysqld
]
验证- - - - - -密码=FORCE_PLUS_PERMANENT
|
检查安装
你可以检查是否已安装插件通过检查插件:
|
1
2
3
4
5
6
7
8
|
mysql
>
显示
插件
\
G
…
* * * * * * * * * * * * * * * * * * * * * * * * * * *
53岁。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
的名字
:
validate_password
状态
:
活跃的
类型
:
验证
密码
图书馆
:
validate_password
所以
许可证
:
GPL
|
或者通过检查如果在MySQL中启用以下变量:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
mysql
>
显示
全球
变量
就像
“验证%”
;
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
|
Variable_name
|
价值
|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
|
validate_password_check_user_name
|
从
|
|
validate_password_dictionary_file
|
|
|
validate_password_length
|
8
|
|
validate_password_mixed_case_count
|
1
|
|
validate_password_number_count
|
1
|
|
validate_password_policy
|
媒介
|
|
validate_password_special_char_count
|
1
|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
7
行
在
集
(
0.00
证券交易委员会
)
|
使用
一个简短的摘要变量影响的密码是:
Validate_password_policy:确定密码强度政策可以低,中等或强烈。这取决于政策设置,有些变量可能被忽略。
| 政策 | 变量检查 |
| 0或低 | 长度 |
| 1或媒介 | 长度;数字、小写字母、大写字母和特殊字符 |
| 2或强大的 | 长度;数字、小写字母、大写字母和特殊字符;字典文件 |
Validate_password_length:最小数量的字符
Validate_password_mixed_case_count:大写和小写字符的最小数量
Validate_password_number_count:数字字符的最小数目
Validate_password_special_char_count:non-alpha-numeric字符的最小数量
Validate_password_check_user_name:如果启用,防止一个用户设置一个密码等于其用户名或逆转
Validate_password_dictionary_file:路径字典文件的最大大小1 MB每行包含一个词。任何密码与相匹配的子串的单词从字典不能使用,检查是不分大小写,字典的最小长度是4字母/单词。修改字典文件之后,“全球Validate_password_dictionary_file =“path_to_dictionary”;“必须再次执行字典的重载。
注意:增加密码政策,当前的密码后不会自动过期,可能不适合在新政策。一个密码过期的方法应该迫使用户使用固定数量的天后设置一个新密码或密码策略已经改变了。
例子
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
mysql
>
显示
全球
变量
就像
“验证%”
;
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
|
Variable_name
|
价值
|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
|
validate_password_check_user_name
|
从
|
|
validate_password_dictionary_file
|
|
|
validate_password_length
|
8
|
|
validate_password_mixed_case_count
|
1
|
|
validate_password_number_count
|
1
|
|
validate_password_policy
|
媒介
|
|
validate_password_special_char_count
|
1
|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
7
行
在
集
(
0.00
证券交易委员会
)
|
试图设置以下密码导致一个错误:
|
1
2
3
4
|
mysql
>
集
密码
=
“12345678”
;
错误
1819年
(
HY000
)
:
你的
密码
做
不
满足
的
当前的
政策
需求
mysql
>
集
密码
=
“123456 ab”
;
错误
1819年
(
HY000
)
:
你的
密码
做
不
满足
的
当前的
政策
需求
|
密码只接受如果有至少8个字符,包括1特殊字符、数字,1低,1大写如下:
|
1
2
|
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
|
如果设置:
|
1
2
|
mysql
>
集
全球
validate_password_policy
=
“强”
;
mysql
>
集
全球
validate_password_dictionary_file
=
“/ tmp / dictionary.txt”
;
|
和下面的字典文件(记住至少4个字母的单词)
|
1
2
|
美元
猫
/tmp/字典
. txt
男士一
|
下面的密码,包括大小写不敏感的字符串“男士一”不接受:
|
1
2
3
4
5
6
|
mysql
>
集
密码
=”MAN12345
#“;
错误
1819年
(
HY000
)
:
你的
密码
做
不
满足
的
当前的
政策
需求
mysql
>
集
密码
=
“man12345 #“
;
错误
1819年
(
HY000
)
:
你的
密码
做
不
满足
的
当前的
政策
需求
mysql
>
集
密码
=”2345年男士一
#“;
错误
1819年
(
HY000
)
:
你的
密码
做
不
满足
的
当前的
政策
需求
|
但是下面的密码被接受,因为它符合所有的要求:
|
1
2
|
mysql
>
集
密码
=
“2345男2 #”
;
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
|
用例
每个公司有不同的密码要求根据他们的需求和政策,但是对于一些企业和公司已经有标准,如:
- PCI DSS /(支付卡行业数据安全标准)关于安全的各种政策,但关于密码的要求是:
- 需要至少七个字符的最小长度。
- 同时包含数字和字母的字符。
可以实现通过设置如下:
|
1
2
3
4
5
|
集
全球
validate_password_length
=
7
;
集
全球
validate_password_mixed_case_count
=
1
;
集
全球
validate_password_number_count
=
1
;
集
全球
validate_password_special_char_count
=
0
;
集
全球
validate_password_policy
=”媒介”;
|
请注意:以上设置似乎弱按现在的标准,但以上设置最低符合PCI DSS和可以使用强大的政策。同时,PCI / DSS还有其他需求(不能解决了验证插件)密码过期等政策,锁定6失败的尝试之后,和更多的,并不仅仅依靠密码强度。
- NIST(国家技术学院)密码最低要求仅由一个最小长度8激活密码(或6),可以实现:
|
1
2
|
集
全球
validate_password_length
=
8
;
集
全球
validate_password_policy
=”低”;
|
NIST鼓励使用更复杂的密码,包括特殊字符和字典包含先前违反了密码,字典单词,重复的字符串和常见的模式如“aaaa”或“1234”可以实现以下配置:
|
1
2
3
4
5
6
|
集
全球
validate_password_length
=
8
;
集
全球
validate_password_mixed_case_count
=
1
;
集
全球
validate_password_number_count
=
1
;
集
全球
validate_password_special_char_count
=
1
;
集
全球
validate_password_dictionary_file
=
“dictionary.txt”
;
集
全球
validate_password_policy
=
强大的”;
|
字典文件禁止的话。以来最大的字典大小是1 MB,文字和图案的数量可以存在于字典可能仅限于所需实现的政策,尽管其他措施如密码锁定在多次的失败之后也应该遵守国家标准执行。
OWASP(打开Web应用程序安全性项目)有以下最低要求:
- 至少1个大写字母(a - z)
- 至少1小写字母(a - z)
- 至少1位数字(0 - 9)
- 至少1特殊字符包括标点符号和空格
- 至少10个字符长。
- 没有连续超过2相同的字符(“aaa级”、“bbb”等. .)
遵守以下配置:
|
1
2
3
4
5
6
|
集
全球
validate_password_length
=
10
;
集
全球
validate_password_mixed_case_count
=
1
;
集
全球
validate_password_number_count
=
1
;
集
全球
validate_password_special_char_count
=
1
;
集
全球
validate_password_dictionary_file
=
“dictionary.txt”
;
集
全球
validate_password_policy
=
强大的”;
|
有稠密的字典和连续字符的所有可能的组合。
结论
验证插件可以大大有助于提高系统安全性和执行密码政策可以设置在一个快速、简单的方法,但也应该等安全机制,以补充验证插件:
- - - - - -密码过期
- - - - - -添加延迟连续登录重试
- - - - - -安全的密码传输
- - - - - -密码重用策略






我需要安装在我的系统激活这个插件之前吗?
嗨trangtriqc !不,你什么都不需要激活之前激活插件。插件文件必须在mysql的插件文件夹(默认情况下)