由于本人也不是做运维的,这个Redis数据库是一个缓存数据库,具体怎么用,在项目中怎么部署我不太清楚,这里仅针对于等保的测评要求,对其进行分析如何配置相应的策略。如有不对的地方,欢迎指正哈。
前期调研
针对于等保前期系统情况方面,这里我们要了解的是数据库的版本。
查看数据库版本:运维人员一般都会配置redis命令的环境变量,如果下面命令不行就用 find 找吧,一些基础知识这里就不说了。
1)服务器本地查看
代码语言:javascript复制redis-server -v
redis-server --version
2)登录到数据库内查询
登录数据库:redis-cli -h 127.0.0.1 -p 6379 -h后面跟ip,-p跟端口
一般是本地登录,直接 redis-cli 即可登录,当然前提是没有修改过Redis的服务端口。
登录到数据库后,我们输入:info
一、身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
1. 身份鉴别和标识
默认情况下redis数据库是无口令直接登录的:直接输入redis-cli 即可登录
所以我们要查看redis配置文件,一般为redis.conf,在redis主目录下
查看requirepass参数是否不为注释状态:
如果不是注释状态,如上图,后面跟着的 *y@123 就是密码,是明文存储的。
如果设置过口令,则会提示
注意:这里没有用户的概念,只能加一个口令验证。
2. 身份鉴别信息具有复杂度并定期更改
没办法满足这个要求,无口令复杂度、最长使用期限设置功能。
这里核查用户当前口令复杂度是否满足要求。
扩展:Redis 数据库开启口令验证
1)通过配置文件进行配置
在 redis.conf 中找到 requirepass foobared参数
取消requirepass前面的注释,并将将foobared改成相应密码,然后重启数据库即可
再尝试登录,此时可以连接,但无法执行一些相关命令
需要使用auth password命令进行登录
或者使用 redis-cli -h 127.0.0.1 -p 6379 -a “mypass” 进行登录(不建议使用)
因为这样明文密码会留存到 history 里面,不安全。
2)通过命令行配置(临时)
代码语言:javascript复制config set requirepass ***y@1234
config get requirepass
然后尝试配置文件中配置的老密码登录redis,会发现原来的不可用,被拒绝
但是再重启redis后,将会引用配置文件中的口令
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施
1. 登录失败处理功能
没有这个功能,询问管理人员是否有第三方措施。
默认不符合。
2. 操作超时自动退出功能
查看redis配置文件,一般为redis.conf,在redis主目录下
查看timeout的值,默认为0永不退出
这里设置的就是,120秒退出后要求重新进行身份鉴别。
超过这个时间它就要求重新进行身份鉴别了。
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听
默认情况下:
抓包出来是明文传输的
这个要去询问管理人员是否做了相关措施防止鉴别信息在传输过程中被窃听。
默认不符合。
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现
这个一般不会去做,我们只要现场核查它是否使用了双因素认证就行了。
二、访问控制
由于Redis数据库没有用户这个概念,通过单一的口令验证就可以登录,拥有所有权限,所以针对访问控制这个控制点,有些是判不适用,有些是判不符合的,这个我觉得可以根据机构自己的要求来进行判断,毕竟目前没有一个统一的标准。
a)应对登录的用户分配账户和权限
无用户概念,通过口令验证,拥有所有权限。
b)应重命名或删除默认账户,修改默认账户的默认口令
无默认账户存在。不适用
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在
无账户概念。
d)应授予管理用户所需的最小权限,实现管理用户的权限分离
无法分权,做不到。
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则
无授权主体。
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级
无用户概念。
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
做不到。
三、安全审计
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
查看redis配置文件,一般为redis.conf,在redis主目录下
查看loglevel、logfile参数,我安装的该版本默认情况下:
redis支持通过loglevel配置项设置日志等级,共分四级,即debug、verbose、notice、warning。
redis也支持通过logfile配置项来设置日志文件的生成位置。如果设置为空字符串,则redis会将日志输出到标准输出,日志将会发送给/dev/null。
这里我们配置一下,将日志输出到如下文件中。
重启后,日志就会写入到这个文件中
所以这里我们要确定两个参数:loglevel、logfile。
且logfile必须要配置,因为不配置就不会留存对应的日志了。
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
默认符合,日志时间跟随系统时间。比如我刚重启了数据库,就会产生对应日志。
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等
存储在操作系统上的日志文件权限,不得超过644,默认不删应该永久保存。
定期备份问题,询问管理人员是否有做即可。
d)应对审计进程进行保护,防止未经授权的中断
默认符合。
无法中断日志文件输出,但是可以修改日志记录等级。
四、入侵防范
以下条款为:不适用
a)应遵循最小安装的原则,仅安装需要的组件和应用程序
b)应关闭不需要的系统服务、默认共享和高危端口
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求
f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警
涉及到的:
c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制
找到redis的配置文件,一般为redis.conf,可以先找NETWORK,下面会有个bind
注释情况下为任意IP访问,可设置指定 IP,以空格分割。这里只要看bind后面跟的ip地址即可。
e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞
这条就结合漏扫、测试等方法进行判断,redis这玩意可是出了名的漏洞多。。
像非授权访问漏洞,本地也测试过能成功,这里就不细说了,交给渗透工程师去看吧,然后我们等保的拿他们的报告确认是否存在对应漏洞即可。
五、数据完整性
针对这个数据库,下面两条默认都是不符合。询问管理人员是否做了相关措施来保证数据的完整性。
a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
六、数据保密性
这个保密性同理,针对这个数据库,下面两条默认都是不符合。询问管理人员是否做了相关措施来保证数据的保密性。
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等
b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等
七、数据备份恢复
a) 应提供重要数据的本地数据备份与恢复功能
这个没啥好说的,直接去问管理人员备份怎么做的,是否有措施保证备份数据有效(有测试记录即可)。
b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地
询问管理员
c)应提供重要数据处理系统的热冗余,保证系统的高可用性
这个根据实际情况来看,是否有热冗余的必要性。没有个人认为可判不适用。