首頁 資料庫 mysql教程 MySQL安全性指南 (1)(转)_MySQL

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

Jun 01, 2016 pm 01:52 PM
如何 安全性 系統

  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 mysqlgrp  512 Jan 25 20:40 mysql
drwx------   7  mysqladm mysqlgrp  512 Aug 31  1998 sql-bench
drwx------   2  mysqladm mysqlgrp 1536 May  6 06:11 test
drwx------   2  mysqladm mysqlgrp 1024 May  8 18:43 tmp

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CUDA之通用矩陣乘法:從入門到熟練! CUDA之通用矩陣乘法:從入門到熟練! Mar 25, 2024 pm 12:30 PM

CUDA之通用矩陣乘法:從入門到熟練!

华为乾崑 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载 华为乾崑 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载 Jul 30, 2024 pm 02:17 PM

华为乾崑 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载

蘋果16系統哪個版本最好 蘋果16系統哪個版本最好 Mar 08, 2024 pm 05:16 PM

蘋果16系統哪個版本最好

Golang開發的安全性挑戰:如何避免被利用用於病毒製作? Golang開發的安全性挑戰:如何避免被利用用於病毒製作? Mar 19, 2024 pm 12:39 PM

Golang開發的安全性挑戰:如何避免被利用用於病毒製作?

常用常新!華為Mate60系列升級HarmonyOS 4.2:AI雲端增強、小藝方言太好用了 常用常新!華為Mate60系列升級HarmonyOS 4.2:AI雲端增強、小藝方言太好用了 Jun 02, 2024 pm 02:58 PM

常用常新!華為Mate60系列升級HarmonyOS 4.2:AI雲端增強、小藝方言太好用了

Linux與Windows系統中cmd指令的差異與相似之處 Linux與Windows系統中cmd指令的差異與相似之處 Mar 15, 2024 am 08:12 AM

Linux與Windows系統中cmd指令的差異與相似之處

Oracle資料庫中修改系統日期方法詳解 Oracle資料庫中修改系統日期方法詳解 Mar 09, 2024 am 10:21 AM

Oracle資料庫中修改系統日期方法詳解

PHP抽獎系統設計與實作詳解 PHP抽獎系統設計與實作詳解 Mar 01, 2024 am 09:51 AM

PHP抽獎系統設計與實作詳解

See all articles