学习干货|等保测评2.0技术自查阶段(中)

admin 2024年2月22日22:11:26评论13 views字数 9542阅读31分48秒阅读模式

学习干货|等保测评2.0技术自查阶段(中)

0x01 前言    

    等级保护测评是根据我国网络安全体系制订的一系列保护流程,对于已有和将上线的业务服务的基础设施(系统、数据库、中间件等)进行的一系列检查、安全需要合规

    本次先行分享学习等保中的技术自查阶段知识,关于如:理论知识、机房环境、备案、拓扑等可以根据自身和现实情况进行学习、文章由上中下三篇组成,建议收藏,以备不时之需、使用PC查看效果最佳、全文较长,请静心观看。

    一般来说:业务系统的组成是由系统和数据库及中间件组成,被攻击的情况下,攻击者也是向此作为目的进行攻击

系统方面: Windows、Linux(Centos、Ubuntu、红帽及一些国产系统)数据库方面: Mysql、Oracle、redis、mongodb、SQL server等中间件方面: Tomcat、nginx等逻辑方面: 双因子认证、应用审计与防范、数据完整性与保密性

    本次分享学习的是等保自查中的数据库阶段,关于系统自查阶段可翻阅以下链接

学习干货|等保测评2.0技术自查阶段(上)

* 资料仅作为分享、思路来源于互联网和现实学习复现、仅作为参考、实际根据现实情况操作

0x02 测评过程

一. Mysql数据库测评

以Mysql&Linux为例、实际根据自身环境操作

1. 身份的鉴别

a). 对登录的用户进行身份鉴别,并确保密码复杂度并定期更换密码

以Linux为例,使用mysql -u root -p登录,是否需要密码登录Mysql安装后默认口口令

学习干货|等保测评2.0技术自查阶段(中)

输入以下命令查找数据库中存在的账号select user, host FROM mysql.user;

学习干货|等保测评2.0技术自查阶段(中)

通过输入以下命令查看是否有账户存在空口令mysql 5.7以下输入select * from mysql.user where length(password)= 0 or password is nullmysql 5.7以上输入select user,authentication_string from mysql.user

学习干货|等保测评2.0技术自查阶段(中)

Mysql输入以下口令查看密码复杂度配置show variables like 'validate%';

学习干货|等保测评2.0技术自查阶段(中)

注: mysql默认没有安装复杂度插件,版本问题安装以下方法Windows-mysql8.0以下版本在配置文件my.ini或my.cnf中输入plugin-load-add=validate_password.dllLinux-mysql8.0以下版本在配置文件my.ini或my.cnf中输入plugin-load-add=validate_password.so8.0以上版本在mysql内直接输入命令进行安装INSTALL COMPONENT 'file://component_validate_password';

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

validate_password.check_user_name    密码不能包含用户名validate_password.dictionary_file    指定密码配置文件validate_password.length             密码最小长度validate_password.mixed_case_count   密码至少包含一个大小写字母validate_password.number_count       密码至少包含一个数字validate_password.policy             密码默认复杂度validate_password.special_char_count 密码至少包含一个特殊字符在安装完插件后默认以上截图配置,可根据具体需求进行配置set global validate_password.length=8;

b). 限制非法登录、登录超时、防止暴力破解等

Mysql默认未安装connection_control插件输入 show variables like '%connection_control%'; 返回结果为空即未安装

学习干货|等保测评2.0技术自查阶段(中)

Mysql 5.7-8.0之间基本都是在My.iniMy.cnf配置文件导入connection_control.dllconnection_control.so导入方法plugin-load-add=插件名但是在8.0以上版本,就需要使用mysql命令方式直接安装INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';show variables like 'connection_control%';

学习干货|等保测评2.0技术自查阶段(中)

以上输出结果为插件默认值,可根据实际情况改动connection_control_failed_connections_threshold    登录失败次数connection_control_max_connection_delay            响应延迟最大时间connection_control_min_connection_delay            登录失败后延迟最小时间set global connection_control_max_connection_delay=24*60*60*1000;    对响应最大延迟做改动
输入以下命令查看超时返回值show variables like "%timeout%";其中wait_timeout字段默认为8小时意为连接空闲时间不操作8小时后端口,默认不符合具体根据自身要求更改

学习干货|等保测评2.0技术自查阶段(中)

c). 应当防止在远程控制时、传输信息被监听

登录用户均为locohost为本地,则略过
如存在远程管理则执行以下命令查看是否开启SSLshow variables like "%have_openssl%"show variables like "%have_ssl%"

学习干货|等保测评2.0技术自查阶段(中)

2. 访问权限的控制

a). 对登录的账户分配对应的权限

执行以下命令结合自身环境确定是否为对应权限select user,host from mysql.user;

学习干货|等保测评2.0技术自查阶段(中)

输入以下命令查看是否只有root用户存在分配权限的权限,其他用户没有show grants for '用户名'@' localhost';

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

b). 默认多余、可疑用户删除操作,及空口令进行设密

执行以下命令查看是否存在以上情况select user,host FROM mysql.user;

学习干货|等保测评2.0技术自查阶段(中)

c). 删除或禁用多余、共享、过期、锁定账户

执行以下命令查看用户状态select user,account_locked from mysql.user;

学习干货|等保测评2.0技术自查阶段(中)

d). 授予用户最小权限,实现权限分离

输入以下命令查看select * from mysql.user;注:命令行输出不规整,但是策略原因调整,使用工具连不上,直接使用其他方式输出除root用户以外,其他用户不允许有user表的增删改权限

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

输入以下命令查看此角色是否除了本身权限外具有其他角色select * from mysql.user where user='用户名';

学习干货|等保测评2.0技术自查阶段(中)

e). 设定的访问策略、主体和客体之间的访问规则

select * from mysql.user      检查用户权限select * from mysql.db        检查数据库权限select * from mysql.columns_priv    检查列权限登录其他用户/普通用户 查看有无越权行为

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

3. 安全审计

a). 启用安全审计功能、记录每个用户行为和事件作为审计

执行以下语句,查看日志开启及存放的结果  默认不开启 不符合show global variables like '%general%';

学习干货|等保测评2.0技术自查阶段(中)

b). 审计记录(包含日期、用户、时间、事件类型等信息)

输入以下命令查询select * from general_log;  以下不符合将以上general_log开启后等待时间,过段时间在进行查询

学习干货|等保测评2.0技术自查阶段(中)

c). 应用审计定期备份、防止被删除、覆盖

应当只有root用户可操作日志定期对日志进行备份,可采用第三方工具或脚本进行备份其他用户对日志没有增删改的权限

4. 入侵防范

a). 对于远程管理进行限制指定用户访问进行配置

select user,host from mysql.user;user表中的host值不应为%,应为空或localhost特殊情况除外

学习干货|等保测评2.0技术自查阶段(中)

b). 及时发现漏洞并确认,及时打补丁修复

show variables where variable_name like "version"查看当前数据库版本mysql --version  或者此命令也可以

学习干货|等保测评2.0技术自查阶段(中)

二. Redis数据库测评

1. 身份的鉴别

a). 对登录的用户进行身份鉴别,并确保密码复杂度并定期更换密码

Redis默认是无需密码登录的,直接输入redis-cli 即可进入

学习干货|等保测评2.0技术自查阶段(中)

需要在redis.conf文件内找到 requirepass字段配置文件一般在redis目录下,或使用find查找一般是被注释掉的,删除井号后在requirepass后面加入密码即可

学习干货|等保测评2.0技术自查阶段(中)

在redis中没有账号的概念,所以需要定期更改密码登录使用auth 密码的形式登录

学习干货|等保测评2.0技术自查阶段(中)

b). 限制非法登录、登录超时、防止暴力破解等

超时操作退出也是在redis.conf文件中 有timeout参数0为永不退出、可根据实际情况进行设置

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

c). 应当防止在远程控制时、传输信息被监听

在redis中默认明文传输、具体采用加密传输以自身环境和条件选择默认不符合

学习干货|等保测评2.0技术自查阶段(中)

2. 访问权限的控制

a). 对登录的账户分配对应的权限

无用户概念,无需分配权限

b). 默认多余、可疑用户删除操作,及空口令进行设密

无用户概念或者多余用户,只有一个密码

c). 删除或禁用多余、共享、过期、锁定账户

无用户概念

d). 授予用户最小权限,实现权限分离

无权限概念

e). 设定的访问策略、主体和客体之间的访问规则

无主体客体之间的关系

3. 安全审计

a). 启用安全审计功能、记录每个用户行为和事件作为审计

redis.conf配置文件中,有logleverlogfile两个参数loglever代表日志等级 通常为noticedebugverbosewarninglogfile为日志输出位置我这已经配置了,如没有配置根据自身环境需求配置即可

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

b).审计记录(包含日期、用户、时间、事件类型等信息)

日志会根据时间进行更新输出、一般符合

学习干货|等保测评2.0技术自查阶段(中)

c). 应用审计定期备份、防止被删除、覆盖

644权限、一般不删除永久保存

学习干货|等保测评2.0技术自查阶段(中)

4. 入侵防范

a). 对于远程管理进行限制指定用户访问进行配置

redis.conf的配置文件中、有bind参数,改为127.0.0.1(本地访问)或指定管理IP即可

学习干货|等保测评2.0技术自查阶段(中)

b). 及时发现漏洞并确认,及时打补丁修复

redis的漏洞比较多 如未授权 GETshell等这个和日常管理、版本都有关系 剩下的就是渗透老哥的活了

三. Oracle数据库测评

以Oracle 19c数据库版本为例

1. 身份的鉴别

a). 对登录的用户进行身份鉴别,并确保密码复杂度并定期更换密码

sysdba是最高权限用户,oracle默认无空口令sysdba乱输密码可能会登录进去,可修改sqlnet.ora文件

学习干货|等保测评2.0技术自查阶段(中)

oracle默认无空口令,默认符合使用 以下语句查询 (因SQLPLUS展示不直观、使用PL/SQL)Select username,account_status from dba_users;

学习干货|等保测评2.0技术自查阶段(中)

通过以下语句查看密码复杂度策略、一般默认为空,查询为null则不符合SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_VERIFY_FUNCTION';-- 因配置Oracle篇幅长、可自行网上搜索设置

学习干货|等保测评2.0技术自查阶段(中)

b). 限制非法登录、登录超时、防止暴力破解等

使用以下语句查询登录次数限制SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='FAILED_LOGIN_ATTEMOTS';通过以下语句进行设置、根据自身需求进行配置ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 8

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

以下语句表示重试失败后锁定时长、默认为一天SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_LOCK_TIME';使用以下语句可修改ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME 1/24 改为一小时

学习干货|等保测评2.0技术自查阶段(中)

以下语句查询登录超时限制、默认不限制SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='IDLE_TIME';

学习干货|等保测评2.0技术自查阶段(中)

c). 应当防止在远程控制时、传输信息被监听

SQLPLUS或PL/SQL默认为加密传输  默认符合

2. 访问权限的控制

a). 对登录的账户分配对应的权限

以下语句查询数据库中存在的用户(最低有两个可用用户)是否限制匿名、多余、默认用户的访问情况MGMT_UIEW,SYSTEM,SYS,DBSNMP 用户名为启用、其他为禁用,则符合Select username,account_status from dba_users;

学习干货|等保测评2.0技术自查阶段(中)

b). 默认多余、可疑用户删除操作,及空口令进行设密

基本上开放且常用的默认用户为sys及systemsys默认口令为CHANGE_ON_INSTALLSYSTEM:MANAGERDBSNMP的默认口令为:DBSNMP自行登录测试

c). 删除或禁用多余、共享、过期、锁定账户

以下语句进行查询、默认不符合Select username,account_status from dba_users;

学习干货|等保测评2.0技术自查阶段(中)

d). 授予用户最小权限,实现权限分离

以下语句查询到状态为open的用户Select username,account_status from dba_users;以下语句查询最高权限授予用户,是否进行权限分离select * from dba_tab_privs where grantee='SYS'  ORDER BY GRANTEE;

学习干货|等保测评2.0技术自查阶段(中)

通过输入以下语句查看public是否被授权给用户,存在就不符合select granted_role from dba_role_privs where grantee='PUBLIC';

学习干货|等保测评2.0技术自查阶段(中)

e). 设定的访问策略、主体和客体之间的访问规则

根据自身环境进行确定、是否有专门用户进行分配权限,是否存在专门访问策略

3. 安全审计

a). 启用安全审计功能、记录每个用户行为和事件作为审计

通过以下语句查询是否开启普通用户审计show parameter audit_trail默认DB 开启  none为未开启

学习干货|等保测评2.0技术自查阶段(中)

以下语句查询所有用户的审计是否开启select * from dba_stmt_audit_opts;select * from dba_priv_audit_opts;下图为符合

学习干货|等保测评2.0技术自查阶段(中)

show parameter audit_sys_operations返回结果 audit_sys_operations     boolean  TRUE 代表已对SYSDBA或SYSOPER特权连接时直接发出的SQL语句进行审计符合

学习干货|等保测评2.0技术自查阶段(中)

b).审计记录(包含日期、用户、时间、事件类型等信息)

select * from aud$;查看审计日志的格式等、默认符合

学习干货|等保测评2.0技术自查阶段(中)

c). 应用审计定期备份、防止被删除、覆盖

根据实际情况、运维情况是否对日志、数据等定时备份,备份的策略和格式等是否只有特权用户可以访问、普通用户无法访问

d). 审计过程需防止未经授权的中断

如其他普通用户无法登录、则忽视登录其他普通用户、执行修改权限alter system set audit_trail=none;

4. 入侵防范

a). 最小化安装原则、仅安装需要组件和系统组件

执行以下语句查询所有组件、value为true为已安装select * from v$option;根据自身环境判断

学习干货|等保测评2.0技术自查阶段(中)

b). 关闭不需要的高危进程、端口、共享服务

Oracle不涉及、可忽略

c). 对于远程管理进行限制指定用户访问进行配置

查看Oracle安装的目录下sqlnet.ora文件tcp.validnode_checking/tcp/invited_nodes的配置是否为:               tcp.validnode_checking=yes               tcp,invited_nodes=()  得知是否设置了远程连接IP默认未设置

学习干货|等保测评2.0技术自查阶段(中)

d). 及时发现漏洞并确认,及时打补丁修复

根据自身环境进行确认是否定期进行漏扫计划存在漏洞及时打补丁等修复

四. MongoDB数据库测评

以 MongoDB 7.0.5版本为例

1. 身份的鉴别

a). 对登录的用户进行身份鉴别,并确保密码复杂度并定期更换密码

mongodb默认直接连接shell就能操作、无需密码默认不符合

学习干货|等保测评2.0技术自查阶段(中)

MongoDB只能手动添加账号密码db.createUser(  {    user: "adminUser",    pwd: "adminPassword",    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })adminUser 用户名adminPassword 密码userAdminAnyDatabase 为用户分配角色

学习干货|等保测评2.0技术自查阶段(中)

b). 限制非法登录、登录超时、防止暴力破解等

MongoDB不存在登录失败的情况

c). 应当防止在远程控制时、传输信息被监听

操作用户如均为localhost,则为本地管理、则忽略远程管理的情况根据实际判断

2. 访问权限的控制

a). 对登录的账户分配对应的权限

show users 查看mongodb的用户权限

学习干货|等保测评2.0技术自查阶段(中)

b). 默认多余、可疑用户删除操作,及空口令进行设密

MongoDB不存在默认用户、所需用户都是自行添加

c). 删除或禁用多余、共享、过期、锁定账户

根据实际情况进行排查删除

d). 授予用户最小权限,实现权限分离

根据实际情况查询所有用户,并根据实际情况添加不同权限的用户如下图

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

e). 设定的访问策略、主体和客体之间的访问规则

根据自身环境进行判断如果mongodb已进行了各角色权限划分,则符合

学习干货|等保测评2.0技术自查阶段(中)

3. 安全审计

a). 启用安全审计功能、记录每个用户行为和事件作为审计

检测配置文件mogond.cfg文件关于日志是否有误

学习干货|等保测评2.0技术自查阶段(中)

检查logmongod.log文件输入日志是否有误且根据自身环境是否有其他工具收集详细日志

学习干货|等保测评2.0技术自查阶段(中)

b).审计记录(包含日期、用户、时间、事件类型等信息)

还是查看logmongod.log文件是否有问题

学习干货|等保测评2.0技术自查阶段(中)

c). 应用审计定期备份、防止被删除、覆盖

根据自身情况进行日志备份、定期备份的策略保证日志保存超过6个月其他普通用户无权进行增删改

d). 审计过程需防止未经授权的中断

MongoDB建立不同权限的角色、基本默认符合,不会中断

学习干货|等保测评2.0技术自查阶段(中)

4. 入侵防范

a). 最小化安装原则、仅安装需要组件和系统组件

MongoDB可忽略此检查项

b). 关闭不需要的高危进程、端口、共享服务

MongoDB可忽略此检查项

c). 对于远程管理进行限制指定用户访问进行配置

在配置文件mongod.cfg文件中的network interface0.0.0.0表示不限制IP连接如指定某些IP连接,可在默认的bindip127.0.0.1后加入使用,分隔

学习干货|等保测评2.0技术自查阶段(中)

d). 及时发现漏洞并确认,及时打补丁修复

根据自身环境进行确认是否定期进行漏扫计划存在漏洞及时打补丁等修复

四. SQL Server数据库测评

以SQL Server 2022为例

SQL server是微软开发的数据库产品、也可称为MSsql

1. 身份的鉴别

a). 对登录的用户进行身份鉴别,并确保密码复杂度并定期更换密码

SQL server没有密码复杂度策略,它的密码复杂度是由本地操作系统决定的与Windows相关联的、且需要开启强制实施密码策略

学习干货|等保测评2.0技术自查阶段(中)

在安全性依次点击查看强制实施密码策略及强制密码过期

学习干货|等保测评2.0技术自查阶段(中)

SQL Server和系统绑定添加d额账号且未禁用的状态下,无需密码即可登录

学习干货|等保测评2.0技术自查阶段(中)

尝试建立弱口令账户、是否可以建立成功

学习干货|等保测评2.0技术自查阶段(中)

b). 限制非法登录、登录超时、防止暴力破解等

与本地系统策略同步,WIN+R输入secpol.msc即可查看根据自身要求进行配置

学习干货|等保测评2.0技术自查阶段(中)

关于远程登录超时,SQL Server默认配置可以使用SSMS查询到默认为21亿多秒sp_configure

学习干货|等保测评2.0技术自查阶段(中)

可在服务器属性查看客户端远程连接数据库超时配置

学习干货|等保测评2.0技术自查阶段(中)

c). 应当防止在远程控制时、传输信息被监听

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

学习干货|等保测评2.0技术自查阶段(中)

2. 访问权限的控制

a). 对登录的账户分配对应的权限

select * from syslogins 列出所有账户判断是否存在默认账户,默认账户是否删除或禁用

学习干货|等保测评2.0技术自查阶段(中)

b). 默认多余、可疑用户删除操作,及空口令进行设密

select * from syslogins主要检查sa账户是否存在禁用或重命名的情况其他默认账户的权限情况

学习干货|等保测评2.0技术自查阶段(中)

c). 删除或禁用多余、共享、过期、锁定账户

根据实际情况检查默认、多余、过期、无人使用的账户进行禁用删除select * from syslogins根据实际情况列出用户名及使用情况进行删除

d). 授予用户最小权限,实现权限分离

sp_helplogins 查看数据库登录用户的权限select * from sys.sql_logins 查看is_disabled值为1代表锁定

学习干货|等保测评2.0技术自查阶段(中)

学习干货|等保测评2.0技术自查阶段(中)

e). 设定的访问策略、主体和客体之间的访问规则

根据实际情况判定相关是否存在策略查看管理员权限(如数据库启用了身份鉴别,则符合)

3. 安全审计

a). 启用安全审计功能、记录每个用户行为和事件作为审计

通过 sp_configure 命令查看如下配置是否开启日志如命令未查询到、可选择服务器-属性-安全性查看C2审核

学习干货|等保测评2.0技术自查阶段(中)

在管理-server日志查看相关日志

学习干货|等保测评2.0技术自查阶段(中)

b).审计记录(包含日期、用户、时间、事件类型等信息)

在管理-SQL Server日志查看相关详细日志

学习干货|等保测评2.0技术自查阶段(中)

c). 应用审计定期备份、防止被删除、覆盖

根据自身情况进行日志备份、定期备份的策略保证日志保存超过6个月其他普通用户无权进行增删改

d). 审计过程需防止未经授权的中断

SQL Server建立不同权限的角色、基本默认符合,不会中断

4. 入侵防范

a). 最小化安装原则、仅安装需要组件和系统组件

SQL Server可忽略此检查项

b). 关闭不需要的高危进程、端口、共享服务

SQL Server可忽略此检查项

c). 应当防止在远程控制时、传输信息被监听

SQL Server没有远程连接限制的相关配置、多数限制数据库登录服务器配置

d). 及时发现漏洞并确认,及时打补丁修复

根据自身环境进行确认是否定期进行漏扫计划存在漏洞及时打补丁等修复select @@version 查看相关版本

学习干货|等保测评2.0技术自查阶段(中)

0x03 总结

关于数据库类,有些无法或无需做的一些操作未写、关于 恶意代码的防范、可信验证、数据完整性、数据保密性、数据备份的操作等文字描述未写,未进行套用模板、只写了关于重要的技术流程自查,其他包含逻辑方面、企业提供信息方面、拓扑方面、实地物理问题等由自身情况判断或在等保测评公司专业评定

原文始发于微信公众号(州弟学安全):学习干货|等保测评2.0技术自查阶段(中)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月22日22:11:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   学习干货|等保测评2.0技术自查阶段(中)http://cn-sec.com/archives/2513839.html

发表评论

匿名网友 填写信息