中文静态网站下载,网站上传到虚拟主机,同时做网站建设和代账,怎么卸载2345网址导航文章目录 一、方案介绍二、架构图三、部署方案1. 进入Cloud9 编辑器#xff0c;新打开一个teminal2. 克隆代码3. 解绑上一个实验中Cloudfront 分配绑定的防火墙4. 使用CDK部署方案5. CDK部署完成6. 关联LambdaEdge函数 四、方案效果 一、方案介绍 采用 LambdaEdge DynamoDB 架… 文章目录 一、方案介绍二、架构图三、部署方案1. 进入Cloud9 编辑器新打开一个teminal2. 克隆代码3. 解绑上一个实验中Cloudfront 分配绑定的防火墙4. 使用CDK部署方案5. CDK部署完成6. 关联LambdaEdge函数 四、方案效果 一、方案介绍 采用 LambdaEdge DynamoDB 架构实现。 LambdaEdge每次访问都会调用Lambda函数判断是否符合设定的规则是则进行计数否则阻断访问。 客户端可能会访问任意一个 CloudFront 的 POP 点所以需要在多个物理位置维护一份访问数据并且保证同步。这里利用了Amazon DynamoDB 的全局表可以在毫秒级实现全球数据同步保证LambdaEdge的数据全局一致。 DynamoDB维护两张全局表来作为数据存储一张供 Lambda Edge 访问存储必要的访问数据一张存储被封禁的 IP 信息更新WAF Rule 封禁违规IP。
二、架构图 三、部署方案
1. 进入Cloud9 编辑器新打开一个teminal 2. 克隆代码
git clone https://github.com/awslabs/aws-cloudfront-extensions.git3. 解绑上一个实验中Cloudfront 分配绑定的防火墙 4. 使用CDK部署方案
cd ./aws-cloudfront-extensions/function/js/limit-request-rate/cdk/
npm install
cdk bootstrap
# cdk deploy --parameters cfDistIdcloudfront 分配ID类似EP1GUKEQP43MF --parameters rateLimit10 --parameters urlRateLimit5 --parameters urlList/login,/info RateLimitCfStackcdk deploy --parameters cfDistIdEU7NDIEB0KPVH --parameters rateLimit10 --parameters urlRateLimit5 --parameters urlList/login,/info RateLimitCfStack注意需要更换cfDistId为你创建的cloudfront 分配Id 参数说明 cfDistId: Cloudfront分配IdrateLimit: 全局每分钟限速次数urlList需要单独设置限速规则的URLurlRateLimitURL的每分钟限速次数 5. CDK部署完成 6. 关联LambdaEdge函数
在lambda 控制台找到对应的函数名称RateLimitCfStack-RateLimitLambdaEdge***,选择version1记录下ARN。 在cloudfront分配打开行为标签并编辑。 确认在最下方的function associate关联LambdaEdge函数。 至此配置完成。
四、方案效果
验证WAF的最小速率次数为10次/min。 请求语句注意请在Cloud9中执行下面测试
export JUICESHOP_URLYour Juice Shop URL
export JUICESHOP_URLhttps://djbryp4jxosx1.cloudfront.netfor ((i0; i12; i)); do echo $i; curl -I ${JUICESHOP_URL};sleep 1;done达到规则后ip立即被阻断。 再次发送请求
curl -I ${JUICESHOP_URL}请求结果
WSParticipantRole:~ $ curl -I ${JUICESHOP_URL}
HTTP/1.1 403 Forbidden
Server: CloudFront
Date: Fri, 22 Dec 2023 06:09:11 GMT
Content-Type: text/html
Content-Length: 919
Connection: keep-alive
X-Cache: Error from cloudfront
Via: 1.1 6306947fb6ab60dc617ca2e025941652.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: IAD50-C2
X-Amz-Cf-Id: AJN-UrMIQ9_YYtKWnbeDmWPOakVyZKY9lWgon-MnVIYkWbqXQXMRLw状态码为403请求是被WAF防火墙所屏蔽。status code为429时是被LambdaEdge所屏蔽是即时的立即屏蔽。 后续经过waf ipset的更新周期此IP会在waf的黑名单列表内保持4小时。
达到限制条件的Ip被放入黑名单封禁4小时。 验证Ipset 内的ip列表。 请求发起机器ip
WSParticipantRole:~ $ curl ipinfo.io
{ip: 3.226.47.2,hostname: ec2-3-226-47-2.compute-1.amazonaws.com,city: Ashburn,region: Virginia,country: US,loc: 39.0437,-77.4875,org: AS14618 Amazon.com, Inc.,postal: 20147,timezone: America/New_York,readme: https://ipinfo.io/missingauth
}
WSParticipantRole:~ $ WAF内黑名单Ipset BlockIPSET_0 特殊URL的速率为5次/min。 由于前面实验步骤请求机器ip已经被封禁首先需要解除封禁。
删除DynamoDB table RateLimitCfStack-BlackIpList 里的ip记录。删除WAF ipset 里的记录。
请求命令
export JUICESHOP_URLYour Juice Shop URL
export JUICESHOP_URLhttps://djbryp4jxosx1.cloudfront.netfor ((i0; i6; i)); do echo $i; curl -I ${JUICESHOP_URL}/login;sleep 1;done返回结果 可以看出对关键URL的rate限制每分钟5次也已经生效。