数据库安全小议
数据库安全目前是安全从业者讨论的重要主题之一。随着越来越多的突发事件发生,是时候采取一些行动了。
安全的数据库应当为成员的访问提供了有效控制与保护,同时还能保障所有的数据质量。我们必须充分了解数据库安全的相关挑战并努力提供一个解决方案。针对数据库的威胁取决于很多因素,例如互联网安全、物理安全、加密、身份验证等等。由于所处组织的不同,数据的敏感度也大不相同。数据库中可能是客户数据、财务记录以及许多其他类型的具有价值的信息。
因此保护这些数据免受内部或者外部的攻击,都至关重要。进行定期审核来检查数据库中存在的缺陷和漏洞是非常必要的,由于在程序设计时忽略了安全因素,或因没有及时更新、使用过期版本的应用程序而出现一些缺陷。了解数据库的结构,并在初始阶段就识别出潜在的威胁是非常重要的。
在我们保护数据库时应当考虑如下三个要点:
● 保护数据免受未经授权的访问;
● 防止未经授权的泄露;
● 修复硬件或软件的错误。
因此,与数据库安全相关的任何情况,都需要考虑到控制访问权限、应用程序访问、漏洞管理以及审计。由于几乎所有数据库都与互联网相连,我们需要明白其结构的复杂性。
下图中显示了一个数据库通常的使用情况:
图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攻击导致服务器超载,造成了无法响应请求和查询语句。响应时间监控应当可以检查响应延迟以及其他因子,由于延迟会降低整个服务器性能,因此任何与之相关的线索都必须被仔细观察。
● 实现连接控制:服务器上的负载应当通过限制连接速率、查询速度等等手段,加以控制。
结论
保护数据安全的需求日益增加。这便是信息时代的失败与伟大。数据库已经成为了全世界攻击者的目标。所有的组织、机构都将数据库安全作为规划的一部分,也越来越清楚地认识到数据库安全的重要性。市场中已经存在很多符合我们安全需求的产品。我们则必须对它们进行分析再选择适合我们环境的。忽视这一点则可能导致整个组织的沦陷,因此公司必须建立包括数据库安全在内的、坚实的安全策略。
保护数据库安全不是一项简单的任务,也并不能在短短几小时内解决的问题。这需要持续地规划和投入,最为重要的是,保护措施应当在一定的时间段内反复进行才能获得最大效率。
参考文献
● https://en.wikipedia.org/wiki/Database_security
● http://docs.oracle.com/cd/B19306_01/server.102/b14220/security.htm
● https://www.oracle.com/database/security/index.html
● https://msdn.microsoft.com/en-IN/library/ms345262.aspx
● http://www.zdnet.com/article/the-top-ten-most-common-database-security-vulnerabilities/
● https://www.techopedia.com/definition/29841/database-security
● http://www.academia.edu/6866589/Introduction_to_Database_Security_Issues_Types_of_Security_Database
● http://www.slideshare.net/null0x00/database-security-issues
● http://www.collegelib.com/t-database-security-issues-and-challenges.html
*原文地址:infosecinstitute,SamSmith编译,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)