安装CloudFront Agent

要提高CloudFront Origin服务器的安全性,您可以通过以下方式使用tCell的代理Lambda@Edge.这为AWS CloudFront前面的任何web应用程序或静态内容提供了tCell支持。当您将代理作为CloudFormation堆栈部署到您自己的AWS帐户时,对CloudFront分布的请求会触发Origin requests和Origin Responses上的tCell代理Lambda函数。

用例

静态站点和存储在S3桶中的内容通常是由CloudFront提供的,因为它是一种简单的方法来建立和运行一个简单的基于html的网站。通过利用tCell的CloudFront代理,您可以在这些站点上添加和强制使用CSP头信息,以防止常见的攻击,如CSRF和XSS。

利用CloudFront作为反向代理有助于减少Origin服务器上的负载这可以确保您的web应用程序尽可能快地为来自世界各地的用户提供内容。将tCell的CloudFront代理添加到CloudFormation堆栈中,可以在Origin Requests和Responses上提供WAF功能的额外好处,同时增加最小的延迟。

支持的功能

  • App防火墙监控和阻断请注意:不支持错误码和响应大小检测。
  • 防止未经验证的HTTP重定向
  • 内容安全政策(CSP)执行
  • 可疑的演员检测与保护

先决条件

安装

下载代理

  1. 2 .在顶部导航栏中,单击tCell管理
  2. 点击下载代理
  3. 选择CloudFront代理。
  4. 下载. zip或者是tar.gz文件。

安装代理

所有AWS资源都必须创建在同一个帐户中,并且位于us-east-1地区。

  1. 部署tCell Lambda@Edge CloudFormation堆栈。
  1. 在解压后的agent存档目录中,执行如下命令:山姆部署,指导
  2. 按照提示完成必要的字段。

部署要求

Lambda@Edge功能必须部署在us-east-1

允许SAM CLI创建IAM角色

使用默认选项是的“允许SAM CLI创建IAM角色”。代理的云形成堆栈需要为其Lambda函数创建一个角色,以访问AWS Secrets Manager中的tCell凭据,并允许部署到Lambda@Edge。

  1. 创建tCell应用程序和服务器代理API密匙您想要保护的每个CloudFront Origin。
  2. 在AWS Secrets Manager中为每个应用程序的ID和密钥创建一个秘密。如果您的CloudFront发行版是由CloudFormation管理的,那么这个秘密可以由相同的CloudFormation堆栈创建。秘密名称必须是该格式cloudfrontagent-tcell / < tcell_app_id >该值必须为“服务器代理API Key”的值。
  3. 更新所有所需的CloudFront缓存行为触发器为tCell Lambda函数,并为每个Origin添加tCell App ID作为Origin自定义头,以便代理报告到正确的应用程序。为了支持所有特性,tCell agent函数必须配置为接收两者origin-requestorigin-response事件类型,以及origin-request触发器必须配置为在事件中包含请求正文。

例子

创造一个秘密AWS秘密经理使用AWS CLI:

         
1
Aws secretsmanager create-secret——region us-east-1——name cloudfrontagent-tcell/——secret-string

添加Lambda@Edge触发器和Origin自定义头到CloudFront分布,使用CloudFormation模板:

         
1
...
2
类型:“AWS:: CloudFront::分配”
3.
属性:
4
起源:
5
-…
6
OriginCustomHeaders:
7
- HeaderName:“X-TCELL-APP-ID”
8
HeaderValue:“< tcell_app_id >”
9
DefaultCacheBehavior:
10
...
11
LambdaFunctionAssociations:
12
- EventType: origin-request
13
IncludeBody:真
14
LambdaFunctionARN: ! ImportValue cloudfrontagent-tcell: tcellAgentFunction
15
- EventType: origin-response
16
LambdaFunctionARN: ! ImportValue cloudfrontagent-tcell: tcellAgentFunction

使用原产地自定义头的额外配置

除了App ID,还有几个服务器代理选项可以配置使用原产地自定义头。

服务器代理选项 标题名称
应用程序ID X-TCELL-APP-ID
允许载荷 X-TCELL-ALLOW-PAYLOADS
日志级别 X-TCELL-LOG-LEVEL
反向代理IP地址报头 X-TCELL-REVERSE-PROXY-IP-ADDRESS-HEADER

Managed-AllViewer原产地请求策略

为了最大化tCell代理的能力,我们建议使用Managed-AllViewer Origin Request Policy,当CloudFront缓存丢失时,该策略将所有请求属性转发到Origin。这有助于确保CloudFront代理拥有正确应用tCell配置策略所需的所有信息。

CloudFront缓存策略

我们建议使用CloudFront缓存策略,在缓存键中包含尽可能多的请求属性,以增加Agent报告的数据的有用性。例如,如果攻击者请求具有许多不同属性的相同URL,但这些属性不包含在您的缓存策略中,CloudFront将返回缓存的内容,而不触发tCell代理函数,从而降低您对攻击源服务器的企图的可见性。

限制

随着缓存未完成次数的增加,更多的请求被转发到原始服务器,这会增加页面加载时间。如果站点性能对于大的缓存键来说太慢了,那么尝试从该键中删除属性,直到性能可以接受为止。