如何保障数据库安全

450 阅读11分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情

数据库安全

什么是数据库安全性?

数据库安全包括用于保护数据库管理系统免受恶意网络攻击和非法使用的各种措施。数据库安全程序不仅旨在保护数据库中的数据,还旨在保护数据管理系统本身以及访问它的每个应用程序免遭误用、损坏和入侵。

数据库安全性包括在数据库环境中建立安全性的工具、流程和方法。

数据库安全威胁

许多软件漏洞、配置错误或误用或粗心大意的模式都可能导致违规。以下是数据库安全网络威胁的一些最已知原因和类型。

内部威胁

内部威胁是来自以下三个来源之一的安全风险,每个来源都有进入数据库的特权手段:

  • 恶意内部人员
  • 组织内的疏忽者,通过粗心大意的行为将数据库暴露给攻击
  • 通过社会工程或其他方法获取凭据或获得对数据库凭据的访问权限的局外人

内部威胁是数据库安全漏洞的最典型原因之一,它经常发生,因为许多员工已被授予特权用户访问权限。

人为错误

弱密码,密码共享,意外删除或损坏数据以及其他不良用户行为仍然是报告的数据泄露的近一半原因。

利用数据库软件漏洞

攻击者不断试图隔离和定位软件中的漏洞,而数据库管理软件是一个非常有价值的目标。每天都会发现新的漏洞,所有开源数据库管理平台和商业数据库软件供应商都会定期发布安全补丁。但是,如果您不快速使用这些修补程序,您的数据库可能会受到攻击。

即使您按时应用补丁,当攻击者发现漏洞但数据库供应商尚未发现和修补漏洞时,也始终存在零日攻击的风险。

SQL/NoSQL 注入攻击

特定于数据库的威胁涉及在数据库查询中使用任意非 SQL 和 SQL 攻击字符串。通常,这些是作为 Web 应用程序表单的扩展创建的查询,或通过 HTTP 请求接收的查询。如果开发人员不遵守安全编码实践,并且如果组织不定期进行漏洞测试,则任何数据库系统都容易受到这些攻击。

缓冲区溢出攻击

当进程尝试将大量数据写入固定长度的内存块(超过允许容纳的数据量)时,会发生缓冲区溢出。攻击者可能会使用保存在相邻内存地址中的多余数据作为发起攻击的起点。

拒绝服务 (DoS/DDoS) 攻击

在拒绝服务(DoS)攻击中,网络犯罪分子使用大量虚假请求使目标服务(在本例中为数据库服务器)不堪重负。结果是服务器无法执行来自实际用户的真实请求,并且经常崩溃或变得不稳定。

在分布式拒绝服务攻击(DDoS)中,虚假流量由大量计算机生成,参与由攻击者控制的僵尸网络。这会产生非常大的流量,如果没有高度可扩展的防御架构,就很难阻止。基于云的 DDoS 防护服务可以动态扩展,以应对非常大的 DDoS 攻击。

恶意软件

恶意软件是为利用漏洞或对数据库造成损害而编写的软件。恶意软件可以通过连接到数据库网络的任何端点设备到达。恶意软件防护在任何端点上都很重要,但在数据库服务器上尤其如此,因为它们具有高价值和敏感性。

不断发展的 IT 环境

不断发展的 IT 环境使数据库更容易受到威胁。以下是可能导致对数据库进行新型攻击的趋势,或者可能需要新的防御措施:

  • 不断增长的数据量 — 几乎所有组织的存储、数据采集和处理都在呈指数级增长。任何数据安全实践或工具都必须具有高度可扩展性,以满足遥远和近期的需求。
  • 分布式基础架构 - 网络环境的复杂性不断增加,尤其是随着企业将工作负载转移到混合云或多云架构,使得安全解决方案的部署、管理和选择变得更加困难。
  • 日益严格的法规要求 — 全球法规遵从性环境的复杂性日益增加,因此遵守所有要求变得越来越具有挑战性。
  • 网络安全技能短缺 - 全球缺乏熟练的网络安全专业人员,组织发现很难填补安全角色。这可能会使保护关键基础设施(包括数据库)变得更加困难。

如何保护数据库服务器?

数据库服务器是运行数据库的物理机或虚拟机。保护数据库服务器的安全(也称为“强化”)是一个包括物理安全性、网络安全和安全操作系统配置的过程。

数据库安全性

确保物理数据库安全

如果数据库包含敏感数据,则避免共享 Web 应用程序和数据库应用程序的服务器。尽管在托管服务提供商上一起托管您的网站和数据库可能更便宜,也更容易,但您将数据的安全到其他人手中。

如果您确实依靠网络托管服务来管理数据库,则应确保它是一家具有强大安全记录的公司。由于缺乏安全性,最好远离免费托管服务。

如果您在本地数据中心管理数据库,请记住,您的数据中心也容易受到来自外部人员或内部威胁的攻击。确保您有物理安全措施,包括物理设施中的锁,摄像头和安保人员。对物理服务器的任何访问都必须记录,并且仅授予授权的个人。

此外,不要将数据库备份保留在可公开访问的位置,例如临时分区、Web 文件夹或不安全的云存储桶。

锁定帐户和权限

让我们考虑一下 Oracle 数据库服务器。安装数据库后,Oracle 数据库配置助手 (DBCA) 将自动过期并锁定大多数默认数据库用户帐户。

如果手动安装 Oracle 数据库,则不会发生这种情况,并且默认特权帐户不会过期或被锁定。默认情况下,他们的密码与其用户名相同。攻击者将首先尝试使用这些凭据连接到数据库。

确保数据库服务器上的每个特权帐户都配置有强而唯一的密码,这一点至关重要。如果不需要帐户,则应将其过期并锁定。

对于其余帐户,访问权限必须限制为所需的绝对最小值。每个帐户应仅有权访问用户所需的表和操作(例如,SELECT 或 INSERT)。避免创建有权访问数据库中的每个表的用户帐户。

定期修补数据库服务器

确保修补程序保持最新。有效的数据库补丁管理是一种至关重要的安全实践,因为攻击者正在积极寻找数据库中的新安全漏洞,并且每天都会出现新的病毒和恶意软件。

及时部署最新版本的数据库服务包、关键安全修补程序和累积更新将提高数据库性能的稳定性。

禁用公网访问

组织将其应用程序存储在数据库中。在大多数实际方案中,最终用户不需要直接访问数据库。因此,除非您是托管提供商,否则应阻止对数据库服务器的所有公用网络访问。理想情况下,组织应为远程管理员设置网关服务器(VPN 或 SSH 隧道)。

加密所有文件和备份

无论您的防御多么坚固,黑客总是有可能渗透到您的系统中。然而,攻击者并不是对数据库安全的唯一威胁。您的员工也可能对您的业务构成风险。恶意或粗心的内幕人员总是有可能访问他们无权访问的文件。

加密数据会使攻击者和员工都无法读取数据。如果没有加密密钥,他们就无法访问它,这为防止不受欢迎的入侵提供了最后一道防线。加密所有重要的应用程序文件、数据文件和备份,以便未经授权的用户无法读取您的关键数据。

数据库安全最佳实践

以下是可用于提高敏感数据库安全性的几个最佳做法。

主动管理密码和用户访问权限

如果您有一个大型组织,则必须考虑通过密码管理或访问管理软件自动执行访问管理。这将为允许的用户提供一个短期密码,以及每次访问数据库所需的权限。

它还会跟踪在该时间段内完成的活动,并阻止管理员共享密码。虽然管理员可能觉得共享密码很方便,但是这样做几乎不可能实现有效的数据库问责制和安全性。

此外,建议采取以下安全措施:

  • 必须强制执行强密码
  • 密码哈希必须加盐并以加密方式存储
  • 多次登录尝试后,必须锁定帐户
  • 如果员工调任不同角色、离开公司或不再需要相同级别的访问权限,则必须定期审查和停用帐户

测试数据库安全性

一旦建立了数据库安全基础架构,就必须针对真正的威胁对其进行测试。对您自己的数据库进行审核或执行渗透测试将帮助您进入网络犯罪分子的思维模式,并隔离您可能忽略的任何漏洞。

为确保测试全面,请在安全测试中让道德黑客或公认的渗透测试服务参与进来。渗透测试人员提供广泛的报告,列出数据库漏洞,快速调查和修复这些漏洞非常重要。每年至少对关键数据库系统运行一次渗透测试。

使用实时数据库监控

持续扫描数据库以查找违规企图可提高安全性,并使您能够快速响应可能的攻击。

特别是,文件完整性监控 (FIM) 可以帮助您记录在数据库服务器上执行的所有操作,并在发生潜在违规行为时向您发出警报。当 FIM 检测到对重要数据库文件的更改时,请确保安全团队收到警报,并能够调查和响应威胁。

使用 Web 应用程序和数据库防火墙

应使用防火墙来保护数据库服务器免受数据库安全威胁。默认情况下,防火墙不允许访问流量。它还需要阻止数据库启动出站连接,除非有特殊原因这样做。

除了使用防火墙保护数据库外,还必须部署 Web 应用程序防火墙 (WAF)。这是因为针对 Web 应用程序(包括 SQL 注入)的攻击可用于非法访问数据库。

数据库防火墙不会阻止大多数Web应用程序攻击,因为传统防火墙在网络层运行,而Web应用程序层在应用程序层(OSI模型的第7层)运行。WAF 在第 7 层运行,能够检测恶意 Web 应用程序流量(如 SQL 注入攻击),并在它损害数据库之前将其阻止。