MySQL服务器内部安全数据目录访问

MySQL服务器内部安全数据目录访问,第1张

MySQL服务器内部安全数据目录访问,第2张

作为MySQL管理员,您可以做些什么来维护MySQL安装的安全性和完整性?在本文中,我们将更详细地讨论以下与安全相关的问题:
为什么安全很重要,我们应该警惕哪些攻击?

服务器主机中的用户会给你带来哪些风险(内部安全),你能做些什么?

连接到网络上的服务器的客户端会给你带来哪些风险(外部安全),你能做些什么?

MySQL管理员有责任保护数据库内容的安全,这样记录只能被那些经过严格认证的用户访问。这包括内部安全和外部安全。

内部安全性关注文件系统级的问题,例如保护MySQL数据目录免受使用运行服务器的机器的帐户的用户的攻击。但是,如果数据目录内容的文件权限过于随意,有人可以简单地替换这些表对应的文件,那么内部安全就无法确保对网络上客户端访问的授权表进行适当的控制。

外部安全关注的是客户端从外部的连接,比如防止MySQL服务器受到服务器通过网络访问数据库内容的连接请求的攻击。建立MySQL授权表,使它们不允许访问由服务器管理的数据库(除非提供有效的名称和密码)。

本文就应该知道的问题提供了指导,并解释了如何在内部和外部级别防止未经身份验证的访问。

Mysql服务器通过MySQL数据库中的授权表提供了灵活的权限体系。您可以设置这些表的内容,以允许或拒绝客户端访问数据库。这为未经验证的网络访问数据提供了安全性。但是,如果服务器主机上的其他用户可以直接访问数据目录的内容,他们将无法为访问数据的网络建立良好的安全性。除非您知道您是唯一一个在运行MySQL server的机器上注册的人,否则您需要担心这台机器上的其他用户可能获得对数据目录的访问权。

以下是您想要保护的内容:

数据库文件。显然想维护服务器维护的数据库的保密性。数据库的所有者通常必须考虑数据库内容的排他性。就算他们不考虑,最多也就是把数据库的内容公开,不会因为数据库目录安全性低而让那些内容泄露。

日志文件。常规日志和更新日志必须是安全的,因为它们包含查询文本。这非常有趣,因为任何具有日志文件访问权限的人都可以监视数据库中发生的事务。

与日志文件相关的一个更特殊的安全问题是,像GRANT和SET PASSWORD这样的查询都记录在日志中。通用和更新日志文件包含敏感的查询文本,包括密码(MySQL使用密码加密,但仅适用于密码设置后的连接建立。设置密码的过程包含在诸如GRANT、INSERT或SET PASSWORD等查询中,但这些查询是以纯文本形式记录的。如果攻击者拥有对日志的读取权限,他只能通过对日志中的GRANT或PASSWORD之类的词运行grep来找到敏感信息。

显然,您不希望服务器主机上的其他用户拥有对数据目录文件的写访问权限,因为这样他们就可以破坏状态文件或数据库表。但是阅读访问也是危险的。如果表文件是可读的,那么窃取文件并让MySQL以纯文本形式显示表内容是很容易的。它可以按照下列步骤进行:

1)在服务器主机上安装您的MySQL服务器,但使用与官方服务器不同的端口、套接字和数据文件。

2)运行mysql_install_db来初始化您的数据目录。这将允许您作为MySQL的根用户访问服务器,因此您将完全控制服务器访问机制。它还建立了一个测试数据库。

3)把你要偷换的表对应的文件复制到服务器数据目录下的test子目录中。


4)启动犯罪服务器。您可以随意访问这些表。SHOW TABLES FROM test将显示您有被盗表的备份,SELECT *将显示这些表的所有内容。

5)更糟糕的是,开放服务器匿名用户账号的权限,这样任何人都可以从任何地方连接到服务器访问你的测试数据库。现在,你已经向全世界公布了这些失窃的手表。

想想刚才的情况,再来个天翻地覆。你希望有人这样对你吗?当然不是。

正如您所看到的,一些数据库目录具有正确的权限,而另一些则没有。这种情况是时间造成的。旧服务器创建的权限限制较少,旧服务器在设置权限方面没有新服务器严格(请注意,限制较多的目录menager和t m p都有更新的日期)。MySQL的当前版本确保这些文件只对运行服务器的用户可读。

让我们安排这些权限,以便只有服务器的用户可以访问它们。主要的保护手段来自于UNIX文件系统本身提供的工具,可以设置文件和目录的所有权和方式。操作步骤如下:

1)导航到数据目录:% cd数据目录

2)将数据目录中所有文件的所有权设置为由运行服务器的帐户拥有(此步骤必须以root身份执行)。在本书中,作者使用mysqladm和mysqlg r p作为该帐户的用户名和组名。可以使用以下命令之一修改所有权:


# chown-R MySQL admin . MySQL grp
# find。-follow-type d-print | xargs chown MySQL admin . MySQL grp

3)修改数据目录和数据库目录的方式,使它们只对mysqladm可读。这可以防止其他用户访问数据目录的内容。您可以使用以下命令之一来实现这一点,这些命令可以作为root或mysqladm运行(后者更好,可以最大限度地减少作为root运行的命令数量):


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

4)为mysqladm用户设置数据目录内容的所有权和方式。现在,您应该确保始终以mysqladm的身份运行,因为现在是用户有权访问这个数据目录。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » MySQL服务器内部安全数据目录访问

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情