`
guoc
  • 浏览: 30007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

 

1       安全策略

1.1   管理意义上的数据安全

访问 MySQL 数据库必须首先访问数据库的某个权限、即以某个权限模式用户的身份登录,大部分的安全管理主要通过模式用户的权限来实现。

MySQL 的相关权限信息主要存放在 grant tables 的系统表中,即 mysql.User mysql.db mysql.Host mysql.table_priv 和、 mysql.column_priv 表中, MySQL 启动时装入内存。应尽量使用 GRANT REVOKE CREATE USER DROP USER 来进行用户和权限的变更操作。

:GRANT SELECT.UPDATE,DELETE,INSERT EXECUTE ON test_shop.* TO ‘ test_guest ’@’localhost’;

查看某用户权限,如 SHOW GRANTS FOR 'test_guest'@' localhost '

 

1.2   防范故障角度的数据安全

数据文件是操作系统级的对象,因此一般来讲具有相当的脆弱性、而且依赖于操作系统的性能特点。由于磁盘介质的因素、一个大的数据文件上个别数据块的损坏可能导致整个数据文件的不可用,这对一个系统来说是灾难性的,而且大的表空间或数据文件的恢复是困难和耗时的。

巨大对象的分区在性能角度之外也有安全的因素,当磁盘错误使一个巨大表中一个单独的数据块不能读写时可能导致整个表不可用,必须恢复包含该表的整个表空间。

考虑到数据仓库问题。可以进行以下操作:

对数据量大且不进行写操作的表,使用 myisampack 工具,生成压缩、只读 MyISAM 表。可以压缩 40% - 50% 的表文件空间。具体操作如下:

A 压缩文件: >myisampack ../data/music_shop/ 表名 .MYI

B 重建索引: >myisamchk -rq --sort-index --analyze../data/test_shop/ 表名 .MYI

C 强制 mysqld 使用新表: > mysqladmin flush-tables

如果要进行写操作,可以解压缩一个压缩的表,恢复原有状态,使用 myisamchk 如: myisamchk --unpack ../data/music_shop/ 表名 .MYI

最后,系统上线后,随着数据量的增加,会发现数据目录下的磁盘空间越来越下,造成安全隐患。可以采取两种措施。一种针对 MyISAM 存储引擎的表,在建表时分别指定数据目录和索引目录到不同的磁盘空间,而默认会同时放在数据目录下。另外一种针对 InnoDB 存储引擎的表,因为数据文件和索引文件在一起的,所以无法将它们分离。当磁盘空间不足时,可以增加一个新的数据文件,这个文件放在有充足空间的磁盘上。具体请查阅参数 innodb_data_file_path 设置。

1.3   容灾与备份机制

A)、        建立主从数据库集群,采用 MySQL 复制

MySQL 复制的优点:

1 如果主服务器出现问题,可以快速切换到从服务器;

2 可以在从服务器上执行查询操作,降低主服务器的访问压力;

3 可以在从服务器上执行备份,以避免备份期间影响主服务器的;

应注意的问题:

由于实现的是异步的复制,所以主从服务器之间存在一定的差距。在从服务器上进行的查询操作要考虑到这些数据的差异,一般只有对实时性要求不高的数据可以通过从服务器查询。

B)、         定期备份文件与数据,通过各种方式保存文件与数据。

以下是几点防范的措施:

     制定一份数据库备份 / 恢复计划,并对计划进行仔细测试。

     启动数据库服务器的二进制变更日志,该功能的系统开销很小 ( 约为 1%) ,我们没有理由不这样做。

     定期检查数据表,防范于未燃。

     定期对备份文件进行备份,以防备份文件失效。

     MySQL 的数据目录和备份文件分别放到两个不同的驱动器中,以平衡磁盘 I/O 和增加数据的安全。

1.4   对上一年度的业务历史数据转移至其他数据库,只允许查询操作。

根据具体业务要求采取不同措施,目前暂不考虑。

2       安全隐患

2.1   删除匿名账号

有些版本的 MySQL 安装完之后会安装一个空账号( User = ‘’ ),此账号对 test 数据库有完全权限,为避免此账号登陆后,建立大表,占用磁盘空间,影响系统安全,建议删除( mysql> drop user ‘’@’localhost’;

2.2   root 账号设置口令

建议以一句话的拼音为口令。如 SET PASSWORD=PASSWORD('woshiyitiaoyu')

并且限定只能通过 localhost 访问。

2.3   只授予账号必须的权限

如: Grant select,insert,update,delete on tablename to ‘username’@’hostname’

2.4   root 外,任何用户不应有 mysql user 表的存取权限

否则将可以通过修改 root 用户密码,获得高级别数据库权限。

2.5   不要把 file process 、或 super 权限授予管理员以外的账号

会产生保密信息外泄,查看管理员执行的动作,普通用户执行 kill 命令等严重的安全隐患。

2.6   LOAD DATA LOCAL 带来的安全问题

可以任意加载本地文件到数据库。

web 环境中,客户从 web 服务器连接,用户可以使用 LOAD DATA LOCAL 语句来读取 web 服务器进程有读访问权限的任何文件。

2.7   使用 MERGE 存储引擎潜藏的安全漏洞

2.8   DROP TABLE 命令并不收回以前的相关访问授权

2.9   REVOKE 命令漏洞

grant all privileges on *.* to guest@localhost;

revoke all privileges on *.* from guest@localhost; 不起作用,必须针对每个数据库单独使用 revoke

3       其它安全设置选项

  MySQL 本身带有一些选项,适当的使用这些选项将会使数据库更加安全。

3.1   使用 skip-network

在网络上不允许 TCP/IP 连接,所有到数据库的连接必须由命名管道 (Named Pipes) 或共享内存 (Shared Memory) UNIX 套接字 SOCKET 文件进行。这个选项适合应用和数据库共用一台服务器的情况,其他客户端将无法通过网络远程访问数据库,大大增强了数据库的安全性,但同时也带来了管理维护上的不方便。 MySQL 仅能通过命名管道或共享内存 ( widows ) Unix 套接字文件 ( Unix 系统中 ) 来和客户端连接交互。以下为配置实例:

a)、        服务器上打开此选项(默认关闭)并重启 MySQL 服务

skip-networking

port         = 3306

……

b)、        远程客户端进行连接

G:\xampp\mysql\bin>mysql -h10.42.1.42 -p3306 -uroot -p

Enter password:

ERROR 2003 (HY000): Can't connect to MySQL server on '10.42.1.42' (10060)

……

c)、        关闭此选项后重启服务器

#skip-networking

port         = 3306

……

d)、        远程客户端进行连接

G:\xampp\mysql\bin>mysql -h10.12.1.42 -p3306 -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 9

Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

3.2   使用 SSL

SSL Secure Socket Layer 安全套接字)是一种安全协议,最初由 Netscape 公司所开发,用以保障在 Internet 上数据传输的安全 , 利用数据加密技术,可确保数据在网络上的传输过程中不会被截取。

应用场景,在主从数据库复制中使用,提供以下服务保障。

a)、      认证用户和服务器,确保数据发送到正确的客户和服务器。

b)、      加密数据以防止数据中途被窃取。

c)、       维护数据的完整性,确保数据在传输过程中不被破坏。

MySql 中使用 SSL 进行安全传输,需要在命令行或选项文件中设置 ”SSL” 选项。下面以命令行为例,进行安装介绍。

安装证书管理工具

 

1.   所需部件

Win32OpenSSL-0_9_8g.exe ,可从网上下

 

2.   安装

双击Win32OpenSSL-0_9_8g.exe 按提示进行安装。安装在C:\OpenSSL 目录下。

 

3.   C:\OpenSSL\bin 目录下创建rootserverclient 三个子路径。

 

4.   在创建证书时输入的用户名,密码请妥善保存。

 

创建根证书,并采用自签名签署它

 

1.   创建私钥

进入DOS 窗口,进入C:\OpenSSL\bin 路径,然后输入openssl genrsa -out root/root-key.pem 1024 命令,按Enter 键。

 

2.   创建证书请求

继续输入openssl req -new -out root/root-req.csr -key root/root-key.pem ,然后按Enter 键,要求输入一系列信息,可根据实际情况输入,但是CommonName :一定要输入root

 

3.   自签署根证书

继续输入openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem -days 3650 ,然后按Enter 键。

 

 

4.   查看根证书内容

要先进入证书所在路径 例:C:\OpenSSL\bin\root ,然后输入keytool -printcert -file root-cert.pem ,然后按Enter 键。

 

创建服务器证书,并采用根证书签署它

 

1.   创建私钥

进入DOS 窗口,进入C:\OpenSSL\bin 路径,然后输入openssl genrsa -out server/server-key.pem 1024 命令,按Enter 键。

 

2.   创建证书请求

继续输入openssl req -new -out server/server-req.csr -key server/server-key.pem ,然后按Enter 键,要求输入一系列信息,可根据实际情况输入,但是CommonName :一定要输入localhost 或服务器的域名(存在域名情况下)。

 

3.   签署服务器证书

继续输入openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650 ,然后按Enter 键。

 

4.   查看服务器证书内容

要先进入证书所在路径 例:C:\OpenSSL\bin\server ,然后输入keytool -printcert -file server-cert.pem ,然后按Enter 键。

 

创建客户证书,并采用根证书签署它

 

1.   创建私钥

进入DOS 窗口,进入C:\OpenSSL\bin 路径,然后输入openssl genrsa -out client/client-key.pem 1024 命令,按Enter 键。

 

2.   创建证书请求

继续输入openssl req -new -out client/client-req.csr -key client/client-key.pem ,然后按Enter 键,要求输入一系列信息,可根据实际情况输入,CommonName :输入用户ID

 

3.   签署客户证书

继续输入openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650 ,然后按Enter 键。

 

 

4.   查看客户证书内容

要先进入证书所在路径 例:C:\OpenSSL\bin\client ,然后输入keytool -printcert -file client-cert.pem ,然后按Enter 键。

 

完成以上步骤后,将所生成的证书rootserverclient 文件夹,拷到C:\mysll 目录下。 至此,已部署完在启动服务器时所用的有关选项指明证书文件和密钥文件。在建立加密连接前,要准备三个文件,一个 CA 证书,是由可信赖第三方出具的证书,用来验证客户端和服务器端提供的证书。 CA 证书可向商业机构购买,也可自行生成。第二个文件是证书文件,用于在连接时向对方证明自已身份的文件。第三个文件是密钥文件,用来对在加密连接上传输数据的加密和解密。 MySQL 服务器端的证书文件和密钥文件必须首先安装,在 myssl 目录里的几个文件: root-cert.pem(CA 证书 ) server-cert.pem( 服务器证书 ) server-key.pem( 服务器公共密钥 )

在主数据库创建从数据库操作所用的用户,并指定必须用SLL 认证。

CREATE USER 'test_guest'@'localhost' IDENTIFIED BY '1234';

GRANT ALL PRIVILEGES ON music_shop.* TO ' test_guest '@'10.12.1.42' REQUIRE ssl;

关闭主数据库

>mysqladmin -uroot shutdown

重启服务器,使配置生效。

>mysqld--ssl-ca=C:\myssl\server\root-cert.pem --ssl-cert=C:\myssl\server\server-cert.pem --ssl-key=C:\myssl\server\server-key.pem

用从数据库客户程序建立加密连接。

>mysql -u test_guest --ssl-ca=C:\myssl\client\root-cert.pem --ssl-cert=C:\myssl\client\client-cert.pem --ssl-key=C:\myssl\client\client-key.pem

配置完成后,调用 mysql 程序运行 \s SHOW STATUS LIKE 'SSL%' 命令,如果看到 SSL: 的信息行就说明是加密连接了。如果把 SSL 相关的配置写进选项文件,则默认是加密连接的。也可用 mysql 程序的 --skip-ssl 选项取消加密连接。

 

分享到:
评论

相关推荐

    MySQL安全配置详解

    在进行MySQL安全配置之前,用户需要了解MySQL的不同版本及其安全更新政策。根据官方文档,MySQL版本分为开发版(如MySQL 5.5),它用于引入新功能;稳定版(如MySQL 5.1),它侧重于漏洞修复和维护稳定性;以及较旧...

    MySQL 安全配置 大牛总结的安全经验

    MySQL 安全配置,大牛总结的安全经验,都是一线生产上的安全配置

    MySQL安全配置.pdf

    MySQL安全配置是确保数据库系统稳定、可靠和安全的关键环节。本篇主要探讨了三个核心方面:数据安全访问管理、数据安全防范和容灾备份机制,以及安全隐患的规避。 1. 数据安全访问管理 MySQL的安全管理主要基于权限...

    详解Mysql安全配置nnnnnn

    详解Mysql安全配置

    MySQL安全配置文档资料.pdf

    MySQL安全配置文档资料.pdf

    详解MySQL安全配置.pdf

    Mysql安全配置 前言 账户权限安全 数据的网络安全配置 密码策略安全 日志 数据库服务所在主机安全配置 部署SQL注入检测、防御模块 安全相关启动选项 备份策略 前言 数据库安全配置、或者...

    MySQL安全配置详解.pdf

    MySQL安全配置详解.pdf 学习资料 复习资料 教学资源

    MySQL安全配置向导mysql_secure_installation详解

    MySQL安全配置向导`mysql_secure_installation`是一个用于增强MySQL服务器安全性的实用工具。它旨在帮助用户快速配置一些关键的安全设置,以确保数据库服务在生产环境中更加安全可靠。以下是该向导涉及的主要步骤...

    系统安全配置技术规范-MySQL(基线加固)

    人工评估(手工检查)是对工具评估的一种补充, 它不需要在被评估目标系统上安装任何软件,对目标系统的运行和状态...安全专家对各主机系统、服务器、业务系统、数据库以及各种应用服务器在内的目标系统进行人工评估。

    MySQL安全配置[归类].pdf

    MySQL数据库的安全配置是确保数据安全的关键环节,涵盖了用户权限管理、数据保护、容灾与备份等多个方面。在本文中,我们将深入探讨这些关键知识点。 首先,我们要理解的是MySQL的权限管理体系。MySQL通过权限表...

    Mysql安全和性能配置标准

    **3.1 MySQL安全配置检查表** - **安装方式**:推荐从Percona官方网站获取安装的二进制文件进行安装或者自行编译安装。当前推荐的版本为Percona Server 5.1.57-12.8。 - **安装目录设置**:MySQL的安装目录需与其它...

    《MySQL最佳安全配置指导手册》.pdf

    总之,这份手册为数据库管理员提供了一套全面的MySQL安全配置指南,涵盖了从操作系统级别到MySQL数据库内部设置的各个方面,帮助他们在部署和日常维护数据库时可以采取一系列措施以提高安全性,避免潜在的安全威胁。...

    mysql安装配置教程.md

    以下是 MySQL 数据库在 Ubuntu 系统上的安装和配置教程: ### 步骤 1: 安装 MySQL 1. 打开终端,并执行以下命令安装 MySQL 服务器:...### 步骤 4: MySQL 安全配置(可选) 1. 安装完成后,MySQL 提供了一个脚本来帮

    如何安全的配置和应用MySQL数据库.doc

    "MySQL 安全配置和应用" MySQL 数据库已经成为当前网络中使用最多的数据库之一,特别是在 Web 应用上,它占据了中小型应用的绝对优势。这一切都源于它的小巧易用、安全有效开放式许可和多平台,更主要的是它与三大 ...

    mysql最佳安全配置手册

    本文档将介绍MySQL数据库的安全配置,包括操作系统级别安全配置、文件系统权限安全配置、基本安全配置、权限安全配置、审计和日志安全配置以及身份认证安全配置等重要内容。 首先,需要确保MySQL安装在非系统分区上...

    MySQL 使用 SSL 连接配置详解

    MySQL 使用SSL连接配置详解 在现代数据库管理中,安全性是至关重要的,SSL(Secure Sockets Layer)连接为MySQL提供了一种加密数据传输的方式,确保了客户端和服务器之间的通信不被窃听或篡改。本文将详细介绍如何...

Global site tag (gtag.js) - Google Analytics