MySQL网络数据库系统的安全性研究doc.docx
- 文档编号:9429849
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:24
- 大小:467.72KB
MySQL网络数据库系统的安全性研究doc.docx
《MySQL网络数据库系统的安全性研究doc.docx》由会员分享,可在线阅读,更多相关《MySQL网络数据库系统的安全性研究doc.docx(24页珍藏版)》请在冰豆网上搜索。
MySQL网络数据库系统的安全性研究doc
MySQL网络数据库系统的安全性研究
摘要随着互联网的发展,在网络环境下数据库系统面临着很多的威胁,我们怎么去保证数据的保密性、完整性、可靠性和可用性是个值得去研究的问题。
虽然现在数据库管理系统自身所带的安全保护措施虽然能够对其安全起一定的保护作用,但仍然存在很多的漏洞,像:
帐号的空密码、固定的IP访问端口等,能够利用这些漏洞进行攻击,获得管理员的权限进而控制整个数据库系统。
从体系结构和软件层次上思考,将其分为网络安全机制、服务器操作系统安全机制、数据库管理系统安全机制和应用系统安全机制四层。
关键字网络数据库访问控制身份认证
ABSTRACT
WiththedevelopmentoftheInternet,undertheenvironmentofnetworkdatabasesystemisfacingalotofthreats,wehowtoensurethatthedataprivacy,integrity,reliabilityandusabilityisworthtostudytheproblem.Althoughnowdatabasemanagementsystemitselfwiththesecurityprotectionmeasuresfortheirsafety,however,canplayaprotectiveeffect,buttherearestillalotofvulnerabilities,like:
theemptypassword,fixedaccountofIPaccessports,etc,canusetheseloopholestoattackandgettheadministratorprivilegeandthencontrolthewholedatabasesystem.Fromthesystemstructureandsoftwarelevelthinking,whichisdividedintonetworksecuritymechanism,theserveroperatingsystemsecuritymechanism,thedatabasemanagementsystemsecuritymechanismandapplicationsystemsecuritymechanismfourlayers.
Keyword:
networkdatabaseaccesscontrolidentityauthentication
第一章绪论
1.1论文概述
今年来,随着基于Web的商业和信息系统的蓬勃发展,数据库已经越来越接近网络范畴。
这是在Web服务器上进行业务活动的必然结果,以前只能通过借个互相隔离的复杂业务逻辑层来访问数据库,现在则可以通过Web应用环境直接对数据库进行访问,这种方式与以往的方式相比流动性更强,但是安全性能就降低了。
这种方式的结果就是,数据库更容易受到攻击。
随着向无纸化业务环境持续进军的趋势,人们要在数据库系统中储存越来越多的敏感信息,因此数据库系统就成为越来越有价值的攻击目标。
今年来,数据库供应商竞相为大众提供功能丰富的数据库环境,大多数主要系统都支持XML、Web服务、分布式复制、操作系统集成以及其他一些有用的功能。
为什么要关注数据的安全能?
因为与以前相比,数据库更加容易遭受到攻击,它已经成为了更有价值的攻击目标,所以需要配置更多的安全功能,管理也要更加的谨慎。
随着对计算机操作系统,网络协议以及数据库系统的研究和应用越来越深入和广泛,网络数据库系统的安全越来越具有战略意义。
信息安全保障能力成为综合国力的一个重要部分。
现代社会的信息基本上都需要通过数据库来存储和通过网络来查询,这已经成为信息社会的一个标志。
今天,政府机构,军事部门和很多企业都把大量的信息存储到数据库系统上面,这样作为信息系统安全的重要部分,数据库的系统的安全性研究就越来越重要了。
1.2论文研究问题
这篇论文主要研究网络数据库系统的安全性问题,在我们讨论数据库安全研究现状之前,应该首先详细地说明下我们使用这个术语的意思。
通常,当使用“数据库安全研究”这个短语时,指的是对数据库系统安全中明确而实际的漏洞进行研究。
我们并不去研究个别安全事件,也不会对营销方面信赖或证明所做的相关努力进行讨论。
我们甚至也不会对数据安全中潜在的抽象概念进行学术研究,我们需要研究涉及真实系统中漏洞的发现。
我们主要把数据安全漏洞划分为以下几类:
(1)网络协议中未经验证的漏洞
(2)网络协议中经过验证的漏洞
(3)验证协议中的漏洞
(4)未经验证访问功能
(5)在固有的SQL元素中执行任意代码
(6)在可保安全的SQL元素中执行任意代码
(7)通过SQL注入进行特权提升
(8)本地特权提升的问题
1.3数据库网络安全研究现状
基于网络的数据库应用系统包括计算机网络,数据库系统,应用程序等很多方面。
主要分为两层含义:
第一层指的是系统运行安全,涉及:
法律、政策保护,如用户是否有合法的权利,政策是否允许等;物理控制的安全;硬件运行的安全;操作系统的安全;第二层是指系统信息方面的安全,包括:
用户口令字鉴别;用户存取权限的控制;数据存取权限和控制方式;审计跟踪;数据加密。
这些安全问题可以采用很对措施来解决吧,例如加强管理、采用备份等等。
数据库管理系统本身提供用户名、密码识别、视图、使用权限控制、审计等管理措施,大型的数据库管理系统Oracle、Sybase、SQL等都有这样的功能。
到目前为止,尽管人们已在数据库安全问题上做了很多的研究,但是还是有很多问题没有解决。
数据库安全体系结构的研究也才刚刚开始。
二十世纪九十年代以来,数据库安全的研究主要围绕着关系数据库系统的访问控制模型展开。
1.4论文研究意义以及研究工作
论文研究的重点工作是以应用为基础,对网络数据库系统的安全机制,尤其是利用RBAC思想实现安全的访问控制的问题进行研究。
全文基于“网络数据库系统安全机制分层”的观点,详细地从不同层次对网络数据库安全机制进行描述和探讨。
在WEB服务器的访问控制中,目前多是基于对单个用户的管理,或者简单的矩阵式管理,无法适应大型系统的管理需求。
如何利用现有的安全手段提高WEB服务器的安全,为网络数据库的安全访问提供一个可信的面向角色的平台。
本文对此做了探讨。
研究工作包括对MySQL数据库自身安全策略的分析,基于RBAC的客户端应用程式权限控制方法的研究和服务器端安全访问控制机制的研究。
谈到数据库安全的未来,有一些有趣的推论。
如果我们必须做出预测,那么预测的结果就是,在未来几年中,部分安全研究领域会开始关注数据库,这就会出现更多的补丁,以及对真实系统安全更好的理解,而我们都完全依赖与它。
1.5小结
本章简单的介绍了网络数据系统安全机制的研究方向和特点,讨论了论文研究的主要问题,主要讨论了数据库存在的各种漏洞,最后描述了本文的研究意义和研究的重点工作。
第二章网络数据库的安全和防护
2.1网络数据库安全概述
《计算机信息系统安全等级保护数据库管理技术要求》作为计算机信息系统安全等级保护技术要求系列标准之一,详细说明了计算机信息系统为了实现GB17859所提出的安全等级保护要求对数据库管理系统的安全技术要求。
根据网络数据库安全特点可以画出网络数据库安全模型:
图2.1网络数据库安全模型
2.1.1网络数据库系统的特点
(1)数据的结构化,数据的共享性好,数据的独立性好,数据存储粒度小,数据管理系统,为用户提供了友好的接口。
(2)数据模型是数据库系统的核心和基础,现有的数据库系统均是基于某种数据模型的。
(3)数据库管理系统是数据库系统的核心。
(4)数据库系统一般由数据库、数据库管理系统(DBMS)、应用系统、数据库管理员和用户构成。
数据库系统的基础和核心是
DBMS
(5)数据的语法关系到数据库的安全。
(6)客体之间的信息相关性可能比较大,我们应该去研究推理攻击怎么去防范。
2.1.2网络数据库系统的安全内容
(1)保障数据库系统的保密性:
(A)保证高级别的信息不会无缘无故的流向低级别的用户;
(B)访问数据库系统的用户要进行身份认证;
(C)要严格的控制数据库系统的访问;
(D)推理的攻击对数据库系统的影响;
(E)数据库系统必须要有可审计性;
(F)隐蔽信道攻击数据库系统时必须要做好充分的准备。
(2)保障数据库系统的完整性:
(A)保障数据库系统的物理完整性;
(B)保障数据库系统的逻辑完整性;
(C)保障数据库系统的元素完整性;
(3)数据库系统的可用性:
在用户需要的时候,授权用户能够在数据库系统中存储或者取出信息,访问信息的技术。
2.1.3网络数据库的安全要求
作为信息数据的存储地和处理地,数据库及管理系统在大网络环境下,应该能对信息数据的安全存储和安全访问提供服务,并具有安全防范的能力。
具体有以下几个方面:
(1)要求数据库具有保密性,就是非法用户访问数据库是能够被阻止,保护数据库中数据不被泄露出去。
(2)要求数据库具有完整性和一致性,不正确的操作或非法用户的恶意攻击对数据库进行时能被防止;
(3)要求数据库具有可用性,即能防止或者即使修复因软、硬件系统的错误所造成的数据库恶意破坏。
(4)要求能对数据库各种变化作跟踪记录,这样就是方便追查并防止否认对数据库的安全责任。
2.1.4网络数据库服务安全性
(1)数据库的完整性
数据的中心仓库就是数据库,要保证用户能信赖其数据的准确性,必须保证对其进行更新的人只有有管理权限的人才能进行。
有两种情况会影响数据库的完整性:
(A)破坏整个数据库。
(B)有些数据项不可读。
(2)元素的完整性
正确性和准确性是数据库元素的完整性的标志。
数据库管理员负责把正确的数据放入数据库。
数据库管理系统必须帮助用户再输入的时候能够发现错误,能够修正查出错误的数据。
(3)可审计性
数据库的审计可以协助维持数据库的完整性,一旦所有内容都启动且正在运行,就不应该在不管理的情况下让MySQL独自运行。
如果一级防范进行得充分,就会很好地防御攻击者,但是知道有人在试图攻击你将会很有帮助,即使他们没有成功。
关键是要时刻保持着警惕。
(4)访问控制
数据库系统的访问控制比较复杂。
相比于操作系统,操作系统的文件,是非相关的项目。
而数据库的记录、字段和元素都是有着关联的。
用户通过读其他文件是不能来确定某文件的内容,但是可以通过只读其他的数据库元素而确定一个元素,所以说推测数据是可能的。
(5)用户认证
严格的用户认证是保证数据库管理系统安全的重要措施,用户的这些认证基本都是在操作系统完成的认证的结果上再加上去的。
数据库管理系统必须作自己的认证。
(6)可用性
数据库系统对可用性的要求是很高的。
可用性有一个问题来自对两个用户请求的同一个记录的仲裁,另一个是要求扣发某些非保护数据以免泄露被保护的数据。
数据库应该随时保持可用性。
(7)数据库加密
传递信息和存储信息的重要保护手段市数据库加密。
保证对入侵事实上不能破是信息的加密;应快速存取数据是合法用户;空间和时间的消耗小。
应依据系统的具体需要进行控制对数据库是否需要加密和如何加密。
这是一个复杂的工作,去建设一个安全的基于网络的数据库应用系统,建立一个对安全策略的整体设计的模型是很有好处的。
为了保证系统的安全性,根据安全威胁的途径,实施安全任务和原则,考虑MySQL网络数据库管理系统的安全特性和应用程序安全特性,可以建立下面的模型进行安全控制。
图2.2系统安全防护模型
2.1.4网络数据库安全实施原则
①最小特权原则:
用户只拥有完成任务所需要的信息访问权限。
②最小泄密原则:
用户有责任也必须要保护自己的访问权内的信息。
③多重保护原则:
任何安全保护措施不是绝对的安全,都有可能被破坏。
所以说要建立一个多重的保护系统,有一个保护系统被攻破时,另外的保护系统还是能够保护数据库的安全。
④综合性原则:
在整个系统上全方位的进行安全措施的施展。
2.2小结
本章介绍了网络数据的的特点,安全内容,还有网络数据的安全要求等等。
将数据库系统安全问题分为保密性、完整性和可用性。
第三章MySQL数据库的安全和防护
3.1MySQl数据库概述
MySQl数据库声称是世界上最受欢迎的开放源数据,这是有很好地理由的。
MySQl是免费的,可运行在多种平台上。
它相当简单,容易配置,即使在很重的负荷下也能运行良好。
与其他的一些数据库相比,虽然MySQl非常简单,但是仍然有大量的各种与安全相关的配置问题。
MySQl是一个不同寻常的开源项目,其数据库服务器源代码属于瑞典的一家公司,以GPL和商业许可证发布。
随着商业许可证一起发布的还有一个支持程序包,该程序包非常重要,它使得其他公司可以将MySQl引擎插入到他们的产品中而无需开放其他产品源代码。
3.2MySQl数据库安全机制
本节重点讨论MySQl数据库的安全机制。
具体分为:
背景、访问控制、MySQl的用户、MySQl配置、例行审计等五个方面。
3.2.1背景
如果想了解攻击者,那么拥有最新的信息来源是非常重要的。
(1)MySQL数据库有一支非常敏感的安全团队,他们会将第三方查明的信息以及BUG报告反馈在文档中。
这些关于MySQL的安全文档是我们收集MySQL安全材料的第一选择。
(2)MySQL会频繁的发布新的版本。
当它发布新版本时,总会有一个非常综合的变更日志,它会详细地记录下新版本中新增加的或者是修改过的内容。
如果您正在一个项目的某个阶段,它会使您有时间决定DBMS,并且您正在关注MySQL的话,那么这将帮助您进一步理解哪个版本有哪些特色和旧版本中有哪些BUG。
(3)了解您的BUG!
有规律地检查脆弱数据库,如SecurityFocus以及ICAT,看是否有MySQLbug,并且订阅安全邮件列表。
基于您自己的特定环境,最好的方法就是一旦有信息公布就立即关注这些问题,而不是等待着补丁的发布。
3.2.2访问控制
MySQL为我们提供了一套简单而且有效的安全管理措施。
MySQL管理员保护数据库内容的安全,似的记录只能由经过严格认证的那些用户访问。
包括内部安全性和外部安全性。
(1)内部安全性
关心文件系统级的问题就是内部安全性,像保护MySQL数据库目录避免遭到拥有运行服务器的机器账号的用户攻击。
但是,如果数据内容的文件许可权过分随意,那么有人可以将对应这些表的文件进行简单的替换,这样的话,内部的安全性就不能很好地确保适当的建立对网络上客户机访问的授权表的控制。
数据库管理员应保护的内容包括:
数据库文件和日志文件。
(2)外部安全性
外部安全性关心客户机从外部连接的问题,像防止MySQL服务器遭受利用网络与服务器连接请求导致的数据库内容访问攻击。
MySQL有一套先进但是不是很标准的安全/授权系统,其授权机制的基本作用就是给某个主机上的用户对某个数据库对象一些权限。
3.2.3MySQL用户
一旦操作系统受到保护,就需要锁定MySQL本身。
这样做的一步就是准备用户账户和特权模型。
(1)为root@localhost账户设置一个“强健”的口令。
这样做的原因很明显;在MySQL中部存在多次输错口令后就将用户锁定的这种情况。
因此,对于MySQL用户名和口令的brute-force攻击是很有效的。
设置这样的“强健”口令能够帮助预防攻击者的猜测口令行为。
(2)删除所有非root的MySQL用户。
在初始的安装阶段,了解哪些用户能够访问数据库是很重要的。
最好的方法就是将这些用户从最核心处删除,然后建立您所需要的用户。
(3)将MySQL的root用户重命名为较复杂的名字
(4)如果启用了远程连接,那么在建立用户时要指定GRANT语句中的REQUIRESSL。
它会为特殊用户在连接时执行SSL加密。
这样做有两个好处:
第一,它保证用户所写的开发脚本不会其作用;第二,它保证了口令盘问\回答的顺序。
(5)为每个Web应用创建一个MySQL用户。
例如,可以有一个MySQL用户来更新表格,另一个低特权的用户来从表格中进行选择。
如果攻击者能够攻击某个应用程序,那么它将会调整组件的特权以使攻击者受到限制。
(6)确保MySQL用户都能受到IP地址限制,也能受到口令的限制。
一旦嵌入MySQL配置,那么考虑下限制用户的IP地址,是用户无法自行验证。
(7)如果账户不一定需要,不要随便给出账户特权。
如果必须与MySQL下的文件系统相互作用,那么考虑创建个单独的MySQL账户,这样就可以进行应用了。
(8)不要让任何人进入mysql.user表格。
因为如果他们能从用户表格中读取口令散列,那么就能以其他任意用户身份登录。
3.2.4MySQL配置
一旦用户和特权问题得以解决,那么还有其他一些配置方面的修改需要去做,以便提高安全系数。
(1)在MySQL文档中“generalquerylog”被认为是调试时的一个特色。
它并不记录这些查询的结果或返回的数据,但可以提供给我们线索谁在我们的数据库上做了什么,所以值得对该配置进行修改。
查询日志在默认情况下是禁用的,所以必须要用log来进行激活。
(2)通过在f文件中加入set-variable=local-infile=0来禁用LOADDATALOCALINFILE命令。
这个命令是LOADDATA语句的一个变体,它允许客户机直接从本地文件系统中的文件上传数据至MySQL表中。
这可能会被攻击者在某些情况下用以在客户机主机上阅读文件。
(3)删除任何不用的UDF。
UDF可能出乎意料地产生危险。
MyPHP、MyPERL、MyLUA等等都允许攻击者通过一些简单的脚本命令在服务器上大肆扩展自己的控制权。
如果您没有使用UDF,却在mysql.fuc表格中看见了它们,那么应当立即删除。
(4)如果仅仅正在使用本地连接,那么通过设置skip-networking选项来禁用TCP/IP连接。
因为有时远程主机没有必要去连接MySQL。
(5)根据具体的操作系统以及数据目录的配置情况,可以通过设置skip-symbolic-links选项来禁用symbolic链接。
MySQL的symbolic链接在Windows平台上以受限制的方式得到支持,限制包括创建一个名为“database”.sym的文件,以及创建通往数据库所有表格文件所在目录的路径。
在一些Unix系统上,symbolic链接会导致一些问题。
如果用户能够修改一个symbolic链接,那么它们将能够与文件系统相互作用,从而使真正的mysql用户也受到限制。
(6)删除默认的测试数据库。
默认情况下,测试数据库是存在的,应将该数据库删除。
它能访问的有效数据库名字可能对攻击者有用,所以默认的测试数据库应该删除。
(1)确保MySQL通信量是加密的。
在默认情况下,MySQL流量是不加密的。
这意味着如果一个攻击者能够在客户机和服务之间建立的连接上进行窃听,那么他就能获取用户名和口令盘问/回答序列。
3.2.5例行审计
一旦所有内容都启动且正在运行,就不应该在不管理的情况下让MySQL独自运行。
如果一级防范进行得充分,就会很好地防御攻击者,但是知道有人在试图攻击你将会很有帮助,即使他们没有成功。
关键是要时刻保持着警惕。
(1)检查日志
如果已经用log选项配置了查询日志,我们应该定期查看正在发生些什么事情。
特别是查看是否有一些常用的SQL注入攻击,并且使用load-file、以及outfile的文件系统语法。
定期检查错误日志也是很重要的,尽管它们提供的信息没有查询日志那么多。
记住,与日志进行交互时,日志数据是调试敏感的;如果正把它引入到其他存储库进行分析,记住查询日志可能包含用户名和口令。
(2)定期计算用户数,并且使用showgrants语句查看哪些特权授予了哪些用户。
例如:
mysql>selectuser,hostformmysql.user;
user|host
|Monty|
|root|localhost|
2rowsinset(0.00sec)
mysql>showgrantsfor`Monty`@`%`;
grantsforMonty@%
|GRANTUSAGEOM﹡.﹡TO`Monty`@`%`IDENTIFIEDBYPASSWORD
`5d2el9393cc5ef67`|
|GRANTSELECTON`test`.*TO`Monty`@`%`|
2rowsinset(0.00sec)
Mysql>showgrantsfor`root`@`localhost`;
|Grantsforroot@localhost|
|GRANTALLPRIVILEGESON*.*TO`root`@`localhost`IDENTIFIEDBYPASSWORD`5d2el9393cc5ef67`WINTHGRANTOPTION|
1rowinset(0.00sec)
我们可能发现在数据库中有两个用户,root@localhost和monty,其中monty能从任意主机登录但仅在测试数据库上有选择的特权。
另外,我们也可以发现monty和root有相同的口令。
(3)周期性地对口令散列进行一些快速检查。
MySQL中的散列值是没有加盐的,这意味着同样的口令总是散列到同一个值。
如果使用
Mysql>selectuser、passwordfrommysql.user;
|User|password
|Root|5d2el9393cc5ef6|
|Monty|5d2el9393cc5ef67|
2rowsinset(0.00sec)
就会看到哪些账户拥有相同的口令。
3.3MySQL数据库的安全实施
本小节对MySQL数据库的安全方面的用户和访问控制方面做研究。
运用SQL语言在MySQL应用软件中做了一些简单的实现。
运用的是mysql-5.1.37-win32。
3.3.1mysql-5.1.37的登录
服务器:
localhost端口:
3306连接,类型Direct字符集:
utf8。
图3.1mysql-5.1.37的登录
图3.2用户登录
3.3.2MySQl用户
CREATEUSER用于创建新的MySQL账户。
要使用CREATEUSER,您必须拥有mysql数据库的全局CREATEUSER权限,或拥有INSERT权限。
对于每个账户,CREATEUSER会在没有权限的mysql.user表中创建一个新记录。
如果账户已经存在,则出现错误。
使用自选的IDENTIFIEDBY子句,可以为账户给定一个密码。
user值和密码的给定方法和GRANT语句一样。
特别是,要在纯文本中指定密码,需忽略PASSWORD关键词。
要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD。
首先,使用MySQL程序以MySQLroot用户来连接服务器:
shell>MySQL--user=rootMySQL
以root连接到服务器上后,可以添加新账户。
下面的语句使用GRANT来设置四个新账户:
mysql>GRANTALLPRIVIL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 网络 数据库 系统 安全性 研究 doc