阻止Adobe Commerce在Fastly级别的恶意流量

本文介绍了如何阻止不需要的流量进入您的商店,这不仅是为了响应恶意威胁,也是作为一种地理过滤方法。

云基础架构上的Adobe Commerce(和Fastly CDN)提供了用于管理存储流量的工具,以响应DDoS攻击等恶意威胁。 此外,它允许您阻止来自特定国家或地区的请求(即使未检测到恶意意图),以遵守业务政策、法规要求或其他操作需求。

受影响的产品和版本:

  • 云基础架构上的Adobe Commerce 2.3.x

在本文中,我们假定您已经拥有恶意IP和/或其国家/地区和用户代理。 云基础架构上的Adobe Commerce用户通常从Adobe Commerce支持部门获取此信息。 以下部分提供了基于此信息阻止流量的步骤。 所有更改都应在生产环境中完成。

获取对管理面板的访问权限

如果您的网站因DDoS而过载,则可能无法登录到Commerce管理员(并执行本文中进一步描述的所有步骤)。

若要访问管理员,请按照启用或禁用维护模式并将IP地址列入白名单中的说明将网站置于维护模式。 完成后禁用维护模式。

按IP阻止流量

对于云基础架构存储上的Adobe Commerce而言,按特定IP地址和子网阻止流量的最有效方法是在Commerce管理员中为Fastly添加ACL。 以下步骤包含指向更详细说明的链接:

  1. 在Commerce管理员中,导航到​商店 > 配置 > 高级 > 系统 > 全页缓存 > 快速配置。
  2. 创建一个新ACL,其中包含您要阻止的IP地址或子网列表。
  3. 将其添加到ACL列表并阻止,如Adobe Commerce的Fastly_Cdn模块的Blocking指南中所述。

按国家/地区阻止流量

对于云基础架构存储上的Adobe Commerce,按国家/地区阻止流量的最有效方法是在Commerce管理员中为Fastly添加ACL。

  1. 在Commerce管理员中,导航到​商店 > 配置 > 高级 > 系统 > 全页缓存 > 快速配置。
  2. 选择国家/地区并使用ACL配置阻止,如Adobe Commerce的Fastly_Cdn模块的Blocking指南中所述。

按用户代理阻止流量

要基于用户代理建立阻止,您需要向Fastly配置添加自定义VCL代码片段。 为此,请执行以下步骤:

  1. 在Commerce Admin​中,导航到​Stores > Configuration > Advanced > System > Full Page Cache。
  2. 然后​Fastly Configuration > Custom VCL Snippets。
  3. 按照Fastly_Cdn模块的自定义VCL代码片段指南中的说明创建新的自定义代码片段。 您可以使用以下代码示例作为示例。 此示例不允许AhrefsBot用户代理的流量。
name: block_bad_useragents
  type: recv
  priority: 5
  VCL:
  if ( req.http.User-Agent ~ "(AhrefsBot)" ) {
      error 405 "Not allowed";
  }

通过JA3/JA4/OH签名阻止流量(从Newrelic获取JA3、JA4和OHFP值)

  1. 创建词典:导航到​Admin > Store > Configuration > System > Full page cache > Fastly configuration > Edge Dictionary​并创建此示例块:

    code language-none
    #table ja3_blocklist:
    table ja3_blocklist {
        "********************************": "********************************",
    }
    
    #table ja4_blocklist:
    table filter_bad_ja4 {
        "************************************": "************************************",
    }
    
  2. 然后添加VCL以阻止以上定义的表中列出的任何JA3、JA4:

    code language-none
    name: block_traffic_ja3_ja4
    type: recv
    priority: 5
    
    VCL:
    if (req.restarts == 0 && fastly.ff.visits_this_service == 0) {
      if(table.contains(ja3_blocklist, tls.client.ja3_md5)){
        error 403;
      }
      if(table.contains(ja4_blocklist, tls.client.ja4)){
        error 403;
      }
    }
    
  3. 基于OHFP的块示例:

    code language-none
    #table ohfp_h2fp_blocklist
    table ohfp_h2fp_blocklist {
        "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx":"xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
    }
    
  4. 然后添加一个VCL以阻止上面定义的表中列出的任何OHFP:

    code language-none
    # Snippet block_ohfp_h2fp
    name: block_ohfp_h2fp
    type: recv
    Priority: 5
    
    if (table.contains(ohfp_h2fp_blocklist, fastly_info.oh_fingerprint)) {
      error 403 "Forbidden";
    }
    

速率限制(实验性Fastly功能)

在云基础架构上,Adobe Commerce试验性的Fastly功能允许您为特定路径和爬虫指定速率限制。 有关详细信息,请参阅Fastly模块文档。

该功能必须先在暂存环境中进行全面测试,然后才能用于生产,因为它可能会阻止合法流量。

建议:考虑更新robots.txt

更新robots.txt文件有助于防止某些搜索引擎、爬虫和机器人抓取某些页面。 例如,搜索结果页面、结帐、客户信息等页面不应抓取。 阻止机器人抓取这些页面有助于减少这些机器人生成的请求数。

使用robots.txt时有两个重要注意事项:

  • 机器人可以忽略您的robots.txt。 尤其是恶意软件机器人,它会扫描网页以发现安全漏洞,垃圾邮件发送者使用的电子邮件地址收集器不会引起注意。
  • robots.txt文件是公开可用的文件。 任何人都可以看到您不希望机器人使用的服务器区域。

可在开发人员文档的搜索引擎机器人文章中找到基本信息和默认Adobe Commerce robots.txt配置。

有关robots.txt的一般信息和建议,请参阅:

与您的开发人员和/或SEO专家合作,确定要允许的用户代理或要禁止的用户代理。

相关阅读

recommendation-more-help
commerce-knowledge-base-help