【史上最全】MySQL数据库安全加固方案_mysql 安全加固,不吃透都对不起自己

1.2.5 防暴力破解

A. 限制密码输错次数。使用命令 create user ‘用户’@‘host’ identified by ‘密码’ failed_login_attempts 3 password_lock_time 1 限制用户输入密码错误 3 次就锁定账号 1 天。
B. 在 mysqld.cnf 文件里添加如下命令:
plugin-load-add=connection_control.so
connection-control=FORCE_PLUS_PERMANENT
connection-control-failed-login-attempts=FORCE_PLUS_PERMANENT
connection-control-failed-connections-threshold=3
connection-control-min-connection-delay=86400000
connection-control-max-connection-delay=86400000

1.3 口令

A. 检查账户默认密码和弱密码。
B. 口令长度需要至少 14 位,并需要包括数字、英文字母和特殊符号。执行以下命令可对密码类型进行限制。

mysql> INSTALL PLUGIN validate_password SONAME ‘validate_password.so’;
mysql> show variables like ‘validate_password%’;
±-------------------------------------±-------+
| Variable_name | Value |
±-------------------------------------±-------+
| validate_password_check_user_name | ON |
| validate_password_dictionary_file | | #规则文件保存路径
| validate_password_length | 8 | #密码长度
| validate_password_mixed_case_count | 1 | #整个密码中至少要包含大/小写字母的总个数;
| validate_password_number_count | 1 | #整个密码中至少要包含阿拉伯数字的个数;
| validate_password_policy | MEDIUM | #密码的验证强度等级
| validate_password_special_char_count | 1 | #密码中特殊字符至少的个数
±-------------------------------------±-------+
7 rows in set (0.00 sec

C. 密码应至少每 90 天进行一次更换。

  1. 在 mysqld.cnf 文件中添加配置 default_password_lifetime=90,并重启 mysql。
  2. 使用命令 alter user ‘账号名’@‘host 地址’ password expire interval 90 day 将账号设置为 90 天更换一次。
    D. 您可以通过执行以下命令修改密码。必须要修改 mysql 安装后给的 root 超级管理员的随机密码。

mysql> update user set password=password(‘密码’) where user=‘root’;
mysql> flush privilege

E. 在 mysqld.cnf 文件中添加配置 validate_password_policy=STRONG 将密码强度更改为强
F. 在 mysqld.cnf 文件中添加配置 validate_password_length=14,设置密码长度最小为 14。
G. 禁止数据库用户密码为空。输入命令 SELECT User,host FROM mysql.user WHERE LENGTH(authentication_string) = 0 检查是否有密码为空的用户。
H. 禁止在 mysqld.cnf 中配置密码。执行命令 cat mysqld.cnf 2>/dev/null | grep -i ‘[a-zA-Z0-9#]*password’,若返回结果不为空,则在 mysqld.cnf 配置文件中清除[client]中的 password 信息.

1.4 授权

在数据库权限配置能力范围内,根据用户的业务需要,配置其所需的最小权限。
A. 查看数据库授权情况。

mysql> use mysql;
mysql> select * from user;
mysql>select * from db;
mysql>select * from host;
mysql>select * from tables_priv;
mysql>select * from columns_priv;

B. 通过 revoke 命令回收不必要的或危险的

mysql> help revoke
Name: ‘REVOKE’
Description:
Syntax:
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] … ON [object_type]
{
*
| .
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
}
FROM user [, user] …

1.5 开启日志审计功能

数据库应配置日志功能,便于记录运行状况和操作行为。
MySQL 服务有以下几种日志类型: 错误日志: -log-err
查询日志: -log (可选)
慢查询日志: -log-slow-queries (可选)
更新日志: -log-slave-updates
二进制日志: -log-bin
A. 添加错误日志。在 mysqld.cnf 文件中如果没有 log-error,则添加
log-error=/var/log/mysqld.log。
B. 添加二进制日志和更新日志。在 mysqld.cnf 文件中添加以下内容。

log-bin=/var/lib/mysql/文件名
server-id=字符串 #随机指定一个不能和其他集群中机器重名的字符串
log-slave-updates=11

C. 使用命令 set global slow_query_log=ON 添加慢查询日志。使用 set global long_query_time=5;
设置慢查询时间。
D. 修改配置后,要重启 mysql。
日志查询操作说明
执行 show variables like ‘log_%’;命令可查看所有的 log。
执行 show variables like ‘log_bin’;命令可查看具体的 log。

1.6 安装最新补丁

确保系统安装了最新的安全补丁。
注意: 在保证业务及网络安全的前提下,并经过兼容性测试后,安装更新补丁。

1.7 设置可信 IP 访问控制

通过数据库所在操作系统的防火墙限制,实现只有信任的 IP 才能通过监听器访问数据库。

mysql> GRANT 权限 ON db.* TO 用户名@'IP 子

1.8 连接数设置

根据您的机器性能和业务需求,设置最大、最小连接数。
在 MySQL 配置文件(mysqld.cnf)的 [mysqld] 配置段中添加 max_connections = 3000,保存配置文件,重启 MySQL 服务后即可生效。

1.9 设置证书撤销列表

在 mysqld.cnf 文件添加 ssl_crl=file_name。

1.10 删除不使用的客户端程序

删除不使用的客户端程序、头文件、测试文件和 debug 文件。
步骤 1 以默认安装路径说明,执行如下命令删除/usr/bin 路径下除了 mysql、mysqlbinlog 和

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

插入图片描述](https://img-blog.csdnimg.cn/b07abbfab1fd4edc800d7db3eabb956e.png)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-oBMvJfcW-1712762291820)]

  • 23
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 数据库安全加固是非常重要的,以下是一些常用的方法和建议: 1. 更新和维护 MySQL:定期更新 MySQL 数据库版本和补丁,确保使用的是最新的安全版本。 2. 设置强密码策略:确保 MySQL 用户密码强度要求高,包括长度、复杂性和定期更改密码。 3. 限制网络访问:仅允许受信任的主机或 IP 地址访问 MySQL 数据库,可以使用防火墙规则或 MySQL 的访问控制列表 (ACL) 来限制访问。 4. 禁用不必要的服务和功能:禁用或移除不需要使用的 MySQL 服务和功能,例如远程管理工具或插件。 5. 使用加密连接:通过启用 SSL/TLS 加密来保护 MySQL 数据库的通信,这样可以防止数据在传输过程中被窃听或篡改。 6. 定期备份数据:定期备份数据库,确保数据可以恢复到最近的可用状态,以防止数据丢失或损坏。 7. 限制权限和访问控制:使用最小权限原则,按需分配 MySQL 用户的权限,并定期审查和更新权限设置。 8. 监控和日志记录:启用 MySQL 的日志记录功能,并定期检查日志文件以监控异常活动和安全事件。 9. 安全审计和漏洞扫描:定期进行安全审计和漏洞扫描,及时发现和修复数据库中的安全漏洞。 10. 加强物理安全措施:确保 MySQL 数据库服务器受到适当的物理保护,例如放置在安全的机房或锁定的机柜中。 请注意,这些仅是一些基本的安全加固措施,具体的加固步骤可能因环境和需求而有所不同。建议在实施之前,先了解并评估您的具体需求和风险,并参考 MySQL 官方文档和安全最佳实践进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值