您的位置:首页 > 财经 > 产业 > 四川省人民政府文史研究馆_网络培训方案_新闻投稿平台有哪些_广州网站建设

四川省人民政府文史研究馆_网络培训方案_新闻投稿平台有哪些_广州网站建设

2024/12/22 12:14:32 来源:https://blog.csdn.net/splendid_java/article/details/143978639  浏览:    关键词:四川省人民政府文史研究馆_网络培训方案_新闻投稿平台有哪些_广州网站建设
四川省人民政府文史研究馆_网络培训方案_新闻投稿平台有哪些_广州网站建设

导览

  • 前言
  • Q:如何保障远程登录安全
  • 一、远程登录的主要方式
    • 1. 用户名/口令
    • 2. SSH
    • 3. SSL/TLS
  • 二、使用TLS协议加密连接
    • 1. 服务端
    • 2. 客户端
  • 结语
  • 精彩回放

前言

在我们的学习或工作过程中,作为开发、测试或运维人员,经常会通过各类客户端软件,远程登录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文件中,进行如下定义:

[mysqld]
require_secure_transport=ON

在此基础上,指定以下配套变量:

[mysqld]
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_CAVERIFY_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';

在这里插入图片描述
如果该值为空,则连接未加密。否则,连接将被加密,该值表示加密密码。

结语

本文参考MySQL官方文章介绍了MySQL如何实现远程连接的安全性,包括一般配置建议。如对安全有更改的要求,可参考本文加以实践,欢迎关注。

走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~


精彩回放


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


在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com