安装CloudFront代理
为了提高CloudFront Origin服务器的安全性,您可以通过Lambda@Edge.这为AWS CloudFront前端的任何web应用程序或静态内容提供了tCell支持。当您将代理作为CloudFormation堆栈部署到您自己的AWS帐户中时,对CloudFront分发版的请求会在Origin requests和Origin Responses上触发tCell代理Lambda函数。
用例
静态站点和存储在S3桶中的内容通常由CloudFront提供,因为它是一个简单的基于HTML的网站和运行的方法。通过利用TCell的CloudFront代理,您可以在这些网站上添加和强制使用CSP标头,以防止像CSRF和XS等常见攻击。
利用CloudFront作为反向代理有助于减少Origin服务器上的负载这确保您的web应用程序能够尽可能快地为来自世界各地的用户提供内容。将tCell的CloudFront代理添加到CloudFormation堆栈中,可以在原始请求和响应上提供WAF功能的额外好处,并且增加了最小的延迟。
支持的特征
先决条件
安装
下载代理
- 在上方导航栏中,单击tCell管理.
- 点击下载代理.
- 选择冰球代理。
- 下载
. zip或者tar.gz文件。
安装代理
所有AWS资源必须在us-east-1地区的同一个帐户中创建。
- 部署tCell Lambda@Edge CloudFormation堆栈。
- 在解压后的代理归档目录下执行如下命令:
山姆部署,指导 - 按照提示并根据需要完成字段。
部署要求
必须部署Lambda @ Edge函数美东-1
允许创建SAM CLI IAM角色
使用默认选项是的对于“允许创建SAM CLI IAM角色”。代理的云形成堆栈需要为其Lambda函数创建一个角色,以访问AWS Secrets Manager中的tCell凭证,并允许部署到Lambda@Edge。
- 创建一个tCell应用程序和服务器代理API键对于您想要安全的每个云端。
- 为每个应用程序的ID和密钥创建AWS Secrets Manager中的秘密。如果通过CloudFormation管理您的CloudFront分布,则可以通过相同的CloudFormation堆栈创建此秘密。秘密名称必须是格式
CloudFrontAgent-Tcell /值必须是服务器代理API键值。 - 使用tCell Lambda函数的触发器更新所有所需的CloudFront缓存行为,并为每个Origin添加tCell App ID作为Origin自定义头,以便代理报告到正确的应用程序。为了支持所有功能,tCell agent功能必须配置为接收两者
origin-request和起源反应事件类型,和origin-request触发器必须配置为在事件中包含请求体。
例子
创造一个秘密AWS秘密经理使用AWS CLI:
1
AWS秘密管理器创建秘密--region美东-1 --name cloudfrontagent-tcell / --secret-string
使用CloudFormation模板向CloudFront分发版添加Lambda@Edge触发器和Origin自定义标题:
1
...
2
类型:“AWS :: CloudFront ::分布”
3.
特性:
4
起源:
5
- ...
6
origincustomheaders:
7
- 头部名称:'x-tcell-app-id'
8
Headervalue:''
9
defaultcachebehavior:
10
...
11
LambdaFunctionAssociations:
12
- EventType:源 - 请求
13
IncludeBody:真
14
LambdaFunctionARN: ! ImportValue cloudfrontagent-tcell: tcellAgentFunction
15
- EventType:源 - 响应
16
LambdaFunctionARN: ! ImportValue cloudfrontagent-tcell: tcellAgentFunction
使用原点自定义标头的其他配置
除了应用程序ID,几个服务器代理选项可以使用原始自定义标头配置。
| 服务器代理选项 | 标题名称 |
|---|---|
| 应用程序ID | X-TCell-App-ID |
| 允许载荷 | X-TCell - 允许有效载荷 |
| 记录级别 | X-TCELL-LOG-LEVEL |
| 反向代理IP地址头 | X-TCell-Reverse-Proxy-IP地址标题 |
推荐CloudFront配置
Managed-AllViewer源请求策略
为了最大化Tcell代理的功能,我们建议使用Managed-AllViewer原点请求策略,该ocigne策略将在发生CloudFront缓存未命令时将所有请求属性转发到原点。这有助于确保CloudFront代理具有正确应用TCell配置策略所需的所有信息。
CloudFront缓存策略
我们建议使用CloudFront缓存策略,在缓存键中包含尽可能多的请求属性,以增加代理报告的数据的有用性。例如,如果攻击者请求具有许多不同属性的相同URL,但这些属性不包括在缓存策略中,CloudFront将返回缓存的内容,而不会触发tCell代理函数,从而降低对源服务器的攻击企图的可见性。
限制
随着缓存未命中次数的增加,更多的请求被转发到原始服务器,这就增加了页面加载时间。如果站点性能太慢,且缓存键较大,请尝试从该键中删除属性,直到性能可以接受为止。