《软件评测师教程》-安全测试与评估

11.1概述

    软件安全性是与防止对程序及数据的非授权的故意或意外访问的能力有关的软件属性,所以针对程序和数据的安全性测试是软件安全性测试的重要内容。

11.2测试与评估内容

11.2.1 用户认证机制

   用户认证就是指软件系统用户在使用软件或系统时,必须提供用户身份说明,然后软件系统根据用户数据库资料,开放特定的权限给登录用户。

   要使服务器操作系统识别要登录系统的用户,最简单的口令认证是用户将他的用户名和口令传输给服务器,服务器就将该用户名和口令与数据库里的用户名和口令进行比较,如果相符,就通过了认证,可以访问系统资源。

   目前主要的用户认证机制有如下几种:

。数字证书。检验用户身份的电子文件,提供较强的访问控制,并具有较高的安全性和可靠性,这种证书可以购买。

。智能卡。

。双重认证。采用两种或多种认证方式,这些认证方式包括令牌、智能卡和仿生装置,如视网膜或指纹扫描器等,例如使用ATM卡和PIN卡进行双重认证。

。安全电子交易协议。主要目的是解决信用卡电子付款的安全保障性问题:保证信息的机密性,保证信息安全传输,不能被窃听,只有收件人才能得到和解密信息。保证支付信息的完整性,保证传输数据完整地被接收,在中途不被篡改,认证商家和客户,验证公共网络上进行交易活动的商家,持卡人及交易活动的合法性。广泛的互操作性,保证采用的通信协议,信息格式和标准具有公共适应性,从而可在公共互联网络上集成不同厂商的产品。

    用户认证机制是保证数据安全的基础,因此有必要对用户认证机制进行全面的测试,评价认证机制的合理性。

11.2.2 加密机制

   加密的基本过程就是对原来为明文的文件或数据,按某种算法进行处理,使其成为不可读的不断代码,通常称为“密文”,使其只能在输入相关的密钥之后才能显示出明文内容,通过这样的途径来达到保护数据不被非法窃取,阅读的目的,该过程的逆过程为解密,即将该编码信息还原为其原来数据的过程。

    密码函数可用来作为加密、解密、保证数据完整性、鉴别交换、口令存储与检验等的一部分,借以达到保密和鉴别的目的当用于机密性的加密时,密码技术被用于把敏感性较强的数据(即受保护的数据)变换成敏感性较弱的形式。当用于保证数据完整性或鉴别交换时,密码技术被用来计算不可伪造的函数,加密开始时,在明文上实施以产生密文,解密的结果或是明文,或是在某种掩护下的密文。使用明文作通用的处理在计算上是可行的,它的语义内容是可以理解的,除了以特定的方式,密文是不能用来计算的,因为它的语义内容已隐藏起来。有时故意让加密时不可逆的额,(例如截断或数据丢失)这样做的目的,是不希望导出原来的明文,例如口令。

   密码技术能够提供或是有助于提供相关保护,以防止消息流的观察和篡改,通信业务流分析、抵赖、伪造、非授权连接、篡改消息等行为的出现,主要用于密码的保护、数据的传输过程中的安全防护、数据存储过程的安全防护等。

  不同加密机制或密码函数的用途、强度是不相同的,一个软件或系统诸葛弩的加密机制使用得是否合理,强度是否满足当前需求,强度是不相同的,一个软件或系统中的加密机制使用得是否合理,强度是否满足当前需求,是需要通过测试来完成的,通常模拟解密是测试的一个重要手段。

11.2.3 安全防护策略

    安全防护策略是软件系统对抗攻击的主要手段,安全防护策略主要有安全日志、入侵检测、隔离防护、漏洞扫描。

    安全日志是记录非法用户的登录名称、操作时间及内容等信息,以便于发现问题并提出解决措施,安全日志仅记录相关信息,不对非法行为作出主动反应,属于被动防护的策略。

    入侵检测系统是一种主动的网络安全防护措施,它从系统内部和各种网络资源中主动采集信息,从中分析可能的网络入侵或攻击。一般来说,入侵检测系统还应对入侵行为作出紧急响应。入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护。

     漏洞扫描就是对软件系统及网络系统进行与安全相关的检测,以找出安全隐患和可被黑客利用的漏洞,同时漏洞扫描技术也是安全性测试的一项必要手段。

     隔离防护是将系统中的安全部分与非安全部分进行隔离的措施,目前采用的技术和主要有两种,隔离网闸和防火墙,隔离网闸主要是内网和外网的物理隔离,防火墙是相对成熟的防护技术,主要是内网和外网的逻辑隔离。

11.2.4 数据备份与恢复手段

    备份与恢复通常会设计以下几个方面:

。存储设备:磁盘陈列、磁带机(磁带库)、光盘库、SAN设备。

。存储优化:DAS、NAS、SAN。

。存储保护:磁盘阵列、双机容错、集群、备份与恢复。

。存储管理:数据库备份与恢复、文件与卷管理、复制、SAN管理。

11.2.5 防病毒系统

1、集中式管理、分布式杀毒

    对局域网进行远程集中式安全管理,统一升级杀毒引擎和病毒定义,并可通过账号和口令设置移动控制台,并且采用先进的分布技术,利用本地资源和本地杀毒引擎,对本地节点的所有文件全面、及时、高效地查杀病毒,同时保障用户的隐私,减少网络传输的负载,避免因大量传输文件而引起网络拥塞。

。以策略为中心。

   以逻辑上的策略域进行杀毒策略的部署,一般由策略服务器(或中心服务器)负责实现网络杀毒策略的部署,这种方式可以脱离网络拓扑结构,部署较灵活。

。以服务器为中心。

    以物理上的网络服务器为中心,进行网络杀毒的管理,这种方式与网络拓扑结构融合,使管理更加方便。

2、数据库技术、LDAP技术的应用

   一些网络杀毒厂商已经开始使用数据库技术和LDAP技术进行策略和日志的存储、用户管理等,不但增强了用户管理能力、策略组织能力、提高了策略调用速度,而且便于以后向日志分析等方面扩展。

3、多引擎支持

   使用多项杀毒技术进行网络杀毒,可以有效提高网络杀毒的成功率,但是必然会增加网络杀毒软件的复杂度。

4、不同操作系统的防护

  略

5、远程安装或分发安装

    通过Windows系统远程控制命令进行批量客户端的远程安装,另一种方式是让所有的用户通过Web页面下载客户端自行安装,任何一种方式都需要通过管理手段和技术手段实现。

11.3安全系统测试策略

11.3.1 基本安全防护系统测试

   基本安全防护系统一般采用防火墙、入侵检测、漏洞扫描、安全审计、病毒防治、Web信息防篡改、物理安全等基础安全技术,以保障应用系统的安全,针对不同的安全技术,设计的测试点如下:

。防火墙

1)是否支持交换和路由两种工作模式;

2)是否支持对HTTP、FTP、SMTP等服务类型的 访问控制;

3)是否考虑到防火墙的冗余设计;

4)是否支持对日志的统计分析功能,同时,日志是否可以存储在本地和网络数据库上;

5)对防火墙本身或受保护网段的非法攻击系统,是否提供多种告警方式以及多种级别的告警。

。入侵监测系统

1)能否在检测到入侵事件时,自动执行切断服务、记录入侵过程、邮件报警等动作;

2)是否支持攻击特征信息的集中式发布和攻击取证信息的分布式上载;

3)能否提供多种方式对监视引擎和检测特征的定期更新服务;

4)内置的网络能否使用状况监控攻击和网络监听工具。

。漏洞扫描

   能否定期或不定期地使用安全性分析软件,对整个内部系统进行安全扫描,及时发现系统的安全漏洞、报警、并提出补救建议。

。病毒防治

1)能否支持多种平台的病毒防范;

2)能够支持对服务器的病毒防治;

3)能否支持对电子邮件附件的病毒防治;

4)能够提供对病毒特征西西呢和检测引擎的定期在线更新服务;

5)防范毒范围是否广泛,是否包括UNIX、Windows、Linux等操作。

。安全审计。

1)能否进行系统数据收集,统一存储,集中进行安全审计。

2)是否支持基于PKI的应用审计。

3)是否支持基于XML的审计数据采集协议。

4)是否提供灵活的自定义审计规则。

。Web信息防篡改系统

1)是否支持多种操作系统。

2)是否具有集成发布与监控功能,使系统能够区分合法更新与非法篡改。

3)是否可以实时发布和备份。

4)是否具备自动监控、自动恢复、自动报警的能力。

5)是否提供日志管理、扫描策略和更新管理。

11.3.2 安全系统防护体系

   对业务系统进行全面保障的安全体系,主要体现在一下7个层次。

1)实体安全:基础设施的物理安全;

2)平台安全:网络平台、计算机操作系统、基本通用应用平台(服务/数据库等)的安全;

3)数据安全:系统数据的机密性、完整性、访问控制和可恢复性;

4)通信安全:系统之间数据通信和会话访问不被非法侵犯;

5)应用安全:业务运行逻辑安全/业务资源的访问控制;业务交往的不可抵赖性/业务实体的身份鉴别/业务数据的真实完整性;

6)运行安全:对系统安全性的动态维护和保障,控制由于时间推移和系统运行导致安全性的变化;

7)管理安全:对相关的人员、技术和操作进行管理,纵览以上各安全要素并进行控制。

   安全性策略针对这7个层次进行测试和评估:

   安全系统的主要构成一般包括证书业务服务系统、证书查询验证服务系统、密钥管理系统、密码服务系统、授权管理服务系统、可信时间戳服务系统、网络信息域系统、基本安全防护系统等。

1、证书业务服务系统测试

   证书业务服务主要包括证书认证及证书审核注册两项功能。对证书业务服务的测试主要是结合业务应用系统的特点,分析业务系统运行实际面临的威胁,验证证书业务服务系统的功能和性能是否满足需求。

  对证书业务服务系统的功能测试主要从以下几个方面进行:

。证书认证系统是否采用国家密码主管部门审批的签名算法完成签名操作,是否提供证书的签发和管理、证书撤销列表的签发和管理、证书/证书撤销列表的发布以及证书审核注册中心的设立、审核及管理等功能;

。按使用对象分类,系统是否能提供人员证书、设备证书、机构证书三种类型的证书;

。是否可以提供加密证书和签名证书;

。数字证书格式是否采用X.509 V4;

。系统是否提供证书申请、身份审核、证书下载等服务功能;

。证书申请、身份审核、证书下载等服务是否都可采用在线或离线两种方式;

。系统是否提供证书认证策略及操作策略管理、自身证书安全管理等证书管理服务。

   对证书业务服务系统还要进行性能测试,以验证是否满足用户的需求。一般性能测试需要考虑以下几个方面。

。检查证书业务服务系统设计的处理性能是否具备可伸缩配置及扩展能力;

。关键部分是否采用双机热备份和磁盘镜像;

。是否满足系统的不间断运行、在线故障修复和在线系统升级;

。是否满足需求说明中预测的最大数量用户正常访问的需求,并且,是否有3-4倍的冗余,如有必要,需要测试系统的并发压力承受能力。

2、证书查询验证服务系统测试

    证书查询验证服务系统为应用系统提供证书认证服务,对证书查询验证服务系统的功能测试,从以下几个方面进行:

。是否能够提供目录管理与证书查询两种主要服务功能;

。是否能够根据用户网络设置需求,采用集中式与分布式两种方式构建目录管理服务;

。系统是否能提供证书和证书撤销列表的发布、证书和证书撤销列表的下载、证书和证书撤销列表的更新、证书和证书撤销列表的恢复、基于LDAP技术的目录访问控制服务、目录查询等安全服务功能;

。是否提供基于OCSP技术的证书在线状态查询服务;

   同时,还需进行下面的性能测试和评估:

。系统是不满足一定数量的基本的LDAP查询和OCSP查询并发;

。是否具备可伸缩配置及扩展能力;

。是否能为应用系统提供LDAP、OCSP查询接口和C/C++/C#和Java等接口。

3、密钥管理系统测试

   密钥管理系统是整个安全系统的基础,对密钥管理系统的测试需要考虑以下几点:

。是否制定了密钥管理策略;

。是否具备密钥生成、密钥发送、密钥存储、密钥查询、密钥撤销、密钥恢复等基本功能;

。密钥库管理功能是否完善;

。密钥管理中心的系统、设备、数据、人员等安全管理是否严密;

。密钥管理中心的审计、认证、恢复、统计等系统管理是否具备;

。密钥管理系统与证书认证系统之间是否采用基于身份认证的安全通信协议。

   对于大型系统,还需考虑进行以下的性能测试:

。针对按实际需要配置密钥管理系统,利用企业级的并发压力测试工具测试受理点连接数、签发在用证书数目、密钥发放并发请求数是否满足基本业务需求;

。测试是否具备系统所需最大量的密钥生成、存储、传送、发布、归档等密钥管理功能;

。测试是否支持密钥5年或用户要求的年限保存期;

。是否具备异地容灾备份;

。是否具备可伸缩配置及扩展能力;

。关键部分是否采用双机备份和磁盘镜像;

4、密钥服务系统测试

   对密码服务系统的测试包括:

。是否具备基础加解密服务功能;

。能够为应用提供相对稳定的统一安全服务接口;

。能否提供对多密码算法的支持;

。随着业务量的逐渐增加,是否可以灵活地增加密码服务模块,实现性能平滑扩展,且不影响上层的应用系统。

   对密码服务系统的性能测试有以下方面:

。RSA算法密钥长度能否达到1024-2048位,ECC算法密钥长度能否达到192位;

。如有必要进行系统速度测试,对应用层的服务器端密码设备测试项包括:公钥密码算法签名速度、公钥密码算法验证速度、对称密钥密码算法加解密速度;对应用层的客户端密码 设备测试项包括:公钥密码算法签名速度、公钥密码算法验证速度、对称密钥密码算法加解密速度,验证是否满足需求;

。处理性能如公钥密码算法签名等是否具有扩展能力。

5、可信授权服务系统测试

   授权服务系统在信任服务系统的基础上,为应用提供资源的授权管理及访问控制服务,有集中式授权服务与分布式授权服务两种工作模式。

   对集中式授权服务的测试,主要验证其是否具有用户管理、审核管理、资源管理、角色管理等。

   对分布式授权服务的测试主要验证其是否有资源访问的签名授权、授权管理等功能。

   如有必要,对可信授权服务系统的测试还要考虑,利用并发压力测试工具验证系统是否满足一定的授权服务并发数,以及系统能否提供客户端签名授权和服务器端资源访问授权验证的应用接口,包括C/C++及Java。

6、可信时间戳服务系统测试

   可信时间戳服务为业务处理的不可抵赖性和可审计性提供支持,对可信时间戳服务的测试点包括:

。能否从可信时间源(授时中心)获取时间,校准时间戳服务器的时间;

。能否安全保存时间戳及相关信息;

。采用公钥技术,能否正确签发可信的时间戳;

    一般可信时间戳服务的测试,还考虑以下性能测试:

。时间精度能否达到0.1秒或用户的需求水平;

。验证系统时间戳并发请求数能否达到设计要求;

。相应服务单元是否具有可扩展性;

7、网络信任域系统测试

   通过安全审查的网络可信接入设备和网络信任域管理系统组成网络信任域,测试点包括:

。系统是否具备接入认证交换机,确保只有合法的才能接入网络;

。是否具备网络信任域管理系统,进行网络接入管理配置;

   对性能的测试一般包括以下内容:

。测试认证时间是否小于1秒或用户的需求水平;

。测试接入认证并发数是否满足用户需求;

。验证接入认证交换机是否提供与客户端通信遵循IEEE 802.1X接口,传输IEEE 802.1X认证数据包;

。验证是否提供 网络信任域管理系统与接入认证交换机间的交换接口。

8、故障恢复与容灾备份测试

  应用系统的稳定性与可靠性,在一定程度上取决于故障恢复和容灾备份措施,一般有以下三个测试点:

。故障恢复。整个系统是否存在单点故障;对于关键性应用系统,当任何一台设备失效时,按照预先定义的规则是否能够快速切换;是否采用磁盘镜像技术,实现主机系统到磁盘系统的告诉连接;

。数据备份。对于关键业务,是否具备必要的热备份机制,例如,双机热备、磁盘镜像,对于所有业务,是否提供磁盘备份和恢复机制,保证系统能根据备份策略恢复到指定时间的状态。

。容灾备份。可否建立异地容灾备份中心,当主中心发生灾难性事件时,由备份中心接管所有的业务,备份中心是否有足够的带宽确保与主中心的数据同步,有足够的处理能力来接管主中心的业务,能否确保快速可靠地与主中心的应用切换。

9、安全产品的选择

   安全产品是安全系统架构的基础,合理地选择安全类产品是至关重要的,我们给出以下几点建议:

。产品是否具有公安部《计算机信息系统安全专用产品销售许可证》和检测报告;

。如果安全产品涉及数据加密,那么该产品的加密算法是否具有国密办的批准文号;

。建;议尽量选择具有中国自主知识产权的产品,有利于厂家对产品的升级与维护;

。建议尽量选择具有更先进技术的安全产品

。必须考虑安全产品的系统处理速度,因为处理速度直接影响到应用的效果;

。建议查看安全产品在权威机构(如公安部安全产品检测中心)的检测报告,考察其各项安全功能是否达到安全要求。

11.4安全性测试方法

11.4.1 功能验证

   功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块、权限管理模块、加密系统、认证系统等进行测试,主要是验证上述功能是否有效。

11.4.2 漏洞扫描

   安全漏洞扫描通常都是借助于特定的漏洞扫描器完成的,漏洞扫描器是一种自动检测远程或本地安全性弱点的程序,通过使用漏洞扫描器,系统管理员能够发现所维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫战中做到“有的放矢”,及时修补漏洞。

   按常规标准,可以将漏洞扫描器分为两种类型:主机漏洞扫描器和网络漏洞扫描器。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPS、Tripewire、Tiger等自由软件。网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序,如Satan、ISS Internet Scanner。

11.4.3 模拟攻击试验

  模拟攻击来验证软件或信息系统的安全防护能力。

  “授权”意指“授予权力”,这里的权利是指进行某种活动的权利(例如访问数据);这样的权利被授予某个实体、代理人或进程。于是,授权行为就是履行被授予权力(未被撤销)的那些活动。

。冒充:就是一个实体假装成一个不同的实体,冒充常与某些别的主动攻击形式一起使用,特别是消息的重演与篡改。

1)口令猜测:一旦黑客识别了一台主机,而且发现了基于BIOS、Telnet或NFS服务的可利用的用户账号,并成功地猜测出了口令,就能对机器进行控制。

2)缓冲区溢出:由于在很多的服务程序中大意的程序员使用类似于strcpy,strcat不进行有效位检查的函数,最终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就可以得到系统的控制权。

。重演:当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。例如,一个含有鉴别信息的有效消息可能被另一个实体所重演,目的是鉴别它自己(把它当做其他实体)。

。消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果,如下所示:

1)DNS高速缓存污染:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以加入不正确的信息,并把用户引向黑客自己的主机。

2)伪造电子邮件:由于SMTP并不对邮件发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊木马程序,或者是一个指向恶意网站的链接。

。服务拒绝:当一个实体不能执行它的正常功能,或它的动作妨碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。这种攻击可能是一般性的,比如一个实体抑制所有的消息,也可能是有具体目标的。

1)死亡之ping:由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都规定为64kb,并且在读取包的标题头之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的、声称自己的尺寸超过ICMP上限,也就是加载尺寸超过64K上限的包时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方宕机。

2)泪滴:泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP在收到含有重叠偏移的伪造分段时将崩溃。

3)UDP洪水:各种各样的假冒攻击利用简单的TCP/IP服务,如chargen 和echo来传递毫无用处的数据以占满带宽,通过伪造与某一主机的chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果数据流足够多,就会导致带宽的服务攻击。

4)SYN洪水:一些TCP/IP栈的实现,只能等待从有限数量的计算机发来的ACK消息,因此它们只有有限的内存缓冲区用来创建连接,如果这一缓冲区充满了虚假连接的初始消息,该服务器就会对接下来的连接请求停止响应,直到缓冲区里的连接企图超时为止,在一些创建连接不受限制的实现里,SYN洪水也具有类似的影响。

5)Land攻击:在Land攻击中,一个特别打造的SYN包的原地址和目标地址都被设置成某一个服务器地址,这将导致接受服务器向它自己的地址发送SYN-ACK消息,结果,这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留,直到超时。各种系统对Land攻击的反应不同,许多Unix实现将崩溃,NT变得极其缓慢(大约持续5分钟)。

6)Smurf攻击:一个简单的Smurf攻击,通过使用将恢复地址设置成受害网络的广播地址ICMP应答请求数据包,来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比死亡之ping洪水的流量高处一或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。

7)Fraggle工具:Fraggle攻击对Smurf工具作了简单的修改,使用的是UDP应答消息,而非ICMP。

8)电子邮件炸弹:电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器,不断大量得向同一地址发送电子邮件,攻击者能够耗尽接收者网络的带宽。

9)畸形消息攻击:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。

。内部攻击:当系统的合法用户以非故意或非授权方式进行动作时就成为内部攻击。多数已知的计算机犯罪都和使系统安全遭受损害的内部攻击有密切的关系。

  能用来防止内部攻击的保护方法包括:所以管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来加强系统的控制能力;为分布在不同场所的业务部门划分VLAN,将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。

。外部攻击:外部攻击可以使用的方法有:搭线(主动的与被动的)、截取辐射、冒充为系统的授权用户,冒充为系统的组成部分、为鉴别或访问控制机制设置旁路。

。陷阱门:当系统的实体收到改变,致使一个攻击者能对命令或对预定的事件或事件序列产生非授权的影响时,其结果就称为陷阱门。例如,口令的有效性可能被修改,使得除了其正常效力之外也使攻击者的口令生效。

。特洛伊木马:对系统而言的特洛伊木马,是指它不但具有自己的授权功能,而且还有非授权功能。一个向非授权信道拷贝信息的中继就是一个特洛伊木马。典型的有NetBus、BackOrifice、BO2k。

11.4.4 侦听技术

    侦听技术实际上是在数据通信或数据交互过程,对数据进行截取分析的过程。目前比较流行的是网络数据包的捕获技术,成为Capture,黑客可以利用该项技术实现数据的盗用,而测试人员同样可利用该项技术实现安全测试。主要应用于网络加密的验证。

11.5软件产品安全测试

    侧重于:用户对数据或业务功能的访问控制,数据存储,数据通信的远程安全控制。

11.5.1 用户管理和访问控制

1、用户权限控制

    一个用户能够访问一个应用系统的权限,通常我们认为来源于三个方面,应用软件本身、操作系统和数据库。应用软件产品在开发的过程中,主要采用用户名和密码登录的方式完成。对于安全强度较高的软件也可采用指纹认证、智能卡认证等方式进行。测试应该注意以下方面,首先应当评价用户权限控制体系合理性,是否采用三层架构的管理模式,即系统管理员、业务领导和操作人员三级分离,用户名称基本采用中文和英文两种,对于测试来说,对于用户名的测试关键在于测试用户名称的惟一性。

    惟一性基于以下两个方面:

1)同时存在的用户名称在不考虑大小写的状态下,不能够同名;

2)对于关键领域的软件产品和安全性要求较高的软件,应当同时保证使用过的用户在用户删除或停用后,保留该用户记录,并且新用户不得与该用户同名。

   用户口令应当满足当前流行的控制模式,注意测试用户口令的强度和口令存储的位置和加密强度,如下所示:

1)最大口令时效:指定用户和可以保留当前口令的时间。

2)最小口令时效:指定在修改口令之前,用户必须保留口令的时间。

3)口令历史:确定系统将要记住的口令的数量,如果用户选择的口令存在于口令历史数据库中,系统将强制用户选择其他口令。

4)最小口令长度:对于用户口令,可以包含的最少的可以接受的字符数目。

5)口令复杂度:在口令中要求用户使用非字母数字的字符或大写字母。

6)加密选项:可以加密本地存储的口令。

7)口令锁定:是被用来对付猜测口令的主要工具。在输入的非法口令达到规定的次数之后,系统将禁用这个账户。这种技术在对付远程暴力攻击的时候特别有效。

8)账户复位:账户锁定后定义是否可以在规定时间间隔后自动恢复,可以减轻系统管理员的工作强度。

   用户权限分配方式是否合理,用户认证的目的在于访问控制,对于软件产品来说,主要是用户能够使用某些功能或访问某些数据的能力。从软件测试的角度来说,应当结合黑盒功能测试,首先测试软件用户权限系统本身权限分配的细致程度,比如,对于查询功能来说,查询的数据是否能够按照业务需求进行细致划分,然后对特定权限用户访问系统功能的能力进行测试,对部分测试应当充分利用等价值划分方法进行案例设计,避免重复测试。

2、操作系统安全性的测试

    操作系统本身的安全性对应用软件存在影响,测试中要考察:是否关闭或卸载不必要的服务和程度,是否存在不必要的账户;权限设置是否合理,安装响应的安全补丁程序的情况,操作系统日志管理等。

3、数据库权限的测试

   测试有如下三个方面:

1)应用软件部署后,数据库管理用户的设置应当注意对账号的保护,超级用户的口令不得为空或默认口令。对数据库的账号和组的权限作相应设置,如锁定一些默认的数据库用户;撤销不必要的权限。

2)数据库中关于应用软件用户权限和口令存储的相关表格,尽量采用加密算法进行加密。

3)软件企业在进行软件产品开发时,开发人员通常为了开发方便,在客户端与数据库通信时,均使用超级用户及默认密码(例如username=‘sa’,password=‘’)访问数据库,这种方式将会带来严重的安全隐患,测试人员可以通过网络侦听技术,或使用白盒测试方法进行测试,并且应当建议开发者,根据不同程序访问数据库的功能,使用不同的数据库用户进行连接,且必须设置复杂的密码。

11.5.2 通信加密

   通信加密时保证数据在传输过程中数据的保密性和一致性的测试,软件产品在技术上通常使用链路加密、数据加密的方式进行,目前使用的加密技术包括VPN技术、对称加密算法、非对称加密算法、Hash算法。

   VPN技术通常使用Kebores加密算法结合IPSec加密协议,实现通信链路的加密,加密强度较高,多用于广域网中的数据安全传输,但是操作较复杂。

   对称加密算法和非对称加密算法主要包括RSA、DSA(非对称)、DES(对称),使用上述算法的主要目的在于解决数据的保密性传输。

   HASH算法的目的在于保护数据内容的一致性,防止数据在传输过程中被篡改。

11.5.3 安全日志测试

    安全日志是被动防范措施。日志应当记录所有用户访问系统的操作内容,包括登录用户名称、登录时间、浏览数据动作、修改数据动作、删除数据动作、退出时间、登录机器的IP等。

   大型应用软件来说,系统是否提供了安全日志的智能统计分析能力,是否可以按照各种特征项进行日志统计,分析潜在的安全隐患,并且及时发现非法行为。

 

posted @ 2014-06-10 14:46  阳光温暖了心情  阅读(2019)  评论(0编辑  收藏  举报