等保2.0测评:mongoDB数据库
ccwgpt 2025-01-14 11:21 40 浏览 0 评论
一、MongoDB介绍
MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
本次安装环境为Windows10专业版操作系统,数据库版本为5.0.8,单机部署过程比较简单就不在此进行讲解。本文针对MongoDB等保测评进行实际操作,不妥之处还恳请留言指正,共同学习。
二、身份鉴别
a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
1)MongoDB服务在安装后默认未开启权限验证,默认是空账户、空口令,这就导致了任何人无需进行账号认证就可以登陆到数据服务器(同时身份标识的唯一性就得不到满足),未启用身份验证时执行命令“mongo"即刻对数据库进行任意操作:
2)检查mongod.cfg配置文件中修改auth=true,启用身份认证,执行命令:“mongo"后输入其他命令结果显示权限不足或不显示:
3)MongoDB自身不具备设置登录账户的口令复杂度和定期更换口令的策略,仅通过管理员自行设置口令复杂度:
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
据了解,mongoDB好像不具备登录失败处理功能。
c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
1)是否采用加密等安全方式对系统进行远程管理是否用户都是localhost,全为localhost则为本地管理,可判定为不适用。
2)远程管理根据实际管理情况进行判定(如了解数据库管理工具采用什么措施防止鉴别信息在传输过程中被窃听)
d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
访谈管理员并进行验证,是否采用双因子身份鉴别技术,鉴别技术是什么 。实际实现双因素认证比较困难,一般情况判定为不符合。
三、访问控制
a) 应对登录的用户分配账户和权限;
执行命令“show users”查看mongoDB中的账户的管理权限:
b) 应重命名或删除默认账户,修改默认账户的默认口令
mongoDB不存在默认账户,可根据需要建立不同权限的账户,所有账户都是用户自行建立。
c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在
1)询问管理员数据库中的账户使用情况,是否存在无人使用的账户,如果存在建议删除。
2)检查网络管理员,安全管理员、系统管理员不同用户是否采用不同账户登录数据库。
d) 应授予管理用户所需的最小权限,实现管理用户的权限分离
执行命令“show users”查看mongoDB中的账户的管理权限是否不同,是否建立三员。
e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则
1)访谈和查看管理员是否制定了访问控制策略;
2)查看管理员权限;(此测评点如果mongoDB已经启用身份鉴别,且具备权限分离可判定为符合)
f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级
结合a)、b)、c)、d)、e)项,并访谈管理员并核查访问控制粒度主体是否为用户级,客体是否为数据库表级。
(此测评点多数测评机构判定为符合)
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
通过访谈管理员是否对重要主体和客体设置安全标记。mongoDB自身应该不具备这个功能,可能依赖操作系统或者第三方来实现。该项一般默认都不符合。
四、安全审计
a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
1)确保日志记录捕获尽可能多的信息安全审计,检查mongod.cfg配置文件中是否添加quiet: false
2)可检查mongod.log的日志文件记录是否正常:
3)访谈管理员是否通过第三方工具(数据库审计系统)收集审计数据进行分析。
b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
1)检查mongod.log的日志文件:
2)核查是否部署第三方工具(数据库审计系统)增强MySQL日志功能。记录第三方审计工具的审计内容,查看是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等
应保证各个管理员尽可以访问与自身相关的日志文件,如关键日志仅允许特权账户访问
1)访谈管理员对审计记录如何保护,对审计记录是否定期备份,备份策略。
是否采取了备份、转存等手段对审计记录进行保护,避免未预期的删除、修 改或覆盖,数据库本地日志保存时间超过6个月。采用第三方数据库审计产品,审计记录保存时间超过6个月。
2)是否严格限制用户访问审计记录的权限,可以通过普通用户登录然后是否能够访问修改删除日志。
d) 应对审计进程进行保护,防止未经授权的中断
根据mongoDB可以根据权限建立各类型的账户,可以防止审计进程未经授权的终端:
五、入侵防范
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序
数据库系统此测评项可判定为不适用。
b) 应关闭不需要的系统服务、默认共享和高危端口
数据库系统此测评项不适用。
c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
修改bindIp的地址127.0.0.1表示本地管理,如果修改为0.0.0.0表示任意地址连接,需要指定连接可在127.0.0.1后添加具体IP地址,IP地址之间用“,”隔开。
d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求
数据库系统此测评项不适用。
e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
1、 访谈管理员是否定期或不定期进行漏洞扫描或渗透测试,周期按照天/月/季度/半年/年等方式(建议漏洞扫描周期最长半年一次)。
2、通过本次漏洞扫描是否发现与数据库相关的高危漏洞,若存在,是否及时进行漏洞修补。
f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
数据库系统此测评项不适用。
六、恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断
数据库系统此测评项不适用。
七、可信验证
可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心
通过访谈管理员,是否采取了可信技术,可信技术主要是基于可信芯片、可信根,目前实现此技术的可能性不大,判定为不符合。
八、数据完整性
a)应采用密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
传输过程中的完整性一般是通过通信协议来实现的,常见的包括TLS、SSH等协议,对数据库而言,查看是否启用了安全协议进行数据通信,同时询问下管理人员,确认是否还有其他保证数据传输过程中的完整性措施。
(本地管理判定为不适用,远程管理根据实际情况判定)
b)应采用密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
对数据库配置文件进行一个完整性检测,需要配置文件初始可信状态时的哈希值,然后再根据目前的文件生成一个哈希值,对比前后的一致性,确认数据是否被篡改过,根据了解一般数据库自身不带这种机制,询问管理人员是否使用了第三方软件对数据库重要数据进行了完整性校验。
根据网上部分技术人员的说法,总结一种数据完整性校验方法(可能不对):mongoDB通过journaling保证意外故障下的数据完整性,MongoEvent来实现对于数据的校验(具体怎么实现还望留言指导)。
实际操作中可核查数据库表中的业务数据、审计数据有无存在哈希字段,据了解数据在前端一般通过json或xml格式进行传输,相关数据库表字段中具有完整性校验字段。目前一般做不到,判定为不符合。
九、数据保密性
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
此处主要针对鉴别信息(其他像业务数据、审计数据和配置数据一般情况未加密)传输相关的参数大致有下类三个:
SCRAM-SHA-256属于挑战-响应架构, 可防止密码在不可信连接上嗅探,并支持以密码散列的形式将密码存储在服务器上, 这种形式被认为是安全的。
MD5使用自定义安全性较低的质询-响应机制。 它可以防止密码嗅探,并避免以纯文本形式将密码存储在服务器上, 但如果攻击者设法从服务器窃取密码哈希,则不提供保护。(MD5哈希算法现在不再被认为是安全的算法)
若password是以明文密码传送给数据库,建议不在生产环境中使用。若数据库未开启SSL时,我通过Wireshare对数据库认证过程的数据包进行抓取,可能发现传输的密码字段信息。
总结,最直接验证的办法就是抓包验证重要的加密数据(鉴别数据、需要加密的业务数据、个人信息等)是否明文传输。
b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
检查数据库表中的重要数据是否明文存储,根据经验除鉴别数据外,业务数据、审计数据实际很少加密存储,所以一般不符合或者部分符合。如果使用数据库加密功能,就可以符合符合,数据库加密主要分库内加密和库外加密,库内加密主要是调用的数据库本身的加密功能,库外加密主要通过第三方厂家的数据库加密功能。
据了解,MongoDB数据库自身提供了加密机制, 在数据库内核实现了存储的加密。这种加密方式能防止磁盘丢失和文件被复制导致的敏感数据泄漏。但是,对于控制了数据库系统的攻击者来说却是开放的, 并没有防护能力。而且其密钥管理通常不会对数据库用户开放,安全性得不到保证。
十、数据备份恢复
a)应提供重要数据的本地数据备份与恢复功能;
1)访问管理员配置数据、审计数据、业务数据的备份策略,检查备份策略的备份情况与管理员所说是否一致,是否具有恢复测试记录。
(1)、MongoDB数据库备份:mongodump -h dbhost -d dbname -o dbdirectory
参数说明:
-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据。
(2)、MongoDB数据库恢复:mongorestore -h dbhost -d dbname --dir dbdirectory
参数或名:
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--dir:备份数据所在位置,例如:/home/mongodump/itcast/
--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。
2)可以通过数据库管理工具进行备份,如navicat等工具,工具具备mongoDB自带的逻辑备份。它的备份原理是通过协议连接到mongoDB数据库,将需要备份的数据查询出来。
b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地;
部署异地备份机房,并符合备份策略通过网络定期进行异地备份。
c)应提供重要数据处理系统的热冗余,保证系统的高可用性;
集群部署、双机热备均可判定为符合。
十一、剩余信息保护
a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;
一般情况下数据库系统内核层默认无法实现剩余信息保护功能,需要第三方工具才能实现。
b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
一般情况下数据库系统内核层默认无法实现剩余信息保护功能,需要第三方工具才能实现。
十二、个人信息保护
a)应仅采集和保存业务必需的用户个人信息;
检查数据库中是否存储个人信息,若有,检查个人信息保护机制和个人信息保护管理制度
b)应禁止未授权访问和非法使用用户个人信息。
检查个人信息保护机制和个人信息保护管理制度,验证非授权人员是否可以访问个人信息存储的相关组件内容。
十三、总结
在等保测评检查中会发现mongoDB很多都不满足等保的一些控制点的要求,它的功能和MySQL、Oracle相比单一不少,等保测评机构提出整改问题后,数据库使用单位加固也是一件比较困难的事,可能需要第三方工具协助才能完整加固整改工作,还是比较麻烦的一件事。
相关推荐
- 定时任务工具,《此刻我要...》软件体验
-
之前果核给大家介绍过一款小众但实用的软件——小说规则下载器,可以把网页里的小说章节按照规则下载到本地,非常适合喜欢阅读小说的朋友。有意思的是,软件作者当时看到果核写的体验内容后,给反推荐到他的帖子里去...
- 前端定时任务的神库:Node-cron,让你的项目更高效!
-
在前端开发中,定时任务是一个常见的需求。无论是定时刷新数据、轮询接口,还是发送提醒,都需要一个可靠且灵活的定时任务解决方案。今天,我要向大家介绍一个强大的工具——Node-cron,它不仅能解决定时任...
- Shutter Pro!一款多功能定时执行任务工具
-
这是一款可以在电脑上定时执行多种任务的小工具,使用它可以根据时间,电量等来设定一些定时任务,像定时打开程序、打开文件,定时关机重启,以及定时弹窗提醒等都可以轻松做到。这是个即开即用的小工具,无需安装,...
- 深度解析 Redis 缓存击穿及解决方案
-
在当今互联网大厂的后端开发体系中,Redis缓存占据着极为关键的地位。其凭借高性能、丰富的数据类型以及原子性操作等显著优势,助力众多高并发系统从容应对海量用户的访问冲击,已然成为后端开发从业者不可或...
- 从零搭建体育比分网站完整步骤(比较好的体育比分软件)
-
搭建一个体育比分网站是一个涉及前端、后端、数据源、部署和维护的完整项目。以下是从零开始搭建的详细流程:一、明确项目需求1.功能需求:实时比分展示(如足球、篮球、网球等)支持多个联赛和赛事历史数据查询比...
- 告别复杂命令行:GoCron 图形界面让定时任务触手可及
-
如果你是运维人员或者经常接触一些定时任务的配置,那么你一定希望有一款图形界面来帮助你方便的轻松配置定时任务,而GoCron就是这样一款软件,让你的配置可视化。什么是GoCron从名字你就可以大概猜到,...
- Java任务管理框架核心技术解析与分布式高并发实战指南
-
在当今数字化时代,Java任务管理框架在众多应用场景中发挥着关键作用。随着业务规模的不断扩大,面对分布式高并发的复杂环境,掌握其核心技术并进行实战显得尤为重要。Java任务管理框架的核心技术涵盖多个方...
- 链表和结构体实现:MCU软件定时器(链表在单片机中的应用)
-
在一般的嵌入式产品设计中,介于成本、功耗等,所选型的MCU基本都是资源受限的,而里面的定时器的数量更是有限。在我们软件设计中往往有多种定时需求,例如脉冲输出、按键检测、LCD切屏延时等等,我们不可能...
- SpringBoot定时任务(springboot定时任务每小时执行一次)
-
前言在我们开发中,经常碰到在某个时间点去执行某些操作,而我们不能人为的干预执行,这个时候就需要我们使用定时任务去完成该任务,下面我们来介绍下载springBoot中定时任务实现的方式。定时任务实现方式...
- 定时任务新玩法!systemd timer 完整实战详解
-
原文链接:「链接」Hello,大家好啊!今天给大家带来一篇使用systemdtimer实现定时任务调度的详细实战文章。相比传统的crontab,systemdtimer更加现代化、结构清晰...
- Celery与Django:打造高效DevOps的定时任务与异步处理神器
-
本文详细介绍了Celery这一强大的异步任务队列系统,以及如何在Django框架中应用它来实现定时任务和异步处理,从而提高运维开发(DevOps)的效率和应用性能。下面我们先认识一下Cele...
- 订单超时自动取消的7种方案,我用这种!
-
前言在电商、外卖、票务等系统中,订单超时未支付自动取消是一个常见的需求。这个功能乍一看很简单,甚至很多初学者会觉得:"不就是加个定时器么?"但真到了实际工作中,细节的复杂程度往往会超...
- 裸机下多任务框架设计与实现(gd32裸机配置lwip 网络ping不通)
-
在嵌入式系统中,特别是在没有操作系统支持的裸机环境下,实现多任务执行是一个常见的挑战。本文将详细介绍一种基于定时器的多任务框架设计,通过全局时钟和状态机机制,实现任务的非阻塞调度,确保任务执行中不会出...
- 亿级高性能通知系统构建,小白也能拿来即用
-
作者介绍赵培龙,采货侠JAVA开发工程师分享概要一、服务划分二、系统设计1、首次消息发送2、重试消息发送三、稳定性的保障1、流量突增2、问题服务的资源隔离3、第三方服务的保护4、中间件的容错5、完善...
- 运维实战:深度拆解Systemd定时任务原理,90%的人不知道的玩法
-
运维实战:深度拆解Systemd定时任务原理,90%的人不知道的高效玩法一、Systemd定时任务的核心原理Systemd定时任务是Linux系统中替代传统cron的现代化解决方案,通过...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)