MySQL数据库支持SSL连接

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

转自:http://hi.baidu.com/freeners/blog/item/ab950513a5efe70c4a90a78c.html

这次为了研究MySQL yaSSL库证书解析栈溢出漏洞的扫描方法,搭建了一个环境,将此过程中的折腾记录一下。

[0x01]  MySQL对SSL的支持

MySQL支持SSL有两种方式,一种是使用OpenSSL,另一种是使用yassl.
使用openssl需要先安装openssl,而使用yassl就不必了,该源码已经包含在mysql的源码里了。yassl是一种潜入式的形式存在。

[0x02]  Linux下源码安装MySQL数据库以支持SSL

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql  --with-yassl
注意: yassl 与 openssl不能并存,二者只能选其一
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe --user=mysql &

执行到此,基本上已经完成一半了,现在mysql已经支持ssl了,但是还不能用,需要配置一下。

[0x03] 配置MySQL启用SSL

假定你已经有了相关的证书。证书的制作后面介绍。

1)修改配置文件my.cnf

认证机构证书  ssl-ca=/etc/mysql/ca.pem
服务器证书     ssl-cert=/etc/mysql/cert.pem
客户证书        ssl-key=/etc/mysql/key.pem

2)重启服务

这个时候应该已经大功告成了,可以用客户端来连接访问了。

[0x04] 检察数据库是否支持ssl

1) 检察二进制文件是否支持ssl

shell> mysqld --ssl --help
[error] mysqld: unknown option '--ssl'
如果二进制文件不支持ssl的话,将提示错误信息。

2) 检测运行中的mysqld是否支持SSL

mysql> show variables like '%ssl%'

have_ssl     yes
have_openssl yes

可以通过执行以上命令来检查have_ssl或have_openssl是否为yes。

have_ssl是在5.0.38版本中增加的,该版本之后,have_openssl是作为have_ssl的别名存在。兼容以前的版本。

[0x05] 用mysql使用ssl连接访问

shell> mysql --ssl-ca=ca.pem --ssl-cert=cert.pem --ssl-key=key.pem

此时,只能从本地访问,如果从另一台主机访问还需要开通相应权限。

[0x06] 修改初始密码

1) set password

mysql> set password for 'root'@'localhost' = password('xxxx');
mysql> set password for ''@'localhost' = password('xxx');

2) update

mysql> update mysql.user set password = password( 'xxx' ) where user ='root';
mysql> update mysql.user set password = password( 'xxx' ) where user='';
mysql> flush privileges;

3) mysqladmin

shell> mysqladmin -u root password "xxxx"
shell> mysqladmin -u root -h xxx.com password "xxxx"

[0x07] 新增用户

1) mysql> create user 'guodaxing'@'%' identified by 'xxxx';
mysql> grant all privileges on *.* to 'guodaxing'@'%' with grant option;

[0x08]  Windows MySQL支持SSL

我安装了mysql的windows版二进制程序,这个好像已经编译了yassl,只需要修改下配置就可以了。与linux上的配置类似,修改下my.ini文件。

第一次安装的是5.0.X版本的mysql,成功!
第二次安装的是5.1.X版本的mysql,配置好之后重启数据库,连上后查看ssl是否起来了,结果只看到了配置里证书的配置路径,have_ssl和have_openssl均为disable,
怀疑是不是编译的时候没有支持yassl,后来查看到使用手册里解释have_ssl为disable表示该功能也有,但是没有启用,后来排查发现是证书的路径写错了导致的,修改后一切正常。

[0x09]  漏洞验证

intevydis的blog里提供了一个PoC

http://intevydis.com/mysql_overflow1.py.txt
http://intevydis.blogspot.com/2010/01/mysq-yassl-stack-overflow.html

在linux上自动启动mysql会启动mysqld_safe,该程序会调用mysqld,执行poc的时候mysqld_safe并不会崩溃,但mysqld会崩溃,不影响另一个客户端的访问,mysqld_safe好像会再fork一个mysqld。
在windows上mysqld_nt以服务形式存在,当客户端访问时就会生产一个服务线程,执行PoC会导致mysql服务崩溃。

[0x0A]  参考资料

http://www.netexpertise.eu/en/freeradius/mysql-traffic-encryption-with-openssl.html




本文转自holy2009 51CTO博客,原文链接:http://blog.51cto.com/holy2010/506525

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
分布式计算 关系型数据库 数据处理
Dataphin常见问题之没有建表的权限如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
28天前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
367 3
|
5天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)
|
5天前
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第二章(Node连接本地数据库)
【4月更文挑战第2天】本文介绍了如何使用Node.js连接本地MySQL数据库。首先,提到了在MySQL官网下载安装数据库和使用Navicat for MySQL进行数据库管理。接着,通过`yarn add mysql`在项目中安装数据库依赖。然后,创建`app.js`文件,设置数据库连接参数,并建立连接进行查询操作。遇到导入模块的错误后,修改导入方式为CommonJS语法。
19 1
|
8天前
|
SQL 监控 关系型数据库
PG数据库释放闲置连接
PG数据库释放闲置连接
13 0
|
8天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL 安装及连接
MySQL 安装及连接
25 0
|
17天前
|
存储 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT *、分页查询的优化、合理使用连接、子查询的优化)(上)
|
18天前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
77 3
|
19天前
|
网络协议 数据库连接 网络安全
DM数据库连接数据库时报:创建sokect连接失败
DM数据库连接数据库时报:创建sokect连接失败
12 0
|
19天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL连接ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password‘ cannot be loaded
MySQL连接ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password‘ cannot be loaded
25 0