等保2.0数据库测评之SQL server数据库测评

一、SQL server数据库介绍

SQL server美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统。

本次安装环境为Windows10专业版操作系统,数据库版本为Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) ,单机部署过程比较简单就不在此进行讲解。本文针对SQLserver等保测评进行实际操作,不妥之处还恳请留言指正,共同学习。

二、等保测评

身份鉴别

a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;

1)SQL server数据库本身没有密码复杂度策略设置,它是使用Windows操作系统的校验函数来校验账户密码的,所以查看SQL server数据库密码复杂度需要结合操作系统本地安全策略的密码策略来看。SQL server密码策略要同时满足开启Windows密码策略并且勾选SQL server账户的强制实施密码策略才算是符合,但即使这样的话一样可以设置6位长度的口令,所以还要设置服务器的密码最小长度值。

2)在Microsoft SQL Server Management Studio中登录服务器,右键点击服务器,选择“属性”,选择“安全性”项,查看服务器身份验证。在Microsoft SQL Server Management Studio中选择服务器组并展开,选择“安全性->登录名”项,右键点击管理员用户的“属性”,在“常规”中 查看“强制实施密码策略”和“强制密码过期”

SQL server数据库的身份验证方式有多种,经常使用的有:windows身份验证和SQL server 身份验证。如果SQLServer数据库中的登录名
添加了该操作系统账户,且没有被禁用,则无需口令即可登录。

检查是否开启强制密码策略。

3)用户唯一标识SQLServer自动实现,这点默认符合。

4)尝试建立弱口令账户,检查是否建立成功。

b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
1)SQL server的账户锁定策略原理也是一样的,都是参照Windows操作系统的校验函数来校验的,所以需要勾选账户的强制密码过期,并且开启操作系统的账户锁定策略。勾选数据库强制密码过期,设置操作系统密码锁定策略。

2)SQL Server 数据库连接超时包含三类:远程登录超时、客户端连接数据库超时、sql语句执行超时(主要关注远程登录超时),其中:

远程登录超时:

在Microsoft SQL Server Management Studio中登录服务器并展开,右键点击服务器,选择“属性”,选择“高级”项,查看登录超时设定。也可在Microsoft SQL Server Management Studio的查询中输入命令:“sp_configure”查看数据库启动的配置参数;其中remote login timeout为远程登录超时设定。

客户端连接数据库超时:

sql语句执行超时:

c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;

核查是否采用加密等安全方式对系统进行远程管理,防止鉴别信息在网络传输过程中被窃听。检查远程管理时管理员所使用的管理协议,查看传输过程中的鉴别信息是否是经过加密处理的、抗重放的,并可使用抓包工具,判断管理员远程管理时传输过程中的鉴别信息被窃听的可能性。

根据了解,SQL Server的加密分成两个部分,一个是对数据的加密,一个是对连接的加密。对于数据的加密,主要是通过一系列的函数如EncryptbyKey,或者TDE来完成的。另外一部分是连接加密,自己分的话还能分成两个阶段。一个是建立连接时候的加密。另外一个阶段是连接建立起来之后,客户端和SQL Server在其上传输数据时候的加密。可以通过抓包判定SQL Server已经使用了SSL来加密。

SQL Server自动生成的证书是一种自签名的证书,而通过自签名证书实现的SSL并不能提供很强的安全性。他对中间人攻击(man-in-the-middle attack)不具有抵抗能力。因此建议在生产环境中,应该手动给SQL Server配置证书,而不是让它使用自动生成的证书。

默认情况下SQL Server是不加密收发的数据包信息,需要通过SQL Server的configuration Manager配置SQL Server使得它加密和客户端之间收发的数据包信息。

其中包含客户端的加密配置和服务器端的加密配置:

客户端的加密配置:

服务器端的加密配置:

默认状态下客户端和服务器端这个选项是设置为No的,SQL Server对数据包的收发不进行加密,反之,当选项设置为yes时,SQL Server对数据包的收发进行加密。

d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

访谈管理员并进行验证,是否采用双因子身份鉴别技术,鉴别技术是什么 。实际实现双因素认证比较困难,一般情况判定为不符合。

访问控制

a) 应对登录的用户分配账户和权限;

1)查看用户,并结合结合访谈管理员是否存在网络管理员,安全管理员,系统管理员、审计管理员等多个账户,为各个管理用户分配对应的权限;输入命令:“select * from syslogins”,根据所列出的账户,查看是否存在默认账户,默认账户是否已禁用。

b) 应重命名或删除默认账户,修改默认账户的默认口令

执行命令:“select * from syslogins”,检查如sa账户是否重命名(实际检查发现很多sa账户是不能重命名或禁用的,可能会影响系统正常运行,检查过程中也需要权衡业务需求),数据库一般情况不存在默认口令,输入命令:查看是否存在默认账户。(SQLServer中默认账户其实很多,主要检查权限过大的账户)

c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在

1)询问管理员数据库中的账户使用情况,是否存在无人使用的账户,如果存在建议删除。

2)检查网络管理员,安全管理员、系统管理员不同用户是否采用不同账户登录数据库。输入命令:“select * from syslogins”,根据所列出的账户,询问数据库管理员各个账户的作用,是否存在多余的、过期的和共享账户。

d) 应授予管理用户所需的最小权限,实现管理用户的权限分离
1)询问数据库管理员管理账户是否按照最小权限进行划分。在Microsoft SQL Server Management Studio中的查询中输入命令:“sp_helplogins”查看所有数据库登录用户的信息及其权限。在Microsoft SQL Server Management Studio的查询中输入命令:“select * from sys.sql_logins”,查看SQL Server身份认证模式的能够登录账户,其中is_disabled值为1,则登录账户被锁定;输入命令:“select * from sys.syslogins”,查看所有登录账户,其中 “denylogin”的值为1时,拒绝账户连接到数据库引擎,“sysadmin”的值为1时,具有系统管理员权限。Sa之类的系统管理员账户不负责操作业务数据库;业务数据库管理员不应具备系统管理权限(如删除数据库、表和存储过程等)。

e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则

1)访谈和查看管理员是否制定了访问控制策略

2)查看管理员权限;(此测评点如果数据库已经启用身份鉴别,且具备权限分离可判定为符合)

f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级

结合a)、b)、c)、d)、e)项,并访谈管理员并核查访问控制粒度主体是否为用户级,客体是否为数据库表级。询问数据库管理员是否具有安全策略,数据库是否具有重要的表。在企业管理器中右键点击重要的表,查看其权限。

(此测评点多数测评机构默认判定为符合)

g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问

通过访谈管理员是否对重要主体和客体设置安全标记。SQL Server数据库自身应该很难实现这个功能,可能需要依赖操作系统或者第三方来实现。该项一般默认都不符合。

安全审计

a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计

1)查看SQLserver日志是否有日志审计记录,检查安全性中是否创建了审核目标。在Microsoft SQL Server Management Studio中登录服务器并展开,右键点击服务器,选择“属性”,选择“安全性”项,查看登录审核和是否启用C2 审计跟踪。也可在Microsoft SQL Server Management Studio的查询中输入命令:“sp_configure”查看“c2 audit mode”项的值,“0”是未开启C2审计,“1”是开启C2审计。SQL Server数据库的审计内容包括SQL Server日志和应用程序日志。SQL Server的SQL Server日志可通过Microsoft SQL Server Management Studio进行查看,展开服务器点击“管理-〉SQL Server 日志";SQL Server的应用程序日志可通过操作系统的日志进行查看。

2)访谈管理员是否通过第三方工具(数据库审计系统)收集审计数据进行分析。

b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息

1)检查SQL server日志记录的各类信息(告警日志、运行日志、错误日志、登录日志等)

2)核查是否部署第三方工具(数据库审计系统)增强SQLserver日志功能。记录第三方审计工具的审计内容,查看是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。

c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等

应保证各个管理员尽可以访问与自身相关的日志文件,如关键日志仅允许特权账户访问

1)访谈管理员对审计记录如何保护,对审计记录是否定期备份,备份策略。

是否采取了备份、转存等手段对审计记录进行保护,避免未预期的删除、修 改或覆盖,数据库本地日志保存时间超过6个月。采用第三方数据库审计产品,审计记录保存时间超过6个月。

2)是否严格限制用户访问审计记录的权限,可以通过普通用户登录然后是否能够访问修改删除日志。

d) 应对审计进程进行保护,防止未经授权的中断

MariDB可以根据权限建立各类型的账户,可以防止审计进程未经授权的中断,如果数据库已建立审计账户且各个数据库管理员权限已分离,可判定为符合。

入侵防范

a) 应遵循最小安装的原则,仅安装需要的组件和应用程序

数据库系统此测评项可判定为不适用。

b) 应关闭不需要的系统服务、默认共享和高危端口

数据库系统此测评项不适用。

c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制

SQL server数据库没有登录地址限制的相关配置,多数情况下是限制数据库服务器的登录地址,从而实现对数据库的登录地址限制。

d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求

数据库系统此测评项不适用。

e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞

1) 访谈管理员是否定期或不定期进行漏洞扫描或渗透测试,周期按照天/月/季度/半年/年等方式(建议漏洞扫描周期最长半年一次)。
2)通过本次漏洞扫描是否发现与数据库相关的高危漏洞,若存在,是否及时进行漏洞修补,执行命令:“select @@version”检查数据库版本。

f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警

数据库系统此测评项不适用。

恶意代码防范

应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断

数据库系统此测评项不适用。

可信验证

可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心

通过访谈管理员,是否采取了可信技术,可信技术主要是基于可信芯片、可信根,目前实现此技术的可能性不大,一般判定为不符合。

数据完整性

a)应采用密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;

传输过程中的完整性一般是通过通信协议来实现的,常见的包括TLS、SSL、SSH等协议,对数据库而言,查看是否启用了安全协议进行数据通信,同时询问管理员,确认是否还有其他保证数据传输过程中的完整性措施。根据上文描述,可知SQL Server已经使用SSL来加密。(本地管理可判定为不适用,远程管理根据实际情况判定)

b)应采用密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

对数据库配置文件进行一个完整性检测,需要配置文件初始可信状态时的哈希值,然后再根据目前的文件生成一个哈希值,对比前后的一致性,确认数据是否被篡改过,根据了解一般数据库自身不带这种机制,询问管理人员是否使用了第三方软件对数据库重要数据进行了完整性校验。

实际操作中可核查数据库表中的业务数据、审计数据有无存在哈希字段,据了解数据在前端一般通过json或xml格式进行传输,相关数据库表字段中具有完整性校验字段。目前一般做不到,判定为不符合。

数据保密性

a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;

若password是以明文密码传送给数据库,建议不在生产环境中使用。若数据库未开启SSL时,我通过Wireshare对数据库认证过程的数据包进行抓取,可能发现传输的密码字段信息。根据上文描述,可知SQL Server已经使用SSL来加密。

总结,最直接验证的办法就是抓包验证重要的加密数据(鉴别数据、需要加密的业务数据、个人信息等)是否明文传输。

b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

检查数据库表中的重要数据是否明文存储,根据经验除鉴别数据外,业务数据、审计数据实际很少加密存储,所以一般不符合或者部分符合。如果使用数据库加密功能,就可以符合符合,数据库加密主要分库内加密和库外加密,库内加密主要是调用的数据库本身的加密功能,库外加密主要通过第三方厂家的数据库加密功能。

据了解,SQL Server几乎支持所有的主流对称加密算法。一般推荐使用AES-128或AES-256作为对称加密的数据加密算法。

数据备份恢复

a)应提供重要数据的本地数据备份与恢复功能;

1)访问管理员配置数据、审计数据、业务数据的备份策略,检查备份策略的备份情况与管理员所说是否一致,是否具有恢复测试记录。

2)可以通过数据库管理工具进行备份。

b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地;

部署异地备份机房,并符合备份策略通过网络定期进行异地备份。

c)应提供重要数据处理系统的热冗余,保证系统的高可用性;

集群部署、双机热备均可判定为符合。

剩余信息保护

a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;

一般情况下数据库系统内核层默认无法实现剩余信息保护功能,需要第三方工具才能实现。

b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。

一般情况下数据库系统内核层默认无法实现剩余信息保护功能,需要第三方工具才能实现。

个人信息保护

a)应仅采集和保存业务必需的用户个人信息;

检查数据库中是否存储个人信息,若有,检查个人信息保护机制和个人信息保护管理制度

b)应禁止未授权访问和非法使用用户个人信息。

检查个人信息保护机制和个人信息保护管理制度,验证非授权人员是否可以访问个人信息存储的相关组件内容。

总结

SQL server数据库运行在windows操作系统中,部分安全策略主要依赖于操作系统的安全配置,大部分安全配置几乎可以实现,但是在实际测评过程中很多单位不愿意配置等保中要求的策略,一方面是管理员认为不方便自己运维管理,另一方面可能是数据库在实时生产环境中,管理员担心更改相关安全配置后影响系统的正常运行,所以我们在测评中要做好安全和生产、安全和管理的平衡。

等保2.0数据库测评之优炫数据库测评正在更新中…

参考资料:

GB∕T 28448-2019 《信息安全技术 网络安全等级保护测评要求》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无人机之报警器的工作原理!

一、电量监测技术 电量监测是无人机电量指示和报警功能的基础。通过实时监测无人机的电池电量,系统能够准确判断电池的剩余使用时间,并在电量不足时发出报警。电量监测技术通常包括以下几个方面: 电压检测:无人机电池内部通常配…

【pyspark学习从入门到精通23】机器学习库_6

目录 分割连续变量 标准化连续变量 分类 分割连续变量 我们经常处理高度非线性的连续特征,而且只用一个系数很难拟合到我们的模型中。 在这种情况下,可能很难只通过一个系数来解释这样一个特征与目标之间的关系。有时,将值划分到离散的桶中…

解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾

在数字化时代,开源已成为推动技术创新和知识共享的核心力量,尤其在数据领域,开源技术的涌现不仅促进了行业的快速发展,也让更多的开发者和技术爱好者得以参与其中。随着物联网、工业互联网等技术的广泛应用,时序数据库…

QT 使用共享内存 实现进程间通讯

QSharedMemory:如果两个进程运行在同一台机器上,且对性能要求非常高(如实时数据共享、图像渲染等),建议使用共享内存。 优点: 高性能: 共享内存是进程间通信的最快方式之一,因为数…

OpenCV实验:图片加水印

第二篇:图片添加水印(加 logo) 1. 实验原理 水印原理: 图片添加水印是图像叠加的一种应用,分为透明水印和不透明水印。水印的实现通常依赖于像素值操作,将水印图片融合到目标图片中,常用的方法…

深入解析下oracle的number底层存储格式

oracle数据库中,number数据类型用来存储数值数据,它既可以存储负数数值,也可以存储正数数值。相对于其他类型数据,number格式的数据底层存储格式要复杂得多。今天我们就详细探究下oracle的number底层存储格式。 一、环境搭建 1.…

SparkSQL与Hive的整合

文章目录 SparkSQL与Hive的整合1.1. Spark On Hive1.1.1. Hive的准备工作1.1.2. Spark的准备工作1.1.3. Spark代码开发1.1.4. Spark On Hive案例 1.2. Hive On Spark1.3. SparkSQL命令行1.4. SparkSQL分布式查询引擎1.4.1. 开启ThriftServer服务1.4.2. beeline连接ThriftServer…

(持续更新)linux网络编程中需要注意的内核参数与网络机制

目录 零、基本说明 一、内核参数 二、相关机制 1、GRO (1)适用场景 (2)优缺点 (3)相关操作 2、Nagle 算法 (1)基本规则 (2)优缺点 (3&…

DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(一)

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

Matlab笔记---clear、clc、clear all应用

在MATLAB中,clear、clc 和 clear all 是三个常用的命令,它们各自有不同的作用: clc: clc 命令用于清除MATLAB命令窗口中的所有输出。它不会删除任何变量、函数或文件,只是清除屏幕上的显示内容,让你可以更…

Qt 一个简单的QChart 绘图

Qt 一个简单的QChart 绘图 先上程序运行结果图&#xff1a; “sample9_1QChart.h” 文件代码如下&#xff1a; #pragma once#include <QtWidgets/QMainWindow> #include "ui_sample9_1QChart.h"#include <QtCharts> //必须这么设置 QT_CHARTS_USE_NAME…

分布式事物XA、BASE、TCC、SAGA、AT

分布式事务——Seata 一、Seata的架构&#xff1a; 1、什么是Seata&#xff1a; 它是一款分布式事务解决方案。官网查看&#xff1a;Seata 2.执行过程 在分布式事务中&#xff0c;会有一个入口方法去调用各个微服务&#xff0c;每一个微服务都有一个分支事务&#xff0c;因…

MySQL为什么使用B+树来作索引

我来详细解释一下B树的结构和特点。 graph TDA[根节点 40|70] --> B[20|30]A --> C[50|60]A --> D[80|90]B --> E[10|15]B --> F[25|28]B --> G[35|38]C --> H[45|48]C --> I[55|58]C --> J[65|68]D --> K[75|78]D --> L[85|88]D --> M[9…

python 下载 b站视频 和音频

video_bvid&#xff1a; import os import requests import json import re from bs4 import BeautifulSoup import subprocess # from detail_video import video_bvid# video_bvid 是一个从外部得到的单个视频ID video_bvid BV1cx421Q7veclass BilibiliVideoAudio:def __in…

以太网链路详情

文章目录 1、交换机1、常见的概念1、冲突域2、广播域3、以太网卡1、以太网卡帧 4、mac地址1、mac地址表示2、mac地址分类3、mac地址转换为二进制 2、交换机的工作原理1、mac地址表2、交换机三种数据帧处理行为3、为什么会泛洪4、转发5、丢弃 3、mac表怎么获得4、同网段数据通信…

Shell编程 脚本的运行方式与注释

目录 shell脚本的运行方式 1. 路径运行 2.bash或sh加脚本运行 ​编辑 3.source在加脚本路径运行 shell脚本注释 单行注释 多行注释 shell脚本的运行方式 我们在/usr/etc/demo01目录下新建了一个脚本 a.sh &#xff0c;脚本内容是要求输出数字1&#xff0c;怎么运行呢 1…

智算网络中Scale-out和Scale-up网络的技术原理

智算网络中Scale-out网络和Scale-up网络的本质区别是什么&#xff1f; 一、什么是智算中心的Scale-out网络和Scale-up网络 数据中心网络总体上可分为两大类&#xff1a;通算网络和智算网络。通算网络主要用于支持传统的计算任务和应用&#xff0c;如企业的IT系统、网站托管、电…

HCIA笔记7--OSPF协议入门

文章目录 0. 路由分类1. OSPF介绍1.1 概念1.2 报文类型 2. 邻接关系的建立2.1 邻居关系的建立2.2 邻接关系的形成2.3 ospf状态机 3. DR与BDR3.1 为什么要有DR和BDR&#xff1f;3.2 DR和BDR的选举原则 4. ospf的配置4.1 内部优先级 5. 问题5.1 三层环路如何解决&#xff1f; Ref…

mysql排序问题

mysql 建数据库时&#xff0c;需要指定 字符集 和 排序规则 建表时&#xff0c;也可以指定 也可以指定具体的字段 安照下面的sql顺序执行插入&#xff0c;它们的排序是什么样的&#xff1f; INSERT into test_sort (uid,create_time) VALUE (d,now()) INSERT into test_sort (u…

vulhub复现CVE-2021-44228log4j漏洞

目录 一&#xff1a;漏洞概述 二&#xff1a;漏洞原理 三&#xff1a;漏洞利用 lookup功能&#xff1a; JNDI解析器&#xff1a; ldap服务&#xff1a; RMI&#xff1a; 四&#xff1a;漏洞复现 4.1靶场 4.2dnslog测试 4.3部署jndi-injection-exploit 4.4打开监听端口 4.5触发请…