MySQL系列之远程管理(安全)
前言在我们的学习或工作过程中,作为开辟、测试或运维人员,经常会通过各类客户端软件,远程登录MySQL数据库。作为DBA可能必要思量这里轻易出现的“纰漏”。比如在上篇文章(快捷入口)中,如果我们未设置保持登录的有效期,那么黑客可能会利用这个毛病,举行数据窃听。
https://i-blog.csdnimg.cn/direct/54ad3899d2b5453fa87fceec1556ebdf.png
当然我们能想到的,在MySQL自身迭代的过程中,天然也会涉及。本日博主开始讲讲MySQL是怎样做远程登录安全吧。
Q:怎样保障远程登录安全
提示:本文示例均已MySQL5.7为例。
一、远程登录的主要方式
起首来看看MySQL支持哪些登录类型:
1. 用户名/口令
这是远程登录最常用的方式,只要提供主机、用户、密码即可,如下图所示:
https://i-blog.csdnimg.cn/direct/f6574c02e87840348087f4adbeecb61f.png
提示:使用简朴,但不安全。
2. SSH
通过SSH协议(Secure Shell)建立一个安全的加密通道,以Shell命令的方式访问远程数据库。此时数据库服务必要开通相干权限。
https://i-blog.csdnimg.cn/direct/84587b4e9fd24afe833bb29cc937fd8b.png
3. SSL/TLS
通过SSL协议登录数据库,实现安全访问。
https://i-blog.csdnimg.cn/direct/18c8b72a0aef41c6b6c9f6e21ed4e2c8.png
二、使用TLS协议加密毗连
本文主要介绍通过TLS协议加密远程毗连。各位先试想一下,如未实现传输加密,结果会怎么样?
MySQL支持使用TLS(传输层安全)协议在客户端和服务器之间举行加密。TLS使用加密算法来确保通过公共网络接收到的数据是可信的。因此为实现加密,我们通常必要围绕以下几方面完成相干配置。
1. 服务端
在服务端,--ssl选项指定服务器允许但不必要加密毗连。默认情况下启用此选项,因此不必要显式指定。如果必要客户端使用加密毗连,必须在服务端启用变量:require_secure_transport。
在my.cnf文件中,举行如下定义:
require_secure_transport=ON
在此底子上,指定以下配套变量:
ssl_ca=CA证书公钥文件
ssl_cert=MySQL服务证书公钥文件
ssl_key=MySQL服务证书私钥文件
2. 客户端
默认情况下,如果服务器支持加密毗连,MySQL客户端步伐会尝试建立加密毗连,并通过--ssl差别的模式加以控制:
[*]–ssl mode=PREFERRED
在没有–ssl模式选项的情况下,客户端会尝试使用加密举行毗连,如果无法建立加密毗连,则会退回到未加密的毗连。这也是显式–ssl mode=PREFERRED选项的行为。
[*]–ssl mode=REQUIRED
客户端必要加密毗连,如果无法建立毗连,则会失败。
[*]–ssl mode=DISABLED
客户端使用未加密的毗连。
[*]–ssl mode=VERIFY_CA或VERIFY_IDENTITY
客户端必要加密毗连,还必要对服务器CA证书举行验证,并(使用VERIFY_IENTITY)对其证书中的服务器主机名举行验证。
提示:
如果选择默认设置–ssl mode为PREFERRED时,将生成加密毗连。但是,客户端验证服务器的身份非常重要,因此设置–ssl mode为VERIFY_CA或VERIFY_IDENTITY是比默认选项更好的选择,它可以帮助防止复杂的中心人攻击。VERIFY_CA使客户端查抄服务器的证书是否有效。VERIFY_IDENTITY使客户端查抄服务器的证书是否有效,并使客户端查抄客户端使用的主机名是否与服务器证书匹配。如满足该安全要求,你必须先确保服务器的CA证书对当前环境中使用它的所有客户端都是可靠的,否则将导致可用性标题。
客户端的以下选项(或毗连参数)标识了客户端在与服务器建立加密毗连时使用的证书和密钥文件。它们雷同于服务器端使用的ssl_ca、ssl_cert和ssl_key体系变量,但–ssl-cert和–ssl-key标识客户端公钥和私钥:
--ssl-ca:CA证书公钥文件,必须与服务端CA证书一致
--ssl-cert:客户端证书公钥文件
--ssl-key:客户端证书私钥文件
为了提高安全性,客户端可以提供与服务端CA证书的相同CA证书,并启用主机名身份验证。通过这种方式,服务器和客户端将信托放在同一个CA证书上。客户端验证其毗连的主机是否是预期的主机:
要指定CA证书,请使用–ssl-CA(或–ssl-capath),并指定–ssl-mode=VERIFY_CA。
要同时启用主机名身份验证,请使用–ssl mode=VERIFY_identity,而不是–ssl mode=VERIFY_CA。
如果要确定与服务器的当前毗连是否使用加密,请查抄ssl_cipher状态变量值:
SHOW SESSION STATUS LIKE 'ssl_cipher';
https://i-blog.csdnimg.cn/direct/1ffc7697d9b04aa4b70dedc76c12e8f3.png
如果该值为空,则毗连未加密。否则,毗连将被加密,该值表示加密密码。
结语
本文参考MySQL官方文章介绍了MySQL怎样实现远程毗连的安全性,包罗一般配置建议。如对安全有更改的要求,可参考本文加以实践,欢迎关注。
走过的、路过的盆友们,点点赞,收收藏,并加以引导,以备不时之需哈~
出色回放
MySQL系列之身份鉴别(安全)
MySQL系列之数据授权(privilege)
MySQL系列之如安在Linux只安装客户端
MySQL系列之怎样正确的使用窗口函数(基于8.0版本)
MySQL系列之数据导入导出
MySQL系列之索引入门(上)
MySQL系列之索引入门(下)
https://i-blog.csdnimg.cn/direct/055685776d9d4814bc17c3a6f24de588.jpeg
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]