
前言:
服务器作为计算机网络的核心部件,发挥了运行操作系统、控制协调网络中各终端之间的工作,承担了相应终端服务请求、应答服务响应、保障数据安全等职责。I/O数据吞吐能力以及数据容灾冗余能力成为衡量服务器性能好坏的一个重要评价标准,因此网络压测也成为目前常见的测试手段,尤其针对一些高防服务器应用场景,对于抵御DDoS攻击等。
网络流量压力测试的原理主要涉及通过模拟大量用户同时访问服务器系统,测试在高峰负载下的性能表现,模拟不同场景下的用户行为、包括正常请求、异常操作,尽可能仿真多种应用场景排出异常情况,用以评估系统的稳定性、可靠性和性能瓶颈,便于网络工程师在服务器等网络设备交付前优化系统的可靠性、稳定性并减少宕机时间,减少设备实际运行过程中因此带来的损失。
压力测试中的流量来源以及请求测试数据的后续处理往往成为压力测试后极易忽视的环节,极易产生相关法律风险。
一、高带宽流量的来源
随着在线业务的极速膨胀,网络工程师和系统管理员必须确保网络和基础设置不间断的工作,并且维护高峰时段互联网服务的稳定性,必须确保承载流量的弹性空间,能有在任何时段承受大流量或访问用户的涌入。因此,压力测试中会尽可能多的使用不同网络协议(TCP、UDP、ICMP等)以及不同的数据类型(文字、图像、音频、视频等)来测试服务器设备运行的断点,以确定服务器运行的流量极限。
1.公网带宽
高带宽公网流量目前属于较为宝贵的网络资源,目前CDT(Cloud Data Transfer)与ECS(Elastic Compute Service)公网流量的价格均略有上调,对于公网带宽资源较为稀缺,难免部分企业选择购买渠道不明的流量资源,此类资源不排除黑客掌控的“肉鸡”流量资源或其他色情、博彩网站资源,更有甚者也会存在部分被“挂马”的学校、医院或公共服务网站、服务器等获取的流量资源。在此情形下,企业若选取此类流量资源,首先无法保证数据流的安全性,不排除发送的数据包中包含挂马的恶意程序,其次,根据数据流量溯源的审计,如流量源于学校、医院等公共服务网站,可能会面临行政处罚的风险①。因此,流量的来源需要企业慎重挑选,确有必要需要从第三方处引入高带宽公网流量时,应当选取合规的第三方流量,并签订相关专项服务合同,确保用于测试的流量来源可靠,合规合法。
同时,中小型公司在实际测试中往往考虑到经济因素,不愿通过付费的公网流量进行测试,目前常见的会选择随机抽取一定数量的域名,并向目标域名发送数据请求包以检验数据链路的带宽负荷,例如常见的向目标服务器请求数据的方式,AJAX(Asynchronous JavaScript and XML)作为基于浏览器端的技术,可使用JavaScript和XML或JSON(JavaScript Object Notation)进行数据交互,其中较为常见的场景是在Web应用程序中适用AJAX向目标服务器发送HTTP请求。另外还有较为常见的事采取Fetch API,专门用于向目标服务器发送以及接收HTTP请求,作为较通用的借口,可以支持GET、POST、PUT、DELETE等请求方法,在异步获取数据方面有较大的优势。当然还包括了其他数据请求的方式,本文不再赘述。
但此类应用场景需要重点关注挑选的目标服务器,并且注意测试的时间段以及测试的数据量,首先应避免各政府网站、高校、科研单位、军工等单位②,选取域名时应规避.gov、.edu、.org、.net等,其次,注意测试时,应规避网络用户使用的高峰时间段,以免瞬间产生大量数据流量影响正常网络用户访问。同时,压力测试的时间不宜过长,测试时间过长对于目标服务器会产生较大的流量负担,增加目标服务器的运行成本,总体来说遵循空闲时段、最少流量原则,获取的流量数据应当注意甄别,如是针对网络线路的压力测试,则不应保存数据,获取到瞬间流量后应立即对接收的数据进行丢包处理,不得对获取的加密数据包进行解析或存储③,严格遵守国家对于数据处理活动的规定④,并保留好测试的日志文件并如实记录测试的过程,制作测试报告台账以供查验。如测试的时间较长、测试的数据量较大,则可就测试活动事先向网络安全主管部门进行报备,并提前做好测试预案,防止产生突发网络安全事故。
【①参见《网络安全法》第二十七条 任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
②参见《网络安全法》第三十一条 国家对公共通信和信息服务、能源、交通、水利、金融、公共服务、电子政务等重要行业和领域,以及其他一旦遭到破坏、丧失功能或者数据泄露,可能严重危害国家安全、国计民生、公共利益的关键信息基础设施,在网络安全等级保护制度的基础上,实行重点保护。关键信息基础设施的具体范围和安全保护办法由国务院制定。
③参见《网络安全法》第四十二条 网络运营者不得泄露、篡改、毁损其收集的个人信息;未经被收集者同意,不得向他人提供个人信息。但是,经过处理无法识别特定个人且不能复原的除外。
网络运营者应当采取技术措施和其他必要措施,确保其收集的个人信息安全,防止信息泄露、毁损、丢失。在发生或者可能发生个人信息泄露、毁损、丢失的情况时,应当立即采取补救措施,按照规定及时告知用户并向有关主管部门报告。
④参见《数据安全法》第八条 开展数据处理活动,应当遵守法律、法规,尊重社会公德和伦理,遵守商业道德和职业道德,诚实守信,履行数据安全保护义务,承担社会责任,不得危害国家安全、公共利益,不得损害个人、组织的合法权益。】
2.私网带宽
私网带宽主要用于测试服务器环境下交换机的负载能力以及检测局域网环境下各网络设备的数据吞吐状况。私网带宽严格来说并不存在获得流量的困难,测试的服务器以及其他网络设备由于在同一组网内,测试目的主要针对网络设备对访问处理能力峰值的处理能力,尤其是接口处理能力的考察。
以测试服务器模型为例(C/S模型),通过上传测试脚本程序,测试服务器会执行测试脚本,向网关发送HTTP请求包,网关向应用服务器转发请求,应用服务器向网关转发相应数据包,经网关转发后返回测试服务器。在次过程中,私网的流量与数据请求都可以通过脚本程序进行预制。也可采用仿真环境模拟多用户请求的场景(例如比较常见的测试平台kylinTOP、kylinPET、LoadRunner等)。笔者仅举例说明部分的压力测试应用场景,随着目前大数据实时计算还涉及到人工智能以及机器学习,均有与之匹配的压力测试模型应用场景。
二、访问与授权机制
1.数据访问与获取
压力测试过程中,对于数据的请求与网站的访问应当严格规范,慎用各类渗透工具(对于渗透工具的使用以及渗透行为的法律风险会在接下来的专题进行分析),慎用扫描工具(例如常见的主动扫描工具AWVS、appscan、sqlmap等),禁止使用各类菜刀工具向目标服务器上传木马文件,此类行为由于缺少目标服务器权利人的授权与认可,属于通过非法方式获得目标服务器的管理权限,极易被评价为非法控制计算机信息系统罪(不考虑控制计算机信息系统数量),获取流量的方式较多,采用上述手段,通过侵入信息系统后获取数据的行为也极易涉及非法获取计算机信息系统数据罪的风险。因此,数据的访问除获得权利人明确授权外,应当限制在网站的公开数据范围内,需要授权访问的数据不应作为压力测试的数据。
此外,对于访问的数据以及URL下的文件目录需要事先进行查询,对于数据的内容可进行抽样选取,确保不是数据内容并非敏感的图片、视频、文字等。同时压力测试的数据源应避开DNS域名服务器,严禁采用其他手段直接或间接对DNS服务器进行劫持,由于DNS域名服务器主要作用于域名(domain name)和与之相对应的IP地址 (IP address)之间的解析,会产生大量的应答数据,如修改DNS服务器的转发策略会对已有的网络链路结构产生不可预测的风险,笔者再次提示。
2.数据处理与销毁
由于服务器的压力测试时获取的数据,仅用于测试服务器的性能,遵循这一宗旨,不应在本地存储下载或请求的数据包,任何形式的数据文件在获取后完成解析(如确有必要解析,无解析数据包的要求可直接丢包处理),确保恢复出正常的数据文件或应第一时间进行删除,如无须测试数据完整性,则应第一时间直接进行弃包,未完整获得目标服务器的授权时,严禁对该服务器下载的数据进行转发,应当及时进行销毁。
如确有必要留存测试数据,应在测试前与目标服务器权利人取得联系,获得相应授权,并且双方就测试时间、测试方式、预期产生的流量费用以及测试的数据销毁等事宜进行协商。
三、测试评估与报告
1.测试评估
服务器在压力测试过程中应当提前进行风险评估,在进行压力测试前,需要对可能预期的风险进行识别,主要针对系统的性能瓶颈、测试数据都审核、以及测试工具的来源与功能等方面进行评估。
其次,应对上述识别出的风险进行分析,制定应对处置预案,对可能产生的风险进行评估,确定不同风险的严重性以及优先级,同时在压力测试进行时应做好相应的实时监控,并在场记录测试的过程。例如在压力测试中系统处于高负载的运行模式下,系统可能无法正确处理用户输入的数据或者响应用户的查询请求等、数据库是否会存在异步错误或同步中断报错,是否存在数据泄露的风险。同时在访问控制中,高负载下,系统能无法实施访问控制策略,导致未经授权的用户访问服务器的系统资源,此外还包括各类安全漏洞是否能够抵御不同的网络攻击以及恶意请求等,此类风险均需要在压力测试中进行评估,形成处置的预案。
再者,测试者应当重点关注测试的工具,并在测试报告中明确载明测试的软、硬件环境(例如操作系统、杀软环境、CPU、内存、硬盘等),同时测试的工具也应当注明工具来源(下载地址),版本信息(软件版本号等),并应当事先查阅测试工具的操作简介以及功能性说明。
2.测试报告
每次压力测试的过程中会产生大量的日志,测试者应当保存好测试的数据并对日志进行留存。测试报告中除每次测试的目的,测试的过程以及测试的结果外,还应记录测试方法、测试时的突发事件、应对处置方法以及结果,以便后期跟踪与分析。常见的测试报告包括以下内容:
(1)测试目的:描述压力测试所达到的预期效果;
(2)术语解释:测试中专业属于以及词语表述进行释明;
(3)系统环境:测试环境下的软、硬件的版本、型号、规格等,组网环境下使用何种连接方式进行连接等;
(4)测试场景:描述测试过程中的实际状况,包括链路状态、网络延迟状态、并发状态下的响应反馈等;
(5)测试结果:包括模拟用户增减、点击量、吞吐量、网络事件报告、平均响应时间的分析等;
(6)总结:将测试结果以及是否达到测试预期效果进行分析,汇总后分析改进点,以便下次测试中进行修正。
测试报告不仅可以记录测试的过程,也能够给为后续测试人员提供可持续的参数指引,以便后续人员共享测试数据,避免重复测试。
综述,压力测试对于网络安全工程师而言不仅需要针对本地服务器环境,更需要考虑到置身互联网公网环境下,压力测试可能对外部网络环境造成的影响。这往往是压力测试工程师容易忽视的部分,不充分的处置预案以及可能涉及其他因素所产生的违规或违法行为也会产生不可预料的法律风险,规范压力测试手段,落实测试评估与测试报告尤为重要。
END


长按二维码
关注我们
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/te-aq/14187.html