oracle mysql 安全性_MySQL安全性指南 (1)(转)

MySQL安全性指南 (1)(转)

更新时间:2007年03月06日 00:00:00   作者:

正在看的ORACLE教程是:MySQL安全性指南 (1)(转)。 MySQL安全性指南

作 者: 晏子

作为一个MySQL的系统管理员,你有责任维护你的MySQL数据库系统的数据安全性和完整性。本文主要主要介绍如何建立一个安全的MySQL系统,从系统内部和外部网络两个角度,为你提供一个指南。

本文主要考虑下列安全性有关的问题:

为什么安全性很重要,你应该防范那些攻击?

服务器面临的风险(内部安全性),如何处理?

连接服务器的客户端风险(外部安全性),如何处理?

MySQL管理员有责任保证数据库内容的安全性,使得这些数据记录只能被那些正确授权的用户访问,这涉及到数据库系统的内部安全性和外部安全性。

内部安全性关心的是文件系统级的问题,即,防止MySQL数据目录(DATADIR)被在服务器主机有账号的人(合法或窃取的)进行攻击。如果数据目录内容的权限过分授予,使得每个人均能简单地替代对应于那些数据库表的文件,那么确保控制客户通过网络访问的授权表设置正确,对此毫无意义。

外部安全性关心的是从外部通过网络连接服务器的客户的问题,即,保护MySQL服务器免受来自通过网络对服务器的连接的攻击。你必须设置MySQL授权表(grant table),使得他们不允许访问服务器管理的数据库内容,除非提供有效的用户名和口令。

下面就详细介绍如何设置文件系统和授权表mysql,实现MySQL的两级安全性。

一、内部安全性-保证数据目录访问的安全

MySQL服务器通过在MySQL数据库中的授权表提供了一个灵活的权限系统。你可以设置这些表的内容,允许或拒绝客户对数据库的访问,这提供了你防止未授权的网络访问对你数据库攻击的安全手段,然而如果主机上其他用户能直接访问数据目录内容,建立对通过网络访问数据库的良好安全性对你毫无帮助,除非你知道你是登录MySQL服务器运行主机的唯一用户,否则你需要关心在这台机器上的其他用户获得对数据目录的访问的可能性。

以下是你应该保护的内容:

数据库文件。很明显,你要维护服务器管理的数据库的私用性。数据库拥有者通常并且应该考虑数据库内容的安全性,即使他们不想,也应该考虑时数据库内容公开化,而不是通过糟糕的数据目录的安全性来暴露这些内容。

日志文件。一般和更新日志必须保证安全,因为他们包含查询文本。对日志文件有访问权限的任何人可以监视数据库进行过的操作。

更要重点考虑的日志文件安全性是诸如GRANT和SET PASSWORD等的查询也被记载了,一般和更新日志包含有敏感查询的文本,包括口令(MySQL使用口令加密,但它在已经完成设置后才运用于以后的连接建立。设置一个口令的过程设计象GRANT或SET PASSWORD等查询,并且这些查询以普通文本形式记载在日志文件中)。如果一个攻击者犹如日文件的读权限,只需在日志文件上运行grep寻找诸如GRANT和PASSWORD等词来发现敏感信息。

显然,你不想让服务器主机上的其他用户有数据库目录文件的写权限,因为他们可以重写你的状态文件或数据库表文件,但是读权限也很危险。如果一个数据库表文件能被读取,偷取文件并得到MySQL本身,以普通文本显示表的内容也很麻烦,为什么?因为你要做下列事情:

在服务器主机上安装你自己“特制”的MySQL服务器,但是有一个不同于官方服务器版本的端口、套接字和数据目录。

运行mysql_install_db初始化你的数据目录,这赋予你作为MySQL root用户访问你的服务器的权限,所以你有对服务器访问机制的完全控制,它也建立一个test数据库。

将对应于你想偷取得表文件拷贝到你服务器的数据库目录下的test目录。

启动你的服务器。你可以随意访问数据库表,SHOW TABLES FROM test显示你有一个偷来的表的拷贝,SELECT *显示它们任何一个的全部内容。

如果你确实很恶毒,将权限公开给你服务器的任何匿名用户,这样任何人能从任何地方连接服务器访问你的test数据库。你现在将偷来的数据库表公布于众了。

在考虑一下,从相反的角度,你想让别人对你这样吗?当然不!你可以通过在数据库录下执行ls -l命令确定你的数据库是否包含不安全的文件和目录。查找有“组”和“其他用户”权限设置的文件和目录。下面是一个不安全数据目录的一部分列出:

% ls -l

total 10148

drwxrwxr-x  11  mysqladm wheel    1024 May  8 12:20 .

drwxr-xr-x  22  root     wheel     512 May  8 13:31 ..

drwx------   2  mysqladm mysqlgrp  512 Apr 16 15:57 menagerie

drwxrwxr-x   2  mysqladm wheel     512 Jan 25 20:40 mysql

drwxrwxr-x   7  mysqladm wheel     512 Aug 31  1998 sql-bench

drwxrwxr-x   2  mysqladm wheel    1536 May  6 06:11 test

drwx------   2  mysqladm mysqlgrp 1024 May  8 18:43 tmp

....

正如你看到的,有些数据库有正确的权限,而其他不是。本例的情形是经过一段时间后的结果。较少限制的权限由在权限设置方面比更新版本更不严格的较早版本服务器设置的(注意更具限制的目录menageria和tmp都有较近日期)。MySQL当前版本确保这些文件只能由运行服务器的用户读取。

让我们来修正这些权限,使得只用服务器用户可访问它们。你的主要保护工具来自于由UNIX文件系统本身提供的设置文件和目录属主和模式的工具。下面是我们要做的:

进入该目录

% cd DATADIR

设置所有在数据目录下的文件属主为由用于运行服务器的账号拥有(你必须以root执行这步)。在本文使用mysqladm和mysqlgrp作为该账号的用户名和组名。你可以使用下列命令之一改变属主:

# chown mysqladm.mysqlgrp .

# find . -follow -type d -print | xargs chown mysqladm.mysqlgrp

设置你的数据目录和数据库目录的模式使得他们只能由mysqladm读取,这阻止其他用户访问你数据库目录的内容。你可以用下列命令之一以root或mysqladm身份运行。

% chmod -R go-rwx  .

% find . -follow -type d -print | xargs chmod go-rwx

数据目录内容的属主和模式为mysqladm设置。现在你应该保证你总是以mysqladm用户运行服务器,因为现在这是唯一由访问数据库目录权限的用户(除root)。

在完成这些设置后,你最终应该得到下面的数据目录权限:

% ls -l

total 10148

drwxrwx---  11  mysqladm mysqlgrp 1024 May  8 12:20 .

drwxr-xr-x  22  root     wheel     512 May  8 13:31 ..

drwx------   2  mysqladm mysqlgrp  512 Apr 16 15:57 menagerie

drwx------   2  mysqladm

相关文章

1a1b05c64693fbf380aa1344a7812747.png

本篇文章是对oracle修改scott密码与解锁的方法进行了详细的分析介绍,需要的朋友参考下2013-05-05

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了Oracle表三种连接方式的使用,学习sql优化的朋友可以参考下2014-08-08

0ea3c7666119d5615e582f823fb3fad6.png

oracle下中文日期和英文日期的转换!2009-05-05

4f96a78db829b1556ff16de21e013c7a.png

经常需要在Oracle中检查是否需要重构索引,在此写了个示例语句,有此需求的朋友可以参考下,希望对大家有所帮助2013-08-08

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了Oracle与Mysql自动增长列(id)的区别,需要的朋友可以参考下2014-01-01

0c932a99bb7b6f23c937db507070cc7b.png

本篇文章是对Oracle字符集的查看与修改进行了详细的分析介绍,需要的朋友参考下2013-05-05

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了PLSQL Developer连接Oracle11g 64位数据库配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09

2d9f31f2af7b675a3d153d2b7f1035a7.png

这篇文章主要介绍了oracle代码的常见错误,需要的朋友可以参考下2014-07-07

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要介绍了oracle中add_months()函数及用法总结,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-08-08

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要为大家详细介绍了Oracle 11g DRCP连接方式的基本原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-09-09

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值