等保培训.05.应用和数据库安全测评


缺第四集。。。
应用系统安全测评
公安部信息安全等级保护评估中心
黄洪

应用系统安全测评

背景介绍

如今,越来越多的企业用户已将核心业务系统转移到网络上,Web浏览器成为业务系统的窗口,应用系统面临更多的安全威胁;并且由于各种原因使得其存在较多的安全漏洞。在此背景下,如何保障企业的应用安全,尤其是Web应用安全成为新形势下信息安全保障的关键所在。
■应用系统存在漏洞较多
NIST的报告显示,超过90%的安全漏洞是应用层漏洞,它已经远远超过网络、操作系统和浏览器的漏洞数量,这个比例还有上升的趋势。
■针对应用系统的攻击手段越来越多
常见攻击手段,如口令破解、信息窃听、绕过访问控制、后门攻击等。
针对WEB应用的攻击,如跨站脚本攻击、SQL注入、缓冲区溢出、拒绝服务攻击等。

应用测评的特点和方法

应用测评的特点

■测评范围较广
和数据库、操作系统等成熟产品不同,应用系统现场测评除检查安全配置外,还需验证其安全功能是否正确
■测评中不确定因素较多,测评较为困难
需根据业务和数据流程确定测评重点和范围
应用系统安全漏洞发现困难,很难消除代码级的安全隐患
■测评结果分析较为困难
应用系统与平台软件,如Web平台、操作系统、数据库系统、网络等都存在关联关系

应用测评的方法

通过访谈,了解安全措施的实施情况

和其他成熟产品不同,应用系统只有在充分了解其部署情况和业务流程后,才能明确测评的范围和对象,分析其系统的脆弱性和面临的主要安全威胁,有针对性的进行测评。
下图是一个手机支付系统的流程示意图,通过网页和手机可以完成冲值、查询等业务。
在这里插入图片描述

通过检查,查看其是否进行了正确的配置

有的安全功能(如口令长度限制、错误登录尝试次数等)需要在应用系统上进行配置,则查看其是否进行了正确的配置,与安全策略是否一致。
无需进行配置的,则应查看其部署情况是否与访谈一致。

如果条件允许,需进行测试

可通过测试验证安全功能是否正确,配置是否生效。
代码级的安全漏洞在现场查验比较困难,则可进行漏洞扫描和渗透测试,如果条件允许,则可进行代码白盒测试。

主要测评内容

身份鉴别

■要求项
应提供专用的登录控制模块对登录用户进行身份标识和鉴别;
应对同一用户采用两种或两种以上组合的鉴别技术实现用户身份鉴别;
应提供用户身份标识唯一和鉴别信息复杂度检查功能,保证应用系统中不存在重复用户身份标识,身份鉴别信息不易被冒用;
应提供登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施;
应启用身份鉴别、用户身份标识唯一性检查、用户身份鉴别信息复杂度检查以及登录失败处理功能,并根据安全策略配置相关参数。
■条款理解
三级或三级以上系统要求必须提供两种(两次口令鉴别不属于两种鉴别技术)或两种以上组合的鉴别技术进行身份鉴别,在身份鉴别强度上有了更大的提高。
■检查方法
询问系统管理员,了解身份鉴别措施的部署和实施情况。
根据了解的情况,检查应用系统是否按照策略要求进行了相应的配置,在条件允许的情况下,验证功能(包括应用口令暴力破解等测试手段)是否正确。

访问控制

■要求项
应提供访问控制功能,依据安全策略控制用户对文件、数据库表等客体的访问;
访问控制的覆盖范围应包括与资源访问相关的主体、客体及它们之间的操作;
应由授权主体配置访问控制策略,并严格限制默认帐户的访问权限;
应授予不同帐户为完成各自承担任务所需的最小权限,并在它们之间形成相互制约的关系;
应具有对重要信息资源设置敏感标记的功能;
应依据安全策略严格控制用户对有敏感标记重要信息资源的操作。

安全审计

■要求项
应提供覆盖到每个用户的安全审计功能,对应用系统重要安全事件进行审计:
应保证无法单独中断审计进程,无法删除、修改或覆盖审计记录;
审计记录的内容至少应包括事件的日期、时间、发起者信息、类型、描述和结果等;
应提供对审计记录数据进行统计、查询、分析及生成审计报表的功能。

剩余信息保护

■要求项
应保证用户鉴别信息所在的存储空间被释放或再分配给其他用户前得到完全清除,无论这些信息是存放在硬盘上还是在内存中;
应保证系统内的文件、目录和数据库记录等资源所在的存储空间被释放或重新分配给其他用户前得到完全清除。
■条款理解
该项要求是为了防止某个用户非授权获取其他用户的鉴别信息、文件、目录和数据库记录等资源,应用系统应加强内存和其他资源管理。
■检查方法
询问系统管理员,了解剩余信息保护方面采取的措施。
根据了解的情况,测试其采取的措施是否有效,如以某个用户进行操作,操作完成退出系统后系统是否保留有未被删除的文件等。

通信完整性

■要求项
应采用密码技术保证通信过程中数据的完整性。
■条款理解
该项要求强调采取密码技术来保证通信过程中的数据完整性,普通加密技术无法保证密件在传输过程中不被替换,还需利用Hash函数(如MD5、SHA和MAC)用于完整性校验,但不能利用CRC生成的校验码来进行完整性校验。
■检查方法
询问系统管理员,了解通信完整性方面采取的措施。
可通过查看文档或源代码等方法来验证措施是否落实。

通信保密性

■要求项
在通信双方建立连接之前,应用系统应利用密码技术进行会话初始化验证:
应对通信过程中的整个报文或会话过程进行加密。
■条款理解
该项要求强调整个报文或会话过程进行加密,同时,如果在加密隧道建立之前需要传递密码等信息,则应采取密码技术来保证这些信息的安全。
■检查方法
询问系统管理员,了解通信保密性方面采取的措施,分析其会话初始化过程是否安全。
可通过抓包工具(如Sniffer pro)获取通信双方的内容,查看系统是否对通信双方的内容进行了加密。

抗抵赖

■要求项
应具有在请求的情况下为数据原发者或接收者提供数据原发证据的功能;
应具有在请求的情况下为数据原发者或接收者提供数据接收证据的功能。
■条款理解
该项要求强调应用系统提供抗抵赖措施(如数字签名),从而保证发送和接收方都是真实存在的用户。
■检查方法
询问系统管理员,了解抗抵赖方面采取的措施。
可通过查看文档或源代码等方法来验证措施是否落实。

软件容错

■要求项
应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的数据格式或长度符合系统设定要求;
应提供自动保护功能,当故障发生时自动保护当前所有状态,保证系统能够进行恢复。
■条款理解
为了防止SQL注入等攻击,软件应对用户输入数据的长度和格式等进行限制。
■检查方法
询问系统管理员,了解软件容错方面采取的措施。
可通过查看文档或源代码等方法来验证措施是否落实,并在界面上输入超过长度或不符合要求格式(如hi’ or 1=1-
-)的数据,验证其功能是否正确。

资源控制

■要求项
当应用系统的通信双方中的一方在一段时间内未作任何响应,另一方应能够自动结束会话;
应能够对系统的最大并发会话连接数进行限制;
应能够对单个帐户的多重并发会话进行限制:
应能够对一个访问帐户或一个请求进程占用的资源分配最大限额和最小限额;
应能够对系统服务水平降低到预先规定的最小值进行检测和报警;
应提供服务优先级设定功能,并在安装后根据安全策略设定访问帐户或请求进程的优先级,根据优先级分配系统资源。
■条款理解
资源控制是为了保证大多数用户能够正常的使用资源,防止服务中断,应用系统应采取限制最大并发连接数、请求帐户的最大资源限制等措施。
■检查方法
询问系统管理员,了解资源控制措施的部署和实施情况。
根据了解的情况,检查应用系统是否配备了相应的功能,在条件允许的情况下,验证功能是否正确。

数据完整性

■要求项
应能够检测到系统管理数据、鉴别信息和重要业务数据在传输过程中完整性受到破坏,并在检测到完整性错误时采取必要的恢复措施;
应能够检测到系统管理数据、鉴别信息和重要业务数据在存储过程中完整性受到破坏,并在检测到完整性错误时采取必要的恢复措施。

数据保密性

■要求项
应采用加密或其他有效措施实现系统管理数据、鉴别信息和重要业务数据传输保密性;
应采用加密或其他保护措施实现系统管理数据、鉴别信息和重要业务数据存储保密性。
■条款理解
该项要求强调不仅要保证管理数据、鉴别信息和重要业务数据传输数据的保密性,而且要保证存储过程中的保密性并且在检测到完整性受到破坏时采取恢复措施。
■检查方法
询问系统管理员,了解数据保密性措施部署和实施情况。
根据了解的情况,检查应用系统是否配备了相应的功能,在条件允许的情况下,验证功能是否正确。

备份和恢复

■要求项
应提供本地数据备份与恢复功能,完全数据备份至少每天一次,备份介质场外存放;
应提供异地数据备份功能,利用通信网络将关键数据定时批量传送至备用场地。
■条款理解
该项要求对备份策略进行了明确的要求,即”完全数据备份至少每天一次,备份介质场外存放",并且强调应提供异地数据备份功能。
这部分主要检查文件型数据的备份和恢复方式。
■检查方法
询问系统管理员,了解备份和恢复方面采取的措施。
根据了解的情况,检查相应措施是否落实,如果条件允许,则验证其是否有效。

结果整理和分析

数据库安全测评

前言

背景介绍

■地位和作用
数据库中存放的数据(包括业务数据),它是企业信息资产的核心,如果数据被破坏/篡改或非授权获取将给企业带来严重的损失,甚至会给国家安全带来威胁。
数据库安全是整个安全链条上的一个重要环节,如果数据库安全中的任何环节出现问题都可能会损害整个链的牢固性,给我们整个系统的安全带来严重的损失。
■主要类型
Oracle、DB2、SQL Server、MYSQL、Sybase。

常见威胁

■非授权访问
身份验证是阻止入侵者的第一道防线,如果口令太弱就可能被攻击者暴力破解,攻击者也可通过其他手段获取密码(如开发者将密码明文存放在.NET配置文件中,攻击者就可能通过它获取密码),从而从远程对数据库进行操作。
■特权提升
当用户具有某个可信帐户的特权时,就可能发生特权提升攻击(甚至威胁主机系统的安全)。始终以最小特权的帐户运行,并仅分配最小权限,并为数据库打上最新补丁。
■SQL注入
利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力。在数据库端可通过以下方式来阻止SQL注入攻击:使用存储过程和参数化的命令,避免动态SQL,并限制所有用户的权限。
■其他
针对SQL Server数据库还存在很多的威胁,如针对漏洞进行攻击、绕过访问控制进行非授权访问等。
攻击实例
在这里插入图片描述

主要内容

根据《基本要求》中的数据库安全要求的位置可知:数据库安全是主机安全的一个部分,数据库的测评指标是从“主机安全”和“数据安全及备份恢复”中根据数据库的特点映射得到的。
在这里插入图片描述

身份鉴别

a)应对登录操作系统和数据库系统的用户进行身份标识和鉴别
■条款理解
为防止操作系统用户对SQL Server数据库进行非授权管理(系统管理员和数据库管理元分离),应选择”SQL Server和Windows"方式,并且让用户每次登录数据库时都必须输入密码(必须保证登录用户为强密码)。
■检查方法
查看身份认证方式是否为"SQL Server和Windows"。
试图登录数据库,查看系统是否提示输入用户密码。
■ORACLE检查方法
应检查Oracle数据库系统,查看是否存在空口令或默认口令的用户(Oracle默认满足,但应防止口令出现空口令或默认口令情况)。
默认口令,如:SYS/CHANGE_ON_INSTALL;SYSTEM/MANAGER。
常用口令:oracle:oracle/admin/ora92(ora+版本);sys:oracle/admin;system:oralce/admin。
b)操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换
■条款理解
应采取技术或管理手段,保证SQL Server数据库的口令不易被冒用,如口令足够长,口令复杂(如规定字符应混有大、小写字母、数字和特殊字符),口令定期更新等。
■检查方法
询问数据库管理员口令策略,查看有无空口令用户。
让管理员以SA的身份登录数据库,查看是否为弱口令。
■ORACLE检查方法
查看是否启用口令复杂度函数,执行命令:select limit from dba_profiles where profile='DEFAULT’and resource_name=‘PASSWORD_VERIFY_FUNCTION’
检查utlpwdmms.sql中“–Check for the minimum length of the password"部分中"length(password)<"
后的值。
或者:查看口令管理制度以及执行记录,并选择验证。
c)应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施
■条款理解
为防止暴力破解数据库用户的口令,应保证数据库具有登录失败处理功能(设置非法登录次数的限制值,对超过限制值的登录终止其鉴别会话或临时封闭帐号)。
■检查方法
执行命令sp_configure,查看有无登录失败处理的配置。
询问数据库管理员是否采取其他措施保证上述功能的实现。
■ORACLE检查方法
执行命令:select limit from dba_profiles where profile=‘DEFAULT’ and resource_name=‘FAILED_LOGIN_ATTEMPTS’。
执行命令:select limit from dba_profiles where profile='DEFAULT’and resource_name=‘PASSWORD_LOCK_TIME’。
d)当对服务器进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听
■条款理解
为防止鉴别信息在网络传输过程中被窃听,SQL Server数据库可采用包括SSL在内的方式对数据进行加密传输。
■检查方法
询问数据库管理员是否采取措施保证远程管理数据加密传输。
在服务器网络实用工具中查看是否启用“强制协议密码”。
■ORACLE检查方法
1)查看initSID.ora中REMOTE_OS_AUTHENT的赋值
2)或者:查看listener.ora文件中的“LISTENER"-“DESCRIPTION”-“ADDRESS_LIST”-“ADDRESS”-
“PROTOCOL"项目的赋值
3)SQLPLUS:show parameter remote_login_passwordfile
e)应为操作系统和数据库系统的不同用户分配不同的用户名,确保用户名具有唯一性
■条款理解
SQL Server数据库系统中不能创建相同用户名的用户,但应防止不同用户使用相同的用户名登录数据库系统。
■检查方法
询问数据库管理员,是否为不同的登录用户分配不同的用户名,保证对用户行为可审计。
f)应采用两种或两种以上组合的鉴别技术对管理用户进行身份鉴别。
■条款理解
为保证数据库的安全,系统应采取除口令外的其他鉴别技术(如生物识别技术、数字证书等)对用户身份进行鉴别,两次重复输入口令不属于两种组合鉴别技术。
■检查方法
询问数据库管理员,是否采取除身份鉴别外的其他鉴别方式(对于SQLSERVER2005以上的版本,可以采取证书的方式对存储过程进行访问控制)。
■ORACLE说明
包括三种方法:数据库鉴别、操作系统鉴别和密码文件鉴别。
。数据库鉴别方法是常见方式,其所需鉴别信息存放在在system表空间的某个表中;特殊的数据库操作,如启动、关闭数据库需要通过操作系统或者密码文件鉴别方法。
还可以借助应用程序服务器提供网络验证,可以引入Kerberos、RADIUS、PKI,如【clt-oracle svr/radius clt-radius svr-authent svr】。
oracle数据库通过sqlnet.ora文件中的参数SQLNET.AUTHENTICATION_SERVICES【NONEINTS
】、PFILE(或SPFILE)文件中的参数REMOTE_LOGIN_PASSWORDFILE【
NONEIEXCLUSIVEISHARED】和口令文件PWDsid.ora三者协同作用实现身份认证。

访问控制

目标:特定的人做特定的事。
a)应启用访问控制功能,依据安全策略控制用户对资源的访问。
■条款理解
应依据安全策略限定每个角色的权限,并且为每个用户分配一个或多个角色。
■检查方法
查看是否依据安全策略为角色限定了权限。
查看是否为每个登录用户分配并限制了服务器角色。
b)应根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限。
■条款理解
应依据安全策略限定管理用户的权限,仅授予管理用户所需的最小权限,如对业务数据库进行管理的用户不能进行系统操作等。
■检查方法
查看每个登录用户的角色和权限。
c)应实现操作系统和数据库系统特权用户的权限分离。
■条款理解
在数据库中,尽量将系统管理、审计管理和业务数据库的管理的用户权限进行分离。
■检查方法
询问并查看除系统管理员外,是否还有其他特权用户。
d)应严格限制默认帐户的访问权限,重命名系统默认帐户,修改这些帐户的默认口令
■条款理解
在数据库中,尽量重命名默认帐户,如果无法重命名,则应加强这些帐户的口令。
■检查方法
询问数据库系统管理员,是否加强了系统管理员的口令强度,并让管理员登录数据库系统进行口令验证。
e)应及时删除多余的、过期的帐户,避免共享帐户的存在
■条款理解
应删除数据库中多余的、过期的帐户,如测试帐号等。
■检查方法
执行命令:select name from syslogins,询问每个帐户的作用。
f)应对重要信息资源设置敏感标记
■条款理解
在数据库中能对重要信息资源设置敏感标记(如非密、秘密、机密、绝密等),为实现强制访问控制(在自主访问控制中,资源的所有者指定用户对资源的访问权,而超级用户实际可以不受访问权的限制)提供基础。
■检查方法
如果数据库具有强制访问功能,则查看是否启用该功能,是否对重要资源设置了敏感标记。
■ORACLE检查方法
检查是否安装Oracle Label Security模块:select username from dba_users。
查看是否创建策略:SELECT policy_name,status from DBA_SA_POLICIES。
查看是否创建级别:SELECT * FROM dba_sa_levels ORDER BY level_num。
查看标签创建情况:select * from dba_sa_labels。
询问重要数据存储表格名称。
查看策略与模式、表的对应关系:select * from dba_sa_tables_policies;判断是否针对重要信息资源设置敏感标签。
g)应依据安全策略严格控制用户对有敏感标记重要信息资源的操作
■条款理解
应依据安全策略控制用户对重要信息资源的操作。
■检查方法
查看是否依据安全策略控制用户对重要信息资源的操作,在条件允许的情况下则可进行测试。
对于ORACLE,可以执行命令:select * from dba_sa_user_labels,查看用户的标签,并选择特定的用户和表进行验证策略。

安全审计

a)审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户
■条款理解
应检查数据库系统,查看是否开启审计功能,并且审计范围是否覆盖到每个用户。
■检查方法
查看是否开启审计功能,用不同的用户登录数据库系统并进行不同的操作,查看是否对每个用户都进行审计。
■ORACLE检查方法
执行命令:select value from vparameter where name=‘audit_trail’,查看是否开启审计功能。
用不同的用户登录数据库系统并进行不同的操作,在Oracle数据库中查看日志记录是否满足要求。
b)审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件
■条款理解
检查数据库系统,查看审计策略是否覆盖系统内重要的安全相关事件,例如,用户登录系统、自主访问控制的所有操作记录、重要用户行为(如增加/删除用户,删除库表)等。
■检查方法
如果审计功能开启,这在条件允许的情况下进行相应操作,查看数据库是否进行了记录。
■ORACLE检查方法
show parmeter audit_trail。
show parameter audit_sys_operations。
select sel,upd,del,ins,gra from dba_obj_audit_opts。
select sel,upd,del,ins,gra from dba_stmt_audit_opts。
select sel,upd,del,ins,gra from dba_priv_audit_opts。
c)审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等
■条款理解
审计记录信息中应包括日期、时间、事件类型、主体标识(如用户名等)、客体标识(如数据库表、字段或记录等)和事件操作结果等内容。
■检查方法
如果审计功能开启,则记录一条日志内容,确认其包括事件发生的日期与时间、触发事件的主体与客体、事件的类型、事件成功或失败、身份鉴别事件中请求的来源(如末端标识符)、事件的结果等内容。
d)应能够根据记录数据进行分析,并生成审计报表
■条款理解
数据库系统应提供根据各种条件对记录数据进行查询分析的功能,使系统管理员能及时了解当前数据库的安全状况;同时,数据库系统应提供生成审计报表的功能,方便系统管理员对数据库安全状况的上报。
■检查方法
如果是否有上述功能,如果条件允许则进行验证。
对于ORACLE,则询问管理员是否安装并使用Oracle Audit Vault等日志分析工具并查看相关报表。
e)应保护审计进程,避免受到未预期的中断
■条款理解
应提供严格的权限管理,防止未授权关闭审计功能。
■检查方法
以非授权用户(没有审计权限)登录数据库系统,试图改变审计配置选项。
对于ORACLE数据库,用户可以通过alter system set audit_trail=none,并重启实例关闭审计功能,查看是否成功。
f)应保护审计记录,避免受到末预期的删除、修改或覆盖等
■条款理解
应提供严格的权限管理,防止未预期的删除、修改或覆盖审计记录或审计文件。
■检查方法
以非授权用户试图对审计记录或文件进行操作,查看是否成功。
对于ORACLE数据库,则查看是否严格限制用户访问审计记录的权限,如采用audit vault等。

资源控制

a)应通过设定终端接入方式、网络地址范围等条件限制终端登录
■条款理解
在数据库上应能设定接入方式、网络地址范围等条件限制终端登录,防止非授权访问数据库资源。
■检查方法
查看在数据库上能否进行相应的配置,如果不能则应在防火墙等设备上进行相应的配置。
对于ORACLE数据库,则查看sqlnet.ora中是否配置了以下参数:tcp.validnode_checking,tcp.invited_nodes。
b)应根据安全策略设置登录终端的操作超时锁定
■条款理解
当连接超时时,数据库系统自动断开连接。
■检查方法
询问并查看是否实现了上述功能。
对于ORACLE数据库,则查看空闲超时设置:select limit from dba_profiles where profile=‘DEFAULT’and resource_name=IDLE_TIME’。
c)应限制单个用户对系统资源的最大或最小使用限度
■条款理解
应限制单个用户对系统资源的最大或最小使用限度,防止类似拒绝服务之类的攻击。
■检查方法
询问并查看是否实现了上述功能。
■ORACLE检查方法
确定用户使用的profile:select username,profile from dba_users。针对指定用户的profile,查看其限制(以default为例):select limit from dba_profiles where profile=‘DEFAULT’ and resource_name=‘SESSIONS_PER_USER(‘SESSIO NS_PER_USER’、IDLE_TIME’)。

备份和恢复

a)应提供数据本地备份与恢复功能,完全数据备份至少每天一次,备份介质场外存放
■条款理解
数据库系统至少达到以下的备份要求:
1)提供本地实时备份的功能,当数据发生错误时,能及时恢复数据;
2)每天至少进行一次全备份,并将备份介质存放在场外。
■检查方法
询问并查看是否实现了上述功能。
b)应提供异地数据备份功能,利用通信网络将关键数据定时批量传送至备用场地
■条款理解
应提供灾备中心,对重要的数据提供异地数据级备份,保证当本地系统发生灾难性后果不可恢复时,利用异地保存的数据对系统数据能进行恢复。
■检查方法
询问并查看是否实现了上述功能。

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值