关于在生产环境中运行安全扫描的最佳做法

在生产环境中执行安全扫描有风险;但是,扫描生产环境可能有必要,也许是为了符合审计要求,为了检测站点是否已被黑客入侵,或者为了验证是否在实施用于集成安全扫描的 SDLC 过程。

无论出于哪种原因,最好都是开始扫描预生产环境,然后将扫描移至生产环境。这样做有助于确保降低安全测试对服务器造成的风险。

Learn more about known security risks when scanning a production site:
  • 最严重:扫描可能导致服务器或应用程序崩溃。
  • 不太严重:扫描向服务器重复发送相同请求的多种变体 - 大约每个参数 40 种。服务器可能拒绝其中的某些请求,但还有很多会通过并被应用程序处理,这可能导致下列操作:
    • 在数据库中添加或更改记录
    • 完成事务,如采购等应用程序设计执行的事务。
    • 电子邮件泛滥。如果表单向邮寄列表或个人发送电子邮件,那么收件人可能会接收到数百封电子邮件。
    • 站点损坏。如果站点有论坛页面,扫描可能将多个条目记入该页面,包括某些带有跨站点脚本编写弹出窗口的条目。
    • 站点的完全修改。如果站点允许更改,如利用创建、编辑和删除按钮进行的更改,那么将提交正常请求以及许多变体请求。
    • Initiate®对供应商服务的请求。这些请求可能会将服务作为垃圾邮件发送、引导事务,并且潜在的引起开销。
    • 向 IDS/IPS(侵入式检测系统/侵入式预防系统)小组报警。测试将触发带有数千个签名的 IDS/IPS。测试并非真正的攻击,它不是为损害应用程序而设计的。但是 IDS/IPS 小组不知道这一点,并且会做出相应反应。
    • IDS 和 IPS 系统将把测试作为攻击报告。

下列最佳做法旨在以最小风险和最大价值将安全扫描实施到生产环境中。

使用测试用户帐户

使用可以跟踪的测试帐户,以确保不会真正订购服务,因此在它崩溃的情况下可以将其复位。通过测试帐户,管理员还可以在测试之后更轻松地清理站点。对于测试帐户,请考虑下列事项:

  • 它应仅对数据库中的测试记录具有访问权限,以便可以恢复修改的记录。
  • 删除测试帐户所创建的新纪录。
  • 忽略测试帐户中的订购单或其他交易。
  • 如果站点包含论坛,则测试帐户应仅访问测试论坛,以便真实客户在测试阶段期间不能够看到测试。例如,看到跨站点脚本编制弹出窗口可能会令人惊恐不已。
  • 如果站点对不同帐户使用不同的特权,则使用多个测试帐户。使用多个测试帐户将确保更全面的应用程序测试。

实施用户验收和性能测试

在生产中配置应用程序以处理正常的用户验收和性能测试之前,切勿在生产中运行安全测试。如果应用程序无法处理这些类型的测试,它将不能够处理由扫描作业发送的已转变的请求。

获取批准

不咨询企业所有者和开发团队并且未获取其批准而对任何应用程序进行单方面扫描几乎总是一个灾难。当要执行测试时和预计测试要完成时,记得要提前通知各方。

确定运行扫描的适当时间

在不会干扰站点的常规操作窗口的预设时间运行扫描,如整晚。

不要忽视运行的入侵测试

缺省情况下不会运行入侵测试,但是它们对于完整的测试非常重要;例如,缓冲区溢出会携带互联网蠕虫。入侵和非入侵等所有测试都有可能使站点发生故障。

防止电子邮件泛滥

识别使用电子邮件通知的页面并对其进行配置,以将其从扫描中排除。电子邮件通知将生成大量请求,并且可能会使电子邮件服务器超负荷。识别这些页面比较困难,但是此处有几种技巧可供使用:

  • 在 QA 中测试页面并在生产中将其排除。在 QA 中,将电子邮件地址更改为哑邮箱。
  • 在生产中,仅测试一台 Web 服务器并在测试期间防止其连接到 SMTP 服务器,或者在测试之前用脚本替换电子邮件地址并在测试之后将其复原。
  • 配置扫描以在其中一个电子邮件字段中放置唯一值,以使收件人能够运行搜索并将其全部清除。使用扫描“自动表单填写”执行此功能。

提前开发和测试清除脚本

执行生产扫描后,使用清除脚本或程序以便移除扫描所创建的测试数据。

识别会话参数和标记

识别会使会话失效的会话参数和标记。您通常可从应用程序所有者获取此信息。在内容扫描作业的“参数和 Cookie”页面上添加会话参数。

识别帐户失效例程

识别任何帐户失效例程。扫描应通过将这些例程添加为排除内容来避免它们。

  • 如果可能,关闭帐户失效以试图使密码失效。
  • 如果无法关闭帐户失效,则使用测试帐户和密码单独扫描各登录页面。

考虑无认证扫描

使用单独的扫描作业,扫描应用程序外部无认证即可访问的页面。从外部执行扫描会发现更多问题,并且这将帮助您了解对所发现的安全问题具有访问权限的人员。

使用交互式扫描识别敏感区域

创建单独的作业以处理要求交互的区域,如更改密码页面、管理设置页面或用户管理页面。

禁用 IDS/IPS 系统

由于 IDS/IPS 系统可能会阻止测试并隐藏本会曝光的问题,因此最好是禁用这些系统或绕开它们进行扫描。最低限度,您应提醒您的 IDS/IPS 团队。

不要通过代理扫描

尽管支持通过代理扫描,但是它可能会隐藏问题。例如,HTTP 代理可能会篡改服务器错误响应,由此隐藏安全问题。