MySQL系列之远程管理(安全)

打印 上一主题 下一主题

主题 790|帖子 790|积分 2370

前言

在我们的学习或工作过程中,作为开辟、测试或运维人员,经常会通过各类客户端软件,远程登录MySQL数据库。作为DBA可能必要思量这里轻易出现的“纰漏”。比如在上篇文章(快捷入口)中,如果我们未设置保持登录的有效期,那么黑客可能会利用这个毛病,举行数据窃听。

当然我们能想到的,在MySQL自身迭代的过程中,天然也会涉及。本日博主开始讲讲MySQL是怎样做远程登录安全吧。
Q:怎样保障远程登录安全

   提示:本文示例均已MySQL5.7为例。
  一、远程登录的主要方式

起首来看看MySQL支持哪些登录类型:
1. 用户名/口令

这是远程登录最常用的方式,只要提供主机、用户、密码即可,如下图所示:

   提示:使用简朴,但不安全。
  2. SSH

通过SSH协议(Secure Shell)建立一个安全的加密通道,以Shell命令的方式访问远程数据库。此时数据库服务必要开通相干权限。

3. SSL/TLS

通过SSL协议登录数据库,实现安全访问。

二、使用TLS协议加密毗连

本文主要介绍通过TLS协议加密远程毗连。各位先试想一下,如未实现传输加密,结果会怎么样?
MySQL支持使用TLS(传输层安全)协议在客户端和服务器之间举行加密。TLS使用加密算法来确保通过公共网络接收到的数据是可信的。因此为实现加密,我们通常必要围绕以下几方面完成相干配置。
1. 服务端

在服务端,--ssl选项指定服务器允许但不必要加密毗连。默认情况下启用此选项,因此不必要显式指定。如果必要客户端使用加密毗连,必须在服务端启用变量:require_secure_transport。
my.cnf文件中,举行如下定义:
  1. [mysqld]
  2. require_secure_transport=ON
复制代码
在此底子上,指定以下配套变量:
  1. [mysqld]
  2. ssl_ca=CA证书公钥文件
  3. ssl_cert=MySQL服务证书公钥文件
  4. 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标识客户端公钥和私钥:
  1. --ssl-ca:CA证书公钥文件,必须与服务端CA证书一致
  2. --ssl-cert:客户端证书公钥文件
  3. --ssl-key:客户端证书私钥文件
复制代码
为了提高安全性,客户端可以提供与服务端CA证书的相同CA证书,并启用主机名身份验证。通过这种方式,服务器和客户端将信托放在同一个CA证书上。客户端验证其毗连的主机是否是预期的主机:
要指定CA证书,请使用–ssl-CA(或–ssl-capath),并指定–ssl-mode=VERIFY_CA。
要同时启用主机名身份验证,请使用–ssl mode=VERIFY_identity,而不是–ssl mode=VERIFY_CA。
如果要确定与服务器的当前毗连是否使用加密,请查抄ssl_cipher状态变量值:
  1. SHOW SESSION STATUS LIKE 'ssl_cipher';
复制代码

如果该值为空,则毗连未加密。否则,毗连将被加密,该值表示加密密码。
结语

本文参考MySQL官方文章介绍了MySQL怎样实现远程毗连的安全性,包罗一般配置建议。如对安全有更改的要求,可参考本文加以实践,欢迎关注。
走过的、路过的盆友们,点点赞,收收藏,并加以引导,以备不时之需哈~

出色回放


MySQL系列之身份鉴别(安全)
MySQL系列之数据授权(privilege)
MySQL系列之如安在Linux只安装客户端
MySQL系列之怎样正确的使用窗口函数(基于8.0版本)
MySQL系列之数据导入导出
MySQL系列之索引入门(上)
MySQL系列之索引入门(下)



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表