AWS WAF(Web Application Firewall)是一种提供应用程序级别保护的安全服务,旨在保护web应用程序免受网络攻击。AWS WAF可以有效地帮助用户抵御常见的网络攻击,如跨站脚本(XSS)、SQL注入等。它允许用户创建自定义的安全规则,以监控和控制应用程序收到的流量。这些规则可以基于多种条件,包括IP地址、HTTP头部、HTTP正文、或者字符串匹配等来设置。
本实验将演示如何使用托管规则和自定义规则,来抵御网络攻击。
验证Web页面访问:点击CloudFormation堆栈,选中堆栈PartnerEdgeWorkshop,输出输出标签,获得Cloudfront URL,在浏览器中打开Cloudfront URL,如下图所示。
此时,已成功完成实验环境准备工作,接下来将进入下一步:Web ACL配置
Web ACL 是 AWS WAF 部署中的核心资源。它包含针对它收到的每个请求评估的规则。Web ACL 通过 Amazon CloudFront 分配、AWS API Gateway、AWS AppSync 或 Application Load Balancer 与您的 Web 应用程序关联。
托管规则组是 AWS 和 AWS Marketplace 卖家为您编写和维护的预定义、即用型规则的集合。
某些托管规则组旨在帮助保护特定类型的 Web 应用程序,例如 WordPress、Joomla 或 PHP。其他漏洞则针对已知威胁或常见 Web 应用程序漏洞提供广泛的保护,包括 OWASP Top 10 中列出的一些漏洞。如果您受 PCI 或 HIPAA 等法规遵从性的约束,则可以使用托管规则组来满足 Web 应用程序防火墙要求。
AWS 提供了一系列托管规则组。三个示例是 Amazon IP 信誉列表、已知错误输入和核心规则集。
#使用Cloudformation创建出的URL
export JUICESHOP_URL=<Your Juice Shop URL>
export JUICESHOP_URL=djbryp4jxosx1.cloudfront.net
# Sql注入语句
curl -X POST $JUICESHOP_URL -F "user='AND 1=1;"
# XSS攻击语句
curl -X POST $JUICESHOP_URL -F "user='<script><alert>Hello</alert></script>'"
Sql注入和XSS都正常返回response, 未被Waf Block。
<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<title>OWASP Juice Shop</title>
<meta name="description" content="Probably the most modern and sophisticated insecure web application">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body class="mat-app-background bluegrey-lightgreen-theme">
<app-root></app-root>
</body></html>
在web acl页面,选择 Add rules 按钮。
添加 Core rule set,该规则集将涵盖 Web 应用程序常见的各种漏洞。
添加 SQL database,该数据库将提供规则来防止 SQL 数据库漏洞,例如 SQL 注入。
添加 Known bad inputs,该数据库将提供规则来防止 SQL 数据库漏洞,例如 SQL 注入。
执行步骤:测试用例 中的攻击语句,结果如下:
证明WAF已经有效拦截sql注入和xss攻击。