数据库安全小议

数据库安全目前是安全从业者讨论的重要主题之一。随着越来越多的突发事件发生,是时候采取一些行动了。

安全的数据库应当为成员的访问提供了有效控制与保护,同时还能保障所有的数据质量。我们必须充分了解数据库安全的相关挑战并努力提供一个解决方案。针对数据库的威胁取决于很多因素,例如互联网安全、物理安全、加密、身份验证等等。由于所处组织的不同,数据的敏感度也大不相同。数据库中可能是客户数据、财务记录以及许多其他类型的具有价值的信息。

因此保护这些数据免受内部或者外部的攻击,都至关重要。进行定期审核来检查数据库中存在的缺陷和漏洞是非常必要的,由于在程序设计时忽略了安全因素,或因没有及时更新、使用过期版本的应用程序而出现一些缺陷。了解数据库的结构,并在初始阶段就识别出潜在的威胁是非常重要的。

在我们保护数据库时应当考虑如下三个要点:

●保护数据免受未经授权的访问;

●防止未经授权的泄露;

●修复硬件或软件的错误。

因此,与数据库安全相关的任何情况,都需要考虑到控制访问权限、应用程序访问、漏洞管理以及审计。由于几乎所有数据库都与互联网相连,我们需要明白其结构的复杂性。

下图中显示了一个数据库通常的使用情况:

图1:数据库环境

身份验证

访问数据库的第一步是在身份验证过程完成后进行数据库服务器登录。如果身份验证过程的配置不正确,攻击者便更容易获取对数据库的访问权限。如果数据库包含高优级数据,那应该采取多层身份验证,以达到最高的安全保护级别。即便采用的用户名或密码验证比较普通,我们必须确保关键字是高强度的。以下是增加密码强度的几条建议:

●密码中采用的字符应当介于8-20个之间;

●它不应当与你的用户名、电子邮件地址、服务器名称或者电话号码有关。这些密码都很容易被猜到;

●应当避免多账户采用相同的密码;

●混合数字、字母和符号将增加密码强度。

这里有许多用于检测密码强度的应用,使用其中的一个软件,便可确保最大强度的密码。

访问控制

保护数据的最佳方式便是限制其访问。我们应当对每个用户访问数据的用户进行授权和身份验证。通常的做法是将用户名和密码分配到每个登录数据库的用户。同时,对于不同用户应当根据敏感数据的分类要求,进行不同权限设置。让我们通过具体的实例来进行解释,例如一个大学的数据库。学生应当被授予登录他们各自账户数据库的权限,以及数据库中相关内容的读取权限。教师以及其他工作人员则需要拥有数据库的录入权限。这是保护数据库的基本步骤。即使攻击者设法使用学生账户登录,所具有的权限也是有限的。在这个过程中,识别每个用户并且分配他们对应数据的访问权限,至关重要。访问控制主要可以实现于以下四个级别:

●自主访问控制(DAC):在这个层次上,基于一些预设的权衡性政策,根据用户身份及特权授予其访问权限。通过这一方法,用户可以授权其他用户访问该数据,处于这一特性,这也被用于大多数企业。用户能够在存在需求时,对权限进行添加或删减。

●基于内容的访问控制:在这里权限的授予与否是基于内容而定的。在一个组织中,同一时间可能运行多个项目,因此用户需要访问的数据只需是和项目有关的。

●细粒度访问控制:可设置不同级别的访问控制。例如,我们能够在Oracle虚拟数据库中看到这些内容。

●强制访问控制(MAC):这是个基于用户和数据对象分类的模型。分类基于不同等级,被称为访问类。一个访问类包含多层安全水平,可以用于给不同类适当的读写权限。

应用程序访问

用户总是将记录文件同放在数据库放在一个目录,并且通过某个软件或者应用程序来管理数据库,透过分析这些应用的构造框架,我们可以逐一击破并修复其中的毛病。这个工具是用来进行身份认证以及权限获取的,这个应用框架同样也提供一个数据可视化管理的功能,应用中,将显示各数据库、类之间的关联关系,并提供出关于当前数据详细的提示。而对于一个程序来说,最大的问题在于确定软件框架定义的权限授予是否真的是按提交过来的用户身份而对应分配的。

数据库威胁

研究发现,数据库是最易遭到破坏的资产。数据库是所有组织的心脏,因此保护数据库安全至关重要。当攻击者得到了访问数据库的权限时,他们便会想方设法进行破坏、曝光,足以扰乱整个组织的运作。下面将列举出在很长一个阶段内,存在的影响数据库安全的一些威胁:

●过度和未使用的特权:用户总是获得超出他们需求的特权。这些超出的特权落入“特殊用户”手中往往会导致各种问题。如果这个人居心叵测,他便可以利用这些特权窃取敏感数据。而这之所以会发生,是不恰当的权限控制机制所造成的。

●滥用特权:有时用户会在一些未经授权的活动中“错用”自己的权限。此事在很多情况下都会发生。因此,不建议他们在未经授权的活动中使用权限。

●SQL注入:通过向Web应用程序中插入恶意语句发动攻击。攻击者便有机会获得整个数据库的访问权限。

●恶意软件:攻击者使用黑客技术,将钓鱼邮件将恶意软件发送到用户邮箱。用户在不知情的情况下,点击邮件链接从而被控制。攻击者利用这个用户,便可通过各种路径进入数据库。

●糟糕的审计记录:自动化系统记录应当是每个数据库的一部分。如果没有进行适当的记录,便可能导致各种问题。大多数公司都会进行系统审计,这一般是由数据库厂商提供的。而这种软件通常无法满足每个公司的需求。

●存储媒体曝光:人们花费了很多努力保护活跃对象。他们有时会忘记安全备份,尽管这与保护系统同样重要。一个攻击者可以轻松进入未加密备份,然后对公司进行入侵。因此,保护备份数据文件也非常重要,请保持对高优先级用户的持续关注。

●拒绝服务(DOS):这是一个很常见的攻击类型,攻击者对网络设备或数据造成拒绝访问。在数据库中,DOS通常由大量请求、占用大量资源从而服务器过载。这使得服务器没有响应,最终导致数据库沦陷。DOS是一个严重的危害,应当被重视。任何一个系统都会受此影响。

数据库审计

在定期监控的帮助之下,针对数据库的攻击可以降到最小。审计可以帮助我们发现现存架构中的漏洞和缺陷,然后找到一个适合的解决方案来修复它们。数据库审计包含以下不同层次:

●访问及身份验证审计:这里包括了登录用户使用的数据库。它记录了用户访问数据库的时间、内容以及途径。

●用户与管理员审计:针对用户和管理员执行的活动进行分析和报告。

●安全活动监控:这里对全部活动列表进行了跟踪,并将数据库中任何未授权或者可疑的活动进行报告。

●漏洞与威胁审计:漏洞普遍存在于所有系统中。我们的职责便是及时地发现并修复它们。在这个审计步骤中,漏洞会被发现并修复。同时,想要利用这些漏洞的“用户”也会被发现。

●审计中的变化:首先,为审计过程建立一个基础结构。然后审计政策会根据需求而进行变化,由此可以避免出现任何含糊不清的地方。

如何进行数据库审计?

●明确数据:这并不像听起来那么简单。确定那些真正需要保护的数据是非常重要的。数据库可能包含了各类型、优先级不同的数据。对这些类型的数据进行分类,会使审计过程变得非常轻松。

●利用在建功能的基础审计:现在每个数据库服务器都有默认审计功能。第一件事是运行这些运用于审计的工具。他们的登录触发功能在许多服务器中都是默认开启的,这样有助于我们对登录的详细信息进行控制与监视。使用这些工具,我们无法自定义地进行审计工作,特别是一些复杂的工作。对于这种情况,可以使用第三方审计软件来开展工作。

●使用第三方的审计软件和网络设备:这些审计工具可以为满足用户需求进行特殊定制。因为它们具有超多功能,为创造最大输出而进行了深度挖掘。这些设备可用于提供保护的同时还能监控服务器。而它们的主要优势是,服务器性能不会受到影响,因为这些工具都是单独安装于服务器的。

数据加密

加密是应当被给予更多关注的领域之一。数据加密对保护数据库而言非常重要。而在实际情况中情,我们需要处理两种类型的数据。第一种是对静态数据进行加密,另一种则是通过强验证转化的数据。对于静态数据而言,多种加密算法并不能轻易被未授权的用户破解。不同的算法取决于各自的加密技术。一些用于服务器是算法包括DES、Triple DES、DESX、128位AES、192位AES等等。这些算法根据各自的特点被用于适合的位置。无论如何,完美的算法是并不存在的。用于传输数据的安全shell流量应当获得保护。通常数据使用明文在网络中传递,这种类型的数据很容易在嗅探器的“帮助下”被获取。为了避免这样的情况,数据应该通过SSH加密通道。

保护一个数据库

对数据库的保护是一个永无休止的过程。

●第一步,也是最为重要的一步就是对数据库进行分析和安全防护。

●接着,根据需求对系统或者数据进行分类。一个数据库通常含有不同优先级的数据类型,应当在正式运行前进行恰当的分类。

●对数据库进行扫描以发现漏洞、错误配置以及其中发生的变更。此举将为保护数据库安全提供一个策略。

●下一步则需基于上一步骤的信息,扫描发现的漏洞应当进行及时的修复。

●为漏洞找到合适的修复方式,然后对所有现有系统进行补丁。

●审计应当在漏洞修复之后进行。这一步中如果发现任何异常,都会及时反映。重复整个循环周期可以最大程度上地保障数据库的安全。

图2:数据库安全循环

监控与封锁

●实时预警和封锁:应当对包括登录、访问注销等在内的数据库活动进行监控,以阻止数据泄露以及未经授权的访问。服务器内这样的活动一旦被检测到,应该会产生提示和警告。如果再次出现,用户则应当封锁通向数据库的访问。数据库流量应当被持续监控以便识别异常活动,例如可能导致DOS攻击等问题。

●检测异常访问活动:每个用户配置文件都应当被完全监控。任何越级访问数据库的尝试都应当出发一个警告,或被直接封锁。这样或许有助于保护我们免受注入、恶意软件等攻击活动。

●过滤Web请求:为了避免注入攻击,封锁所有恶意Web请求至关重要。同时,一个Web应用程序防火线应当同时被用于检查Web应用程序中的请求。针对请求中的所有HTTP参数都要进行检查。请求中出现中括号或者特殊字符都可能是攻击活动的迹象。

●本地数据库监控:系统管理员这样的用户常常拥有最高权限,因此必须对其进行密切监控。一旦他们被网络钓鱼攻击,威胁可能波及整个数据库。

●响应时间:DOS攻击导致服务器超载,造成了无法响应请求和查询语句。响应时间监控应当可以检查响应延迟以及其他因子,由于延迟会降低整个服务器性能,因此任何与之相关的线索都必须被仔细观察。

●实现连接控制:服务器上的负载应当通过限制连接速率、查询速度等等手段,加以控制。

结论

保护数据安全的需求日益增加。这便是信息时代的失败与伟大。数据库已经成为了全世界攻击者的目标。所有的组织、机构都将数据库安全作为规划的一部分,也越来越清楚地认识到数据库安全的重要性。市场中已经存在很多符合我们安全需求的产品。我们则必须对它们进行分析再选择适合我们环境的。忽视这一点则可能导致整个组织的沦陷,因此公司必须建立包括数据库安全在内的、坚实的安全策略。

保护数据库安全不是一项简单的任务,也并不能在短短几小时内解决的问题。这需要持续地规划和投入,最为重要的是,保护措施应当在一定的时间段内反复进行才能获得最大效率。

原文发布时间为:2016-01-15

本文作者:FreeBuf

时间: 2025-01-26 09:46:15

数据库安全小议的相关文章

数据库安全之防止撰改

有些数据一旦添加,就不允许在做修改,可以使用此方法 文档出处:http://netkiller.github.io/ 第 10 章 数据库安全 目录 10.1. 保护表字段 10.1. 保护表字段 通过触发器,使之无法修改某些字段的数据,同时不影响修改其他字段. DROP TRIGGER IF EXISTS `members`; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=''; DELIMITER // CREATE TRIGGER `members` BEF

“IT列国”之“鸡鸣狗盗”--小议普通项目组成员对项目的作用

项目|项目 "IT列国"之"鸡鸣狗盗"--小议普通项目组成员对项目的作用 0.前言 鸡鸣狗盗是一个描写小角色.小人物的故事,它讲了齐国孟尝君的两个不知名的门客通过鸡鸣和狗盗这样的雕虫小技帮助孟尝君从强秦手中脱险的经历.孟尝君田文是著名的战国四君子之一,为人好客,手下门客三千,任齐国相国.他出使秦国,被秦王软禁,幸亏两个手下扮狗和装鸡叫帮他克服困难,逃回齐国. 本文借用鸡鸣狗盗的故事,写普通的项目组成员(即所谓的小角色)对项目组的重要作用.普通的项目组成员其实往往能在

小议如何在组件上显示图象

显示 小议如何在组件上显示图象 ●○●○●○●○●○●○●○●○●○●○●○●○●○●○○●作者:刘湛○●○日期:2000-12-22●○●jeru@163.net○●●○●○●○●○●○●○●○●○●○●○●○●○●○●○○●一天进步一小步●○●○●○●○●○充实我的每一天○●●○●○●○●○●○●○●○●○●○●○●○●○●○●○ 首先要说明的是,在组件上方便的显示图象是 swing 比 AWT 优越的特性之一,暂时我还没看到如何在 AWT 中实现这一方法,如果你知道,请来信告诉我. 在 s

SQL Server数据库安全规划全攻略

server|安全|攻略|规划|数据|数据库|数据库安全 在改进SQL Server 7.0系列所实现的安全机制的过程中,Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理.按照本文介绍的步骤,你可以为SQL Server 7.0(或2000)构造出一个灵活的.可管理的安全策略,而且它的安全性经得起考验. 一.验证方法选择 本文对验证(authentication)和授权(authorization)这两个概念作

保障Web数据库安全运行

随着Web数据库的应用越来越广泛,Web数据库的安全问题日益突出,如何才能保证和加强数据库的安全性已成为目前必须要解决的问题. 数据库系统安全控制模式 Web数据库是数据库技术与Web技术的结合,其中存在诸多安全隐患,如通过网络传输的用户名和密码很容易被人窃取.用户读取的数据可能被截取.篡改等.如何保障Web数据库的安全运行呢? 建立安全模型 通常,安全措施是计算机系统中用户使用数据库应用程序一直到访问后台数据库要经过的安全认证过程. 当用户访问数据库时首先通过数据库应用程序进入到数据库系统,这

小议学习java的浮躁心态-分析篇

  知识是需要沉淀的:思想也是在不断的学习.磨练中走向成熟的:而技术也是在不断的创造中开拓的. 在<引出篇>中,我简单的举了一个身边的例子,以及夸张的描述了一个浮躁学习的状态.这些只简单的点出了浮躁心态的表象,那么现在让我们来分析一些根源. 在<引出篇>的议论中,有朋友提到"软件业的浮躁"一词,也建议在"分析篇"中从这方面分析一下.有关"软件业"之类的议论,在各大论坛或网站上比比皆是,有抱有积极心态的,有唉声叹气的,有发牢

保障网站安全运营 设置数据库安全三大措施

数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选.然而,Access数据库本身存在很多安全隐患,攻击者一旦找到数据库文件的存储路径和文件

调整重心-从IIS到SQL Server数据库安全

从codered到nimda等,一大堆蠕虫把原来需要人工利用的漏洞都变成了程序自动利用了,大家还想去手工操作这些IIS漏洞么?让我们调整重心,去看看服务器常用的数据库吧.     一般网站都是基于数据库的,特别是ASP.PHP.JSP这样的用数据库来动态显示的网站.很多网站可能多注意的是操作系统的漏洞,但是对数据库和这些脚本的安全总是忽略,也没有太多注意.     从最比较普遍的脚本问题开始,这些都是老话题了,大家可以参考Hectic写的<关于数据库的简单入侵和无赖破坏,以天融信做例子>,该文

Access数据库安全的几个问题

access|安全|数据|数据库|数据库安全|问题 问题 1.什么是Microsoft Access 工作组,怎样创建工作组信息文件? 2.怎样打开"工作组管理器"? 3.怎样允许他人查看或执行查询,但不能更改数据或查询设计? 4.怎样防止复制.设置数据库密码或更改启动选项? 5.怎样定义用户级安全? 问:什么是Microsoft Access 工作组,怎样创建工作组信息文件? 答:Microsoft Access 工作组是在多用户环境下共享数据的一组用户.如果定义了用户级安全,工作组