手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mysql>列表

MySQL安全性指南 (1)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

作为一个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文档系统本身提供的配置文档和目录属主和模式的工具。下面是我们要做的:

进入该目录

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!