国外主流的数据库系统有MS SQL、MySQL、Oracle、DB2等,国产数据库系统主要有人大金仓、达梦等。
(1)授权的误用(Misuses of Authority)。合法用户越权窃取、修改或破坏机密资源,授权用户将自身的访问权限不适当的授予给其他用户
(2)逻辑判断和汇聚(Logical Inference and Aggregation)。个别数据项可能不太敏感、也不重要,但当足够多的个别数据收集在一起,就可以推断出敏感信息。
(3)伪装(Masquerade)。攻击者冒充正常用户获取数据库访问权限。
(4)旁路控制(Bypassing Controls)。在数据库设置后门,绕过数据库系统的安全访问控制
(5)隐蔽信道(Covert Channels)。利用非正常的通信途径传输数据,以逃避数据库安全机制的控制,如内存共享、临时文件。
(6)SQL注入攻击(SQL Injection)
(7)数据库口令密码破解(字典、撞库)
(8)硬件及介质攻击(发动物理攻击)
(1)用户账号和密码隐患
(2)数据库系统扩展存储过程隐患。(入侵者过执行恶意构造的拓展存储过程,能够获取数据库的操作权限)
(3)数据库系统软件和应用程序漏洞
(4)数据库系统权限分配隐患(分配给用户权限过大,导致用户误删数据,或泄露敏感数据)
(5)数据库系统用户安全意识薄弱(数据库系统用户使用弱口令或口令保管不当)
(6)网络通信内容是明文传递(数据库和应用程序之间通信内容未经加密的漏洞,网络窃听者窃取诸如应用程序特定数据或数据库登陆凭据等敏感数据)
(7)数据库系统安全机制不健全(一些数据库不提供管理员账号重命名、登陆时间限制、账号锁定。如MS SQL Server不能删除账号sa,且sa默认空口令)
(1)数据库标识和鉴别(用于用户身份识别和认证)
(2)数据库访问控制(对资源及操作进行访问授权及违规控制)
(3)数据库安全审计(对数据库操作进行记录,形成审计文件)
(4)数据库备份与恢复
(5)数据库加密(数据库要有加密机制,能对数据库中的敏感数据进行加密处理。并且授权管理员无法对其他用户加密存储的数据进行正常解密,
(6)资源限制(防止授权用户无限制地使用数据库服务器处理器(CPU)、共享缓存、数据库存储介质等资源,限制每个授权用户/管理员的并行会话数等功能,避免遭受数据库拒绝服务攻击)
(7)数据库安全加固(漏洞检查和修补)
(8)数据库安全管理(安全集中管理机制,实现数据库安全策略集中配置和管理)
数据库是一个复杂性高的基础性软件,其安全机制主要有:
对数据库存储或传输的数据进行加密处理,以密文形式存储或传输。数据库加密的方式主要分为两种:
(1)与数据库网上传的数据,利用SSL协议来实现
(2)数据库中存储的数据,通过数据库存储加密实现
若是按照加载组件与数据库管理系统的关系,数据库存储加密可分为两种加密方式:库内加密和库外加密。
数据库防火墙如下图,通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动反骨、实施审计。
数据库防火墙的安全作用如下
- 屏蔽直接访问数据库的通道(防止数据库隐蔽通道对数据库的攻击)
- 增强认证。(数据库防火墙和数据库自身两层认证)
- 攻击检测
- 防止漏洞利用
- 防止内部高危操作
- 防止敏感数据泄露。(通过防火墙可以限定数据库查询和下载数据、限定敏感数据访问的用户、地点和时间)
- 数据库安全审计
利用数据脱敏技术将数据库中的数据进行变换处理,在保持数据库按需使用目标的同时,又能避免敏感数据外泄。数据脱敏指按照脱敏规则对敏感数据进行变换,去除标识数据,数据实现匿名化处理,从而实现敏感数据的保护。例如,假设无病标识数据如下:
(1)用户认证(Oracle认证机制多样。支持操作系统认证、网络认证、多级认证、SSL认证)
(2)访问控制(内部集成网络访问控制和数据对象授权控制)
(3)保险库(建立数据库保险库Database Vault,DV
机制,该机制用于保护敏感数据,具有防止数据系统未授权变更、多因素可信授权、职责隔离、最小特权的功能。
(4)安全审计和数据防火墙(具有对内部所发生的活动进行审计的能力,如下图。Oracle数据可可审计的活动有3种类型:登录尝试、数据库活动和对象采取。)
(5)高级安全功能(提供透明数据加密和数据屏蔽机制,以保护数据安全)
(1)增强Oracle数据库服务器的操作系统安全(最小化系统服务、补丁保存最新、关闭不需要通信的网络通信端口
(2)最小化安装Oracle,删除不必要组件
(3)安装最新的补丁
(4)删除或修改默认的用户密码
(5)启用认证机制
(6)设置好的口令密码策略
(7)设置最小化权限
(8)限制连接Oracle的ip地址
(9)传输加密
(10)启用Oracle审计
(11)定期查看Oracle漏洞发布信息,及时修补漏洞
(12)实施Oracle灾备计划(监测数据库安全运行,定期数据备份、针对可能出现的安全事件指定安全应急备案
(1)用户身份认证
(2)访问控制。(采用的是基于角色的访问控制机制。其中SQL Server的角色分为三种,即固定服务器角色Fixed Server Roles
、固定数据库角色Fixed Database Roles
和应急角色Application Roles
)
(3)数据库加密(提供Transacat-SQL函数、非对称密钥、对称密钥、证书、透明数据加密机制)
(4)备份、恢复机制
(5)安全审计(该机制包含多个组件,利用这些组件可以审计所有的权限使用
(1)设置好数据库密码安全策略(拒绝空密码,如MS SQL Slammer就是利用管理员sa密码为空进行攻击)
(2)加强扩展存储过程管理,删除不必要的存储过程(SQL Server的系统存储过程容易被利用来提升权限进行破坏,确保删除不必要的存储过程)
(3)网上数据加密传输(使用的Tabular Data Stream协议明文传输数据,容易导致数据泄露,建议使用SSL)
(4)修改数据库默认的TCP/IP端口号(SQL Server默认1433端口,建议修改为其它端口)
(5)对SQL数据库访问的网络连接进行IP限制
(6)启用SQL Server日志审计,记录所有的用户访问和分析安全事件日志
(7)定期查看MS SQL Server漏洞发布信息,及时修补漏洞
(8)保证MS SQL Server的操作系统安全(降低来自操作系统的安全)
(9)MS SQL Server安全检测,制定安全容灾备份计划。
(1)用户身份认证(用户名/口令登陆)
(2)访问授权(MySQL管理员可以通过grant和revoke命令,来创建、删除用户、授权和撤权操作)
(3)安全审计(MySQL内置审计机制,可以记录MySQL的运行状态
(1)MySQL安装。建立单独启动MySQL的用户和组。安装最新的MySQL软件包,选择合适的静态参数编译MySQL数据库
(2)建立MySQL Chrooting运行环境。(形成“沙箱”保护机制 ,增强系统抗渗透能力)
(3)关闭MySQL的远程连接。(关闭Mysql的默认监听端口3306,本地用户可以通过mysql.sock
来连接,mysql备份通过ssh来执行)
(4)禁止MySQL导入本地文件。(禁止使用“LOAD DATA LOCAL INFILE”命令)
(5)修改MySQL的root用户ID和密码
SET PASSWORD FOR root@localhost=PASSWORD('new_password');
(6)删除MySQL的默认用户和db(删除默认数据库test。除了root外其他都去掉)
(7)更改MySQL的root用户名,防止口令暴力破解
update user set uesr="dsb" where user="root"; #将管理员用户名从root修改为dsb
flush privileges; #刷新MySQL的系统权限相关表
(8)建立应用程序单独使用的数据库和用户账号(此类账号就只能访问对应程序用到的数据库)
(9)安全监测(监控运行状态,及时修补漏洞)
(10)安全备份(定期备份)
(1)国产数据库安全漏洞
(2)国产数据库依赖第三方系统组件的安全(如Open SSL协议安全漏洞对数据库网络传输安全有影响)
(3)国产数据库系统安全配置的安全(配置不当,构成系统安全)
(4)国产数据库支持平台的安全(受限于操作系统产生的安全问题)
(1)国产数据库安全漏洞挖掘及扫描(国内建立了数据库攻防实验室,展开了国产数据库安全挖掘研究工作)
(2)国产数据库加密(达梦数据库关系统提供了内部算法加密、第三方软硬件存储加密和透明加密、半透明加密、非透明加密等一套使用方便、灵活可靠的信息存储加密功能)
(3)国产安全数据库(人大金仓数据库KingbaseES安全版就是遵循安全数据库国家标准GB/T 20273-2019的第四级技术要求,参考业内安全模型自主研发,如图)