安装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功能的额外好处,同时增加最小的延迟。
支持的功能
先决条件
安装
下载代理
- 2 .在顶部导航栏中,单击tCell管理.
- 点击下载代理.
- 选择CloudFront代理。
- 下载
. zip
或者是tar.gz
文件。
安装代理
所有AWS资源都必须创建在同一个帐户中,并且位于us-east-1地区。
- 部署tCell Lambda@Edge CloudFormation堆栈。
- 在解压后的agent存档目录中,执行如下命令:
山姆部署,指导
- 按照提示完成必要的字段。
部署要求
Lambda@Edge功能必须部署在us-east-1
允许SAM CLI创建IAM角色
使用默认选项是的“允许SAM CLI创建IAM角色”。代理的云形成堆栈需要为其Lambda函数创建一个角色,以访问AWS Secrets Manager中的tCell凭据,并允许部署到Lambda@Edge。
- 创建tCell应用程序和服务器代理API密匙您想要保护的每个CloudFront Origin。
- 在AWS Secrets Manager中为每个应用程序的ID和密钥创建一个秘密。如果您的CloudFront发行版是由CloudFormation管理的,那么这个秘密可以由相同的CloudFormation堆栈创建。秘密名称必须是该格式
cloudfrontagent-tcell / < tcell_app_id >
该值必须为“服务器代理API Key”的值。 - 更新所有所需的CloudFront缓存行为触发器为tCell Lambda函数,并为每个Origin添加tCell App ID作为Origin自定义头,以便代理报告到正确的应用程序。为了支持所有特性,tCell agent函数必须配置为接收两者
origin-request
和origin-response
事件类型,以及origin-request
触发器必须配置为在事件中包含请求正文。
例子
创造一个秘密AWS秘密经理使用AWS CLI:
1Aws secretsmanager create-secret——region us-east-1——name cloudfrontagent-tcell/——secret-string
添加Lambda@Edge触发器和Origin自定义头到CloudFront分布,使用CloudFormation模板:
1...2类型:“AWS:: CloudFront::分配”3.属性:4起源:5-…6OriginCustomHeaders:7- HeaderName:“X-TCELL-APP-ID”8HeaderValue:“< tcell_app_id >”9DefaultCacheBehavior:10...11LambdaFunctionAssociations:12- EventType: origin-request13IncludeBody:真14LambdaFunctionARN: ! ImportValue cloudfrontagent-tcell: tcellAgentFunction15- EventType: origin-response16LambdaFunctionARN: ! 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 |
推荐CloudFront配置
Managed-AllViewer原产地请求策略
为了最大化tCell代理的能力,我们建议使用Managed-AllViewer Origin Request Policy,当CloudFront缓存丢失时,该策略将所有请求属性转发到Origin。这有助于确保CloudFront代理拥有正确应用tCell配置策略所需的所有信息。
CloudFront缓存策略
我们建议使用CloudFront缓存策略,在缓存键中包含尽可能多的请求属性,以增加Agent报告的数据的有用性。例如,如果攻击者请求具有许多不同属性的相同URL,但这些属性不包含在您的缓存策略中,CloudFront将返回缓存的内容,而不触发tCell代理函数,从而降低您对攻击源服务器的企图的可见性。
限制
随着缓存未完成次数的增加,更多的请求被转发到原始服务器,这会增加页面加载时间。如果站点性能对于大的缓存键来说太慢了,那么尝试从该键中删除属性,直到性能可以接受为止。