




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录 正文 1 1 研究的背景 1 2 研究的目的和意义 1 3 研究的内容 2 3 1 MySQL 数据库的安全配置 2 3 1 1 系统内部安全 2 3 1 2 外部网络安全 4 3 2 MySQL 用户帐号管理 8 3 3 MD5 加密 11 3 3 1 数据库中数据加密的原因 11 3 3 2 加密方式 12 3 3 3 Md5 加密原理 12 3 3 4 具体算法 13 4 总结 14 参考文献 15 附录 15 塔里木大学信息工程学院计算机网络安全基础大作业 第 1 页 共 17 页 MySQL 数据库安全管理 摘要摘要 MySQL 是完全网络化的跨平台关系型数据库系统 同时是具有客户机 服务器 体系结构的分布式数据库管理系统 它具有功能强 使用简便 管理方便 运行速度 快 安全可靠性强等优点 用户可利用许多语言编写访问 MySQL 数据库的程序 特别 是与 PHP 更是黄金组合 运用十分广泛 由于 MySQL 是多平台的数据库 它的默认配 置要考虑各种情况下都能适用 所以在用户自己的使用环境下应该进行安全加固 用 户有责任维护 MySQL 数据库系统的数据安全性和完整性 关键词关键词 MYSQLMYSQL 数据库 数据库安全 访问控制 数据库 数据库安全 访问控制 MD5MD5 加密加密 正文正文 MySQL 数据库的安全配置必须从两个方面入手 系统内部安全和外部网络安全 MySQL 用户帐号管理主要用 grant 授权 和 revoke 撤权 两个 SQL 指令来管理 MD5 在实际中的一个应用就是对数据库中的用户信息加密 当用户创建一个新的账号或者 密码 他的信息不是直接保存到数据库 而是经过一次加密以后再保存 这样 即使 这些信息被泄露 也不能立即理解这些信息的真正含义 有效的提高了前台和后台的 数据安全性 1 研究的背景 随着计算机技术和信息技术的迅速发展 数据库的应用十分广泛 深入到各个领 域 但随之而来产生了数据的安全问题 近年来 数据库供应商竞相为大众提供功能丰富的数据库环境 大多数主要系统 都支持 XML Web 服务 分布式复制 操作系统集成以及其他一些有用的功能 与以 前相比 数据库更加容易遭受到攻击 它已经成为了更有价值的攻击目标 所以需要 配置更多的安全功能 管理也要更加的谨慎 2 研究的目的和意义 本文对 MySQL 数据库的安全配置 MySQL 用户帐号管理以及使用 MD5 加密提高数 据库前台和后台数据安全性做了详细研究 由于 MySQL 是多平台的数据库 它的默认配置要考虑各种情况下都能适用 所以 用户需要根据具体的环境进行相关的安全配置 通过本文的研究 对如何提高数据库 的安全性有很大的帮助 塔里木大学信息工程学院计算机网络安全基础大作业 第 2 页 共 17 页 3 研究的内容 3 1 MySQL 数据库的安全配置 3 1 1 系统内部安全 MySQL 安装好 运行了 mysql db install 脚本以后就会建立数据目录和初始化数 据库 如果我们用 MySQL 源码包安装 而且安装目录是 usr local mysql 那么数据 目录一般会是 usr local mysql var 数据库系统由一系列数据库组成 每个数据库 包含一系列数据库表 MySQL 是用数据库名在数据目录建立建立一个数据库目录 各 数据库表分别以数据库表名作为文件名 扩展名分别为 MYD MYI frm 的三个文件放 到数据库目录中 MySQL 的授权表给数据库的访问提供了灵活的权限控制 但是如果本地用户拥有 对库文件的读权限的话 攻击者只需把数据库目录打包拷走 然后拷到自己本机的数 据目录下就能访问窃取的数据库 所以 MySQL 所在的主机的安全性是最首要的问题 如果主机不安全 被攻击者控制 那么 MySQL 的安全性也无从谈起 其次就是数据目 录和数据文件的安全性 也就是权限设置问题 从 MySQL 主站一些老的 binary 发行版来看 3 21 xx 版本中数据目录的属性是 775 这样非常危险 任何本地用户都可以读数据目录 所以数据库文件很不安全 3 22 xx 版本中数据目录的属性是 770 这种属性也有些危险 本地的同组用户既能 读也能写 所以数据文件也不安全 3 23 xx 版本数据目录的属性是 700 这样就比 较好 只有启动数据库的用户可以读写数据库文件 保证了本地数据文件的安全 如果启动 MySQL 数据库的用户是 mysql 那么像如下的目录和文件的是安全的 请注意数据目录及下面的属性 shell ls l usr local mysql total 40 drwxrwxr x 2 root root 4096 Feb 27 20 07 bin drwxrwxr x 3 root root 4096 Feb 27 20 07 include drwxrwxr x 2 root root 4096 Feb 27 20 07 info drwxrwxr x 3 root root 4096 Feb 27 20 07 lib drwxrwxr x 2 root root 4096 Feb 27 20 07 libexec drwxrwxr x 3 root root 4096 Feb 27 20 07 man 塔里木大学信息工程学院计算机网络安全基础大作业 第 3 页 共 17 页 shell ls l usr local mysql var total 8 drwx 2 mysql mysql 4096 Feb 27 20 08 mysql drwx 2 mysql mysql 4096 Feb 27 20 08 test shell ls l usr local mysql var mysql total 104 rw 1 mysql mysql 0 Feb 27 20 08 columns priv MYD rw 1 mysql mysql 1024 Feb 27 20 08 columns priv MYI rw 1 mysql mysql 8778 Feb 27 20 08 columns priv frm rw 1 mysql mysql 302 Feb 27 20 08 db MYD rw 1 mysql mysql 3072 Feb 27 20 08 db MYI rw 1 mysql mysql 8982 Feb 27 20 08 db frm rw 1 mysql mysql 0 Feb 27 20 08 func MYD rw 1 mysql mysql 1024 Feb 27 20 08 func MYI rw 1 mysql mysql 8641 Feb 27 20 08 func frm rw 1 mysql mysql 0 Feb 27 20 08 host MYD rw 1 mysql mysql 1024 Feb 27 20 08 host MYI rw 1 mysql mysql 8958 Feb 27 20 08 host frm rw 1 mysql mysql 0 Feb 27 20 08 tables priv MYD rw 1 mysql mysql 1024 Feb 27 20 08 tables priv MYI 如果这些文件的属主及属性不是这样 请用以下两个命令修正之 shell chown R mysql mysql usr local mysql var shell chmod R go rwx usr local mysql var 用 root 用户启动远程服务一直是安全大忌 因为如果服务程序出现问题 远程 攻击者极有可能获得主机的完全控制权 MySQL 从 3 23 15 版本开始时作了小小的改 动 默认安装后服务要用 mysql 用户来启动 不允许 root 用户启动 如果非要用 root 用户来启动 必须加上 user root 的参数 safe mysqld user root 塔里木大学信息工程学院计算机网络安全基础大作业 第 5 页 共 17 页 图 3 1 2 1 Unix 平台的 user 表 Windows 平台的 user 表是这样的 mysql use mysql Database changed mysql select Host User Password Select priv Grant priv from user 图 3 1 2 2 Windows 平台的 user 表 实际上 Unix 平台的 MySQL 默认只允许本机才能连接数据库 但是缺省 root 用户 口令是空 所以当务之急是给 root 用户加上口令 给数据库用户加口令有三种方法 在 shell 提示符下用 mysqladmin 命令来改 root 用户口令 shell mysqladmin uroot password test 这样 MySQL 数据库 root 用户的口令就被改成 test 了 用 set password 修改口令 mysql set password for root localhost password test 这时 root 用户的口令就被改成 test 了 直接修改 user 表的 root 用户口令 mysql use mysql mysql update user set password password test where user root mysql flush privileges 这样 MySQL 数据库 root 用户的口令也被改成 test 了 其中最后一句命令 塔里木大学信息工程学院计算机网络安全基础大作业 第 6 页 共 17 页 flush privileges 的意思是强制刷新内存授权表 否则用的还是缓冲中的口令 这时 非法用户还可以用 root 用户及空口令登陆 直到重启 MySQL 服务器 我们还看到 user 为空的匿名用户 虽然它在 Unix 平台下没什么权限 但为了安 全起见我们应该删除它 mysql delete from user where user Windows 版本 MySQL 的 user 表有很大不同 我们看到 Host 字段除了 localhost 还有是 这里 的意思是允许任意的主机连接 MySQL 服务器 这是非常不安全的 给 攻击者造成可乘之机 我们必须删除 Host 字段为 的记录 mysql delete from user where host 默认 root 用户的空密码也是必须修改 三种修改方法和 Unix 平台一样 对 user 表操作以后不要忘了用 flush privileges 来强制刷新内存授权表 这样才能生效 MySQL 的 5 个授权表 user db host tables priv 和 columns priv 提供非常 灵活的安全机制 从 MySQL 3 22 11 开始引入了两条语句 GRANT 和 REVOKE 来创建和 删除用户权限 可以方便的限制哪个用户可以连接服务器 从哪里连接以及连接后可 以做什么操作 在 3 22 11 版本以前的 MySQL 授权机制不完善 和新版本也有较大的不同 建议 升级到最新版本的 MySQL 我们先来了解授权表的结构 MySQL 授权表的结构与内容 mysql desc user user 表是 5 个授权表中最重要的一个 列出可以连接服务器的用户及其加密口令 并且它指定他们有哪种全局 超级用户 权限 在 user 表启用的任何权限均是全局 权限 并适用于所有数据库 所以我们不能给任何用户访问 mysql user 表的权限 权限说明 塔里木大学信息工程学院计算机网络安全基础大作业 第 7 页 共 17 页 图 3 1 2 3 权限说明 mysql desc db 图 3 1 2 4 数据库 db 表列出数据库 而用户有权限访问它们 在这里指定的权限适用于一个数据库 中的所有表 mysql desc host 塔里木大学信息工程学院计算机网络安全基础大作业 第 8 页 共 17 页 图 3 1 2 5 host 表 host 表与 db 表结合使用在一个较好层次上控制特定主机对数据库的访问权限 这可 能比单独使用 db 好些 这个表不受 GRANT 和 REVOKE 语句的影响 3 2 MySQL 用户帐号管理 MySQL 用户帐号管理主要用 grant 授权 和 revoke 撤权 两个 SQL 指令来管理 这两个指令实质是通过操作 user 连接权限和全局权限 db 数据库级权限 tables priv 数据表级权限 columns priv 数据列级权限 四个权限表来分配权限 的 host 权限表不受这两个指令影响 下面将会详细介绍用户权限管理的内容 GRANT 语法说明 GRANT privileges columns privileges 表示授予的权限 columns 表示作 用的列 可选 ON what 设置权限级别 全局级 数据库级 数据表级和数据列级 TO account 权限授予的用户 用 user name host name 这种用户名 主 机名格式 IDENTIFIED BY password 设置用户帐号密码 REQUIRE encryption requirements 设置经由 SSL 连接帐号 WITH grant or resource management options 设置帐号的管理和资源 连 接服务器次数或查询次数等 选项 示例 mysql grant all on db to test localhost identified by test 塔里木大学信息工程学院计算机网络安全基础大作业 第 9 页 共 17 页 上例运行后的效果是 test 用户只能通过 test 密码从本机访问 db 数据库 mysql grant all on db to test identified by test 上例运行后的效果是 test 用户可通过 test 密码从任意计算机上访问 db 数 据库 代表任意字符 代表一个任意字符 主机名部份还可以是 IP 地址 表 3 2 1 访问权限表 权限权限说明 CREATE TEMPORARY TABLES 创建临时数据表 EXECUTE 执行存储过程 暂不支持 FILE 操作系统文件 GRANT OPTION 可把本帐号的权限授予其它用户 LOCK TABLES 锁定指定数据表 PROCESS 查看运行着的线程信息 RELOAD 重新加载权限表或刷新日志及缓冲区 REPLICATION CLIENT 可查询主 从服务器主机名 REPLICATION SLAVE 运行一个镜像从服务器 SHOW DATABASES 可运行 SHOW DATABASES 指令 SHUTDOWN 关闭数据库服务器 SUPER 可用 kill 终止线程以及进行超级用户操作 ALTER 可修改表和索引的结构 CREATE 创建数据库和数据表 DELETE 删除数据表中的数据行 DROP 删除数据表和数据行 INDEX 建立或删除索引 INSERT 插入数据行 REFERENCES 暂时不支持 SELECT 查询数据行 UPDATE 更新数据行 ALL 所有权限 但不包括 GRANT 塔里木大学信息工程学院计算机网络安全基础大作业 第 10 页 共 17 页 权限权限说明 USAGE 无权限权限 表 3 2 2 权限作用范围 由 ON 子句设置 权限限定符作用范围 ON 全局级权限 作用于所有数据库 ON 全局级权限 若未指定默认数据库 其作用范围是所 有数据库 否则 其作用范围是当前数据库 ON db name 数据库级权限 作用于指定数据库里的所有数据表 ON db name tbl name 数据表级权限 作用于数据表里的所有数据列 ON tbl name 数据表级权限 作用于默认数据库中指定的数据表里 的所有数据列 USAGE 权限的用法 修改与权限无关的帐户项 如 mysql GRANT USAGE ON TO account IDENTIFIED BY new password 修 改密码 mysql GRANT USAGE ON TO account REQUIRE SSL 启用 SSL 连接 mysql GRANT USAGE ON TO account WITH MAX CONNECTIONS PER HOUR 10 设置资源 拥有 WITH GRANT OPTION 权限的用户可把自已所拥用的权限转授给其他用户 如 mysql GRANT ALL ON db TO test IDENTIFIED BY password WITH GRANT OPTION 这样 test 用户就有权把该权限授予其他用户 限制资源使用 如 mysql GRANT ALL ON db TO account IDENTIFIED BY password WITH MAX CONNECTIONS PER HOUR 10 MAX QUERIES PER HOUR 200 MAX UPDATES PER HOUR 50 允许 account 用户每小时最多连接 20 次服务器 每小时最多发出 200 条查询命 塔里木大学信息工程学院计算机网络安全基础大作业 第 11 页 共 17 页 令 其中更新命令最多为 50 条 默认都是零值 即没有限制 FLUSH USER RESOURCES 和 FLUSH PRIVILEGES 可对 资源限制计数器清零 REVOKE 语法说明 mysql REVOKE privileges columns ON what FROM account 示例 mysql REVOKE SELECT ON db FROM test localhost 删除 test 帐号从本机查询 db 数据库的权限 REVOKE 可删除权限 但不能删除帐号 即使帐号已没有任何权限 所以 user 数 据表里还会有该帐号的记录 要彻底删除帐号 需用 DELETE 命令删除 user 数据表的 记录 如 mysql u root p mysql use mysql mysql DELETE FROM user where User test and Host localhost mysql fulsh privileges REVOKE 不能删除 REQUIRE 和资源占用的配置 他们是要用 GRANT 来删除的 如 GRANT USAGE ON TO account REQUIRE NONE 删除 account 帐号的 SSL 连接选项 3 3 MD5 加密 3 3 1 数据库中数据加密的原因 现在网络上一般的网站 稍微完善一点的 往往都需要用户先注册 提供诸如电 子邮件 账号 密码等信息以后 成为网站栏目的注册用户 才可以享受网站一些特 殊栏目提供的信息或者服务 比如免费电子邮件 论坛 聊天等 都需要用户注册 而对于电子商务网站 比如 igo5 等大型电子商务网站 用户需要购买商品 就一定 需要详细而准确的注册 而这些信息 往往是用户很隐秘的信息 比如电话 电子邮 件 地址等 所以 注册信息对于用户和网站都是很重要的资源 不能随意透露 更 加不能存在安全上的隐患 一般将用户资料直接保存在数据库中 并没有进行任何的保密措施 对于一些文 塔里木大学信息工程学院计算机网络安全基础大作业 第 12 页 共 17 页 件型数据库比如 Access 等 如果有人得到这个文件 岂不是所有的资料都泄露无疑 更加重要的是 如果一个不负责任的网管 不需要任何技术手段 就可以查看网站中 的任何资料 如果我们的用户信息在数据库中没有加密 对于网管而言 查看这些信 息是太简单了 所以 为了增加安全性 我们有必要对数据库中的资料进行加密 这 样 即使有人得到了整个数据库 如果没有解密算法 也一样不能查看到数据库中的 用户信息 3 3 2 加密方式 在现阶段 我们一般认为存在两种加密方式 单向加密和双向加密 双向加密是 加密算法中最常用的 它将我们可以直接理解的明文数据加密为我们不可直接理解的 密文数据 然后 在需要的时候 可以使用一定的算法将这些加密以后的密文解密为 原来可以理解的明文 双向加密适合于隐秘通讯 单向加密刚好相反 只能对数据进 行加密 也就是说 没有办法对加密以后的数据进行解密 MD5 就是采用单向加密的加密算法 对于 MD5 而言 有两个特性是很重要的 第 一是任意两段明文数据 加密以后的密文不能是相同的 第二是任意一段明文数据 经过加密以后 其结果必须永远是不变的 前者的意思是不可能有任意两段明文加密 以后得到相同的密文 后者的意思是如果我们加密特定的数据 得到的密文一定是相 同的 3 3 3 Md5 加密原理 对 MD5 算法简要的叙述可以为 MD5 以 512 位分组来处理输入的信息 且每一分 组又被划分为 16 个 32 位子分组 经过了一系列的处理后 算法的输出由四个 32 位 分组组成 将这四个 32 位分组级联后将生成一个 128 位散列值 在 MD5 算法中 首先需要对信息进行填充 使其字节长度对 512 求余的结果等于 448 因此 信息的字节长度 Bits Length 将被扩展至 N 512 448 即 N 64 56 个 字节 Bytes N 为一个正整数 填充的方法如下 在信息的后面填充一个 1 和无数 个 0 直到满足上面的条件时才停止用 0 对信息的填充 然后 在在这个结果后面附 加一个以 64 位二进制表示的填充前信息长度 经过这两步的处理 现在的信息字节 长度 N 512 448 64 N 1 512 即长度恰好是 512 的整数倍 这样做的原因是为满 塔里木大学信息工程学院计算机网络安全基础大作业 第 13 页 共 17 页 足后面处理中对信息长度的要求 MD5 中有四个 32 位被称作链接变量 Chaining Variable 的整数参数 他们分 别为 A 0 x01234567 B 0 x89abcdef C 0 xfedcba98 D 0 x76543210 当设置好这四个链接变量后 就开始进入算法的四轮循环运算 循环的次数是信 息中 512 位信息分组的数目 将上面四个链接变量复制到另外四个变量中 A 到 a B 到 b C 到 c D 到 d 主循环有四轮 MD4 只有三轮 每轮循环都很相似 第一轮进行 16 次操作 每 次操作对 a b c 和 d 中的其中三个作一次非线性函数运算 然后将所得结果加上第 四个变量 文本的一个子分组和一个常数 再将所得结果向右环移一个不定的数 并 加上 a b c 或 d 中之一 最后用该结果取代 a b c 或 d 中之一 以一下是每次操作中用到的四个非线性函数 每轮一个 F X Y Z X try md5 MessageDigest getInstance MD5 catch Exception e System out println e toString e printStackTrace return char charArray inStr toCharArray byte byteArray new byte charArray length for int i 0 i charArray length i byteArray i byte charArray i byte md5Bytes md5 digest byteArray StringBuffer hexValue new StringBuffer for int i 0 i md5Bytes length i int val int md5Bytes i if val 16 hexValue append 0 hexValue append Integer toHexString val return hexValue toString 为了再次增加安全性 可以对 MD5 进行异或运算 具体算法见附录 运行结果如下 4 总结 本文主要对 MySQL 数据库的安全配置 MySQL 用户帐号管理以及使用 MD5 加密提 高数据库前台和后台数据安全性做了详细研究 通过本次论文的编写 让我了解了 MySQL 数据库的安全配置 用户账号管理 增 删用户等知识以及如何使用 MD5 加密地数据库中的数据进行加密 在今后的软件开发 中 我知道如何尽可能的提高数据库的安全性 保证资料不被窃取 由于 MySQL 数据库是个相当复杂的管理数据的系统 有很多问题我没有实际操作 有很多实际操作结果与书籍中的不一致 还有很多问题书籍中没有详细讲解等等 所 以这次论文只做了简单研究 有些地方讲解的不清楚 这都是本次论文的不足之处 塔里木大学信息工程学院计算机网络安全基础大作业 第 15 页 共 17 页 我希望通过以后的进一步学习 能够更好的掌握 MySQL 数据库的安全管理 参考文献 参考文献 1 唐汉明 兰丽华 关宝军等 MySQL 数据库优化与管理维护 北京 人民邮电出版社 2008 年 第 25 45 页 2 David Litchfield Chris Anley 著 闫雷鸣 刑苏霄 翻译 数据库黑客大曝光 出 版地 北京 清华大学出版社 2006 年 第 222 266 页 3 朱小平 网络数据库安全技术的研究与实现 同济大学硕士论文 2006 年 第 5 34 页 4 高延玲 网络数据库安全研究与应用 西安电子科技大学硕士论文 2003 年 第 8 33 页 5 美 Ian Gilfillan 著 王军 等译 MySQL4 从入门到精通 出版地 北京 电子工业出版 社 200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水彩蛋糕基础知识培训课件
- 2025年服务业员工因工死亡赔偿及后续保障协议书
- 2025年绿色家居装饰工程服务外包全面合作协议
- 2025年度智能网络安全监测与维护服务合同
- 2025年环保监测设备采购、安装与维护服务合同
- 2025年度赛车场赛车租赁、赛道赛事策划及营销推广服务合同
- 2025年度特殊药品安全配送与仓储服务全面合作协议
- 2025年咖啡馆装饰工程及室内外环境优化合同
- 水彩笔风景画课件
- 文化创意产业版权保护与维权咨询合作协议
- 2025年发展对象考试题题库及答案
- 2025年医疗质量安全核心制度及病历书写规范考核试题(附答案)
- 2025年电力交易员(高级工)考试复习题库(含答案)
- 2025北京广播电视台校园招聘17人笔试备考题库及参考答案详解
- 冷库安全基本知识培训课件
- DB11T 1481-2024 生产经营单位安全事故应急预案评审规范
- MIR睿工业:2025年中国协作机器人产业发展蓝皮书
- 直销管理条例课件介绍
- 养老护理员职业道德培训
- 氧气安全培训课件
- 常见意外伤害的救治与护理
评论
0/150
提交评论