等保2.0之Hana数据库测评
2023-8-22 15:54:46 Author: www.freebuf.com(查看原文) 阅读量:8 收藏

HANA(High-Performance Analytic Appliance)是由SAP开发的一种内存数据库。它是一款面向实时数据处理和分析的高性能数据库解决方案。

HANA数据库具有以下特点:

  1. 内存计算:HANA利用内存作为主要存储介质,通过将数据存储在内存中,实现了更快的数据访问速度和查询响应时间。
  2. 列存储:HANA使用列存储技术,将数据按列进行存储,提供了更高的数据压缩比和更快的数据扫描速度,尤其适合分析型查询。
  3. 数据压缩:HANA采用高效的数据压缩算法,可以极大地减少数据在内存中的占用空间。
  4. 并行处理:HANA支持并行处理,可以同时处理多个查询请求,提高系统的并发性能。
  5. 实时分析:HANA提供了强大的分析功能,包括复杂的查询、聚合、统计分析等,可以实现实时的数据分析和决策支持。

HANA数据库广泛应用于企业的各个领域,包括物流、金融、零售、制造等行业,以及大规模的数据仓库、商业智能和实时分析场景中。它提供了高性能、高可靠性和高扩展性的数据处理解决方案,帮助企业更好地管理和分析数据,从而提升业务效率和竞争力。

在上次的项目遇到的奇葩之一。Suse如果说基于Linux内核,指令和centos基本一致比较好测,那这个Hana简直就是奇葩。一开始根本无从下手,问了部门的前辈也没人知道这玩意。最后是上网找了语句才成功测评。

对了,测评时请让被测方使用权限比较高的管理员账户,不要随便拿个业务账户就来执行。权限不够的。

以下是根据等保三级的要求进行编制

一、身份鉴别

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

在Hana数据库中,可以通过两种方式查看密码复杂度策略。

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到相应的HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Security" -> "Authentication Method". 在 "Authentication Method" 下找到 "Password Policy",这里可以查看和配置密码复杂度策略。

  2. 使用命令行界面(SQL语句):使用具有管理员权限的用户登录到HANA数据库,并执行以下SQL语句来查询密码复杂度策略:

SELECT POLICY_NAME, PARAMETER_NAME, PARAMETER_VALUE FROM SYS.USER_VALIDATION_POLICIES;

以下是Hana数据库有关密码复杂度设置的一些参数。

  1. MINIMUM_LENGTH:密码最小长度要求。
  2. MIXED_CASE_REQUIRED:密码是否需要包含大小写字母。
  3. DIGIT_REQUIRED:密码是否需要包含数字。
  4. SPECIAL_CHAR_REQUIRED:密码是否需要包含特殊字符。
  5. MAX_INITIAL_REUSABLE_PASSWORDS:之前使用的密码不能作为新密码的再次使用次数。
  6. MAX_FAILED_LOGIN_ATTEMPTS:最大失败登录尝试次数。
  7. FAILED_LOGIN_LOCK_TIME:在连续失败登录尝试后,账户被锁定的时间(秒)。

b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。

登录失败策略请查看a项,密码复杂度策略中包含了登录失败策略的相关设置。

登录超时退出参数,有以下两种查看方式:

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到相应的HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Security" -> "Global INI Parameters"。在 "Global INI Parameters" 下可以找到各种全局参数配置,包括与登录超时退出有关的参数。

  2. 使用命令行界面(SQL语句):使用具有管理员权限的用户登录到HANA数据库,并执行以下SQL语句来查询登录超时退出参数:

SELECT * FROM SYS.M_INIFILE_CONTENTS 
WHERE FILE_NAME = 'indexserver.ini' AND SECTION = 'security'
AND SUBSECTION = 'authentication'
AND KEY LIKE '%timeout%';

这条SQL语句将返回与登录超时退出相关的参数及其值。其中,常见的参数包括:

  • session_timeout: 指定会话超时时间(秒)。
  • idle_timeout: 指定空闲连接超时时间(秒)。

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

Hana数据库是有工具的,类似SQL server。

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Configuration" -> "xsengine.ini"。
  2. 在 "xsengine.ini" 下找到 [communication]部分。
  3. 检查以下参数是否设置为相应的值:
    • ssl:如果其值为 ssl = 1,表示已启用SSL;如果其值为 ssl = 0,表示未启用SSL。
    • ssl_encrypt:如果其值为 ssl_encrypt = 1,表示通信会使用SSL加密;如果其值为 ssl_encrypt = 0,表示通信不会使用SSL加密。

也可以通过执行sql去查看

SELECT NAME, VALUE 
FROM SYS.M_INIFILE_CONTENTS 
WHERE FILE_NAME = 'indexserver.ini' 
AND SECTION = 'communication'
AND (NAME = 'ssl' OR NAME = 'ssl_encrypt');

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

截至本文完稿前应该还没有数据库能够实现双因子。云平台那个用户名+密码+动态OTP我感觉应该是算的但是前辈们说最多给部分符合。

二、访问控制

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

上面说过,Hana数据库是有管理界面的。因此可以通过下列方式查看用户列表。

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,然后展开 "Security" -> "Users"。
  2. 在 "Users" 视图中,将显示当前数据库中的所有用户列表。你可以查看用户的名称、用户类型和状态等信息。

也可以使用sql去查询

SELECT USER_NAME, USER_TYPE, USER_STATUS  FROM SYS.USERS;

这条SQL语句将返回用户的名称、用户类型和状态等信息。

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

SAP HANA数据库默认情况下会创建两个默认账户:

  1. SYSTEM 用户:SYSTEM用户是SAP HANA数据库的超级用户,具有最高权限。它用于管理数据库实例和执行管理员任务,如创建和管理用户、创建数据库对象等。

  2. SYSTEMDB 用户:SYSTEMDB用户是用于SAP HANA系统数据库的特殊用户。它用于管理整个HANA系统,包括多个租户(Tenant)和各个数据库。

这两个默认账户在安装SAP HANA时自动创建,并且具有特殊权限和特定的角色。

需要查看这两个用户是否重命名,如果没重命名需要修改密码为复杂度比较高的。

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

根据上一项的检查结果,并与配合人员访谈各在用账户的使用情况。

d) 应授予管理用户所需的最小权限,实现管理用户的权限分离;

基本做不到,视情况给部分符合。

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

此项默认符合。

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

默认符合。

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

默认不符合。

三、安全审计

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

要查看Hana数据库的审计情况,有以下两个方法。

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Configuration" -> "indexserver.ini"。
  2. 在 "indexserver.ini" 下找到 [audit]部分。
  3. 检查以下参数是否设置为相应的值:
    • audit_tracing:如果其值为 audit_tracing = true,表示已启用安全审计;如果其值为 audit_tracing = false,表示未启用安全审计。
    • audit_syslog:如果其值为 audit_syslog = true,表示审计日志将发送到系统日志;如果其值为 audit_syslog = false,表示审计日志不会发送到系统日志。

或者通过sql

SELECT * 
FROM SYS.M_INIFILE_CONTENTS 
WHERE FILE_NAME = 'indexserver.ini' 
AND SECTION = 'audit'

如果要开启审计策略的话可以参考这篇文章:http://www.vue5.com/sap_hana/sap_hana_auditing.html

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

输入以下命令查看日志信息是否足够详细:

要查看Hana数据库的审计日志可以通过以下步骤:

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Security" -> "Audit Policies"。
  2. 在 "Audit Policies" 视图中,你可以查看已定义的审计策略列表。选择相应的审计策略,右键点击并选择 "View Audit Trail"。
  3. 审计日志视图会显示符合所选审计策略的审计事件条目。你可以查看事件的时间戳、用户、主机、事件类型等信息。

当然,也可以使用sql

SELECT ENTRY_ID, TIMESTAMP, USER_NAME, APPLICATION_SOURCE, CATEGORY, ACTION_NAME 
FROM SYS.AUDIT_LOG;

这条SQL语句将返回审计日志中的条目,包括条目ID、时间戳、用户、应用程序源、类别和操作名称等信息。

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

检查审计记录保存的目录,验证是否能被普通用户轻易删除,访谈管理员对审计记录的保护措施和备份策略,检查审计记录是否备份不少于六个月。

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

测试使用非审计管理员中断审计进程,是否能成功,询问和检查是否安装第三方审计进程保护软件。

四、入侵防范

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

要查看Hana数据库的安装组件,可以根据以下步骤:

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Configuration" -> "indexserver.ini"。
  2. 在 "indexserver.ini" 下找到 [component]部分。
  3. 在 [component]部分中,你将看到与已安装组件相关的参数和其值。这些参数和值指示了已安装的SAP HANA组件。

同样可以通过sql

SELECT COMPONENT_ID, COMPONENT_NAME, COMPONENT_VERSION 
FROM SYS.M_DATABASE_COMPONENTS;

这条SQL语句将返回已安装的组件的ID、名称和版本信息。

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

这一项给不适用。数据库不涉及。

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

要查看终端接入设置,请根据以下方式

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Configuration" -> "indexserver.ini"。

  2. 在 "indexserver.ini" 下找到[communication]部分。

  3. [communication]部分中,你将找到与终端接入相关的参数和其值,如下所示:

    • listeninterface:指定HANA数据库监听的网络接口。
    • sqltcpport:指定用于SQL连接的TCP端口号。
    • httpport:指定用于HTTP连接的端口号。
    • httpsport:指定用于HTTPS连接的端口号。

同样支持sql

SELECT * 
FROM SYS.M_SERVICES 
WHERE SERVICE_NAME IN ('indexserver', 'xsengine');

这条SQL语句将返回与HANA数据库终端服务相关的信息,包括服务名称、协议、主机和端口等。

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

此项主要针对应用系统和部分数据库和一些管理软件,主机不涉及人机接口输入或通信接口输入控制,该项不适用。

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

该项需结合漏扫,是否定期进行漏扫,具有漏扫报告、初测是否发现高风险漏洞,复测后高风险漏洞是否被修补。按照以下步骤查看补丁更新情况,是否及时安装最新补丁。

  1. 使用SAP HANA Studio:打开SAP HANA Studio,并连接到目标HANA数据库实例。在左侧导航栏中展开数据库实例,在该实例下展开 "Configuration" -> "indexserver.ini"。

  2. 在 "indexserver.ini" 下找到[patch]部分。

  3. [patch]部分中,你将看到与补丁更新相关的参数和其值。以下是一些常见的参数:

    • version:指定当前已安装的HANA版本。
    • revision:指定当前已安装的修订版本。
    • applied_patches:指定已应用的补丁列表。

同样支持sql

SELECT PATCH_NAME, APPLIED_AT 
FROM SYS.M_PATCHES;

这条SQL语句将返回已应用的补丁名称和应用时间。

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

数据库不涉及此项,不适用。

五、恶意代码防范

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

数据库不涉及此项,直接不适用。

六、可信验证

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

直接不符合。

七、数据完整性

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

传输完整性,一般看SSL有没有开就行。

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

传输保密性,Hana数据库默认使用AES256算法进行加密,可以保证鉴别数据,审计数据和配置数据的存储完整性。业务数据及个人信息等需要问询管理员,默认是不加密的。

八、数据保密性

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

Hana用的是CRC32来校验完整性。可以酌情给符合

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

传输保密性,Hana数据库默认使用AES256算法进行加密,可以保证鉴别数据,审计数据和配置数据的存储保密性。业务数据及个人信息等需要问询管理员,默认是不加密的。

九、数据备份恢复

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

咨询甲方备份策略和备份恢复测试相关。

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

需要注意的是三级要求的异地备份是实时备份。

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

看所在服务器是否集群部署。

十、剩余信息保护

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

退出后需要重新输入用户名密码的话直接给符合。

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

这个需要问甲方说有没有针对存放敏感信息的存储介质做废弃处理。比如建立敏感数据的擦除机制,硬盘报废后进行物理毁坏处理等等。

以上就是Hana数据库有关等保三级的测评项的一些解析。有些不对的地方欢迎大家在评论区指出。


文章来源: https://www.freebuf.com/articles/network/375740.html
如有侵权请联系:admin#unsafe.sh