WAF、Shield、Network Firewall
AWS WAFでOWASPトップ10の攻撃をブロックし、Shield StandardとAdvancedでDDoSから保護して、VPCにステートフルなNetwork Firewallをデプロイします。
「WAF、Shield、Network Firewall」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。
ネットワークセキュリティの多層防御
ネットワークベースの攻撃からアプリケーションを保護するには、複数の防御層が必要です。AWSは、相互に補完し合う3つのサービスを提供しています。AWS WAF(Web Application Firewall)は、ルールに基づいてレイヤー7のHTTPトラフィックをフィルタリングし、アプリケーション層の攻撃をブロックします。AWS Shieldは、レイヤー3および4でDDoS(分散型サービス拒否)攻撃から保護します。AWS Network Firewallは、VPCレベルのトラフィックを検査およびフィルタリングするステートフルネットワークファイアウォールです。これらを組み合わせることで、異なる脅威ベクトルに対応し、通常は包括的な保護のために併用します。
# Layer coverage:
# Network Firewall: Layer 3-7 VPC traffic (stateful)
# Shield Standard: Layer 3-4 DDoS (automatic, free)
# Shield Advanced: Layer 3-7 DDoS + response team
# WAF: Layer 7 HTTP/HTTPS (application attacks)
# Typical deployment:
# Internet -> CloudFront+WAF -> ALB+WAF -> EC2/ECS
# Network Firewall in VPC for egress/lateral inspection
# Shield protects all traffic automaticallyAWS WAF:Web Application Firewall
AWS WAFは、定義したルールに基づいてHTTP/HTTPSリクエストをフィルタリングします。WAFはCloudFront、ALB、API Gateway、AppSync、Cognitoと統合できます。ルールでは、次の条件を照合できます。IPアドレスセット(特定のIPをブロックまたは許可)、geo-match(特定の国からのリクエストをブロック)、レートベースルール(リクエストレートがしきい値を超えたIPをブロックし、フラッド攻撃を防止)、マネージドルールグループ(OWASP Top 10、AWS Threat Intel、Bot Control向けの事前構築済みルール)、カスタムルール(任意のHTTPコンポーネントを照合)です。WAF ACL(Web ACL)にはルールが含まれ、1つ以上のリソースに適用されます。
# Create WAF Web ACL
aws wafv2 create-web-acl \
--name 'prod-web-acl' \
--scope CLOUDFRONT \
--region us-east-1 \
--default-action Allow={} \
--rules '[{
"Name": "AWSManagedRulesCommonRuleSet",
"Priority": 1,
"OverrideAction": {"None": {}},
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CommonRuleSet"
}
}]' \
--visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=web-acl-metricsWAFマネージドルールグループ
AWS Managed Rule Groupsは、AWSが保守する事前構築済みのWAFルールセットです。個別のルールを作成しなくても、一般的な脅威から保護できます。主なグループは次のとおりです。AWSManagedRulesCommonRuleSet — OWASP Top 10(SQLインジェクション、XSS、RFI、LFI)から保護します。AWSManagedRulesKnownBadInputsRuleSet — 既知の不正な入力パターンをブロックします。AWSManagedRulesAmazonIpReputationList — 評判の悪いIP(ボットネットや侵害されたIP)をブロックします。AWSManagedRulesBotControlRuleSet — スクレイピングボットや自動ブラウザを検出してブロックします。多くのWAF環境では、カスタムルールを追加する前に、これらのマネージドルールグループから導入を始めます。
# Add IP reputation list managed rule group
aws wafv2 update-web-acl \
--name 'prod-web-acl' \
--scope CLOUDFRONT \
--id <acl-id> \
--lock-token <lock-token> \
--rules '[{
"Name": "AWSManagedRulesAmazonIpReputationList",
"Priority": 0,
"OverrideAction": {"None": {}},
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesAmazonIpReputationList"
}
}
}, ...existing_rules...]'WAFのレートベースルール
AWS WAFのレートベースルールは、5分間のウィンドウ内で設定可能なリクエストレートのしきい値を超えたIPアドレスを自動的にブロックします。これにより、次の攻撃から保護できます。HTTPフラッド攻撃(大量のリクエストでサーバーを過負荷にする攻撃)、ブルートフォース攻撃(大量のログイン試行)、APIの悪用(スクレイピングや列挙)です。IP単位、IP + リクエストパス単位(/loginのような特定のエンドポイントをレート制限)、またはカスタムヘッダー単位で集計できます。ブロックされたIPは、レートがしきい値を下回ると自動的にブロック解除されるため、手動操作は必要ありません。
# Create rate-based rule for login endpoint
aws wafv2 update-web-acl \
--rules '[{
"Name": "RateLimitLogin",
"Priority": 2,
"Action": {"Block": {}},
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": {
"ByteMatchStatement": {
"SearchString": "/api/login",
"FieldToMatch": {"UriPath": {}},
"TextTransformations": [{"Priority": 0, "Type": "LOWERCASE"}],
"PositionalConstraint": "STARTS_WITH"
}
}
}
}
}]'AWS Shield StandardとAdvanced
AWS Shield Standardは、すべてのAWS利用者に追加料金なしで自動的に提供されるDDoS保護です。SYNフラッド、UDPフラッド、リフレクション攻撃など、最も一般的なレイヤー3(ネットワーク)およびレイヤー4(トランスポート)のDDoS攻撃から保護します。AWS Shield Advancedは、EC2、ALB、CloudFront、Global Accelerator、Route 53に対するレイヤー3、4、7の攻撃への強化された保護を提供します。Shield Advancedには、AWS DDoS Response Team(DRT)のサポート、コスト保護(DDoS関連のスケーリング料金の払い戻し)、リアルタイムメトリクス、高度な攻撃フォレンジックが含まれます。Shield Advancedの料金は月額3,000ドルに加え、データ転送料金がかかります。
# Enable Shield Advanced protection on ALB
aws shield create-protection \
--name 'prod-alb-protection' \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123:loadbalancer/app/prod-alb/abc
# Associate with a WAF Web ACL for layer-7 protection
aws shield associate-drt-log-bucket \
--log-bucket my-shield-logs
# With Shield Advanced:
# - DDoS events detected and mitigated automatically
# - DRT can tune WAF rules during active attacks
# - Real-time CloudWatch dashboard
# - AWS will refund EC2/ELB/CloudFront scaling costs from DDoSAWS Network Firewall
AWS Network Firewallは、VPCにデプロイしてトラフィックを検査およびフィルタリングする、ステートフルなマネージドネットワークファイアウォールサービスです。Security Groups(ステートフル、リソースレベル)やNACL(ステートレス、サブネットレベル)とは異なり、Network Firewallは次の機能を提供します。ディープパケットインスペクション(DPI)、ステートフルな接続追跡、ドメインフィルタリング(ドメイン名またはパターンによるブロック)、Suricata互換のルール形式を使用したIPS(侵入防止システム)ルール、出口トラフィックのフィルタリング(EC2インスタンスがインターネット上で呼び出せる対象の制御)です。各AZの専用ファイアウォールサブネットにNetwork Firewallをデプロイします。
# Create Network Firewall
aws network-firewall create-firewall \
--firewall-name prod-vpc-firewall \
--firewall-policy-arn arn:aws:network-firewall:us-east-1:123:firewall-policy/my-policy \
--vpc-id vpc-12345 \
--subnet-mappings '[{"SubnetId":"subnet-firewall-AZ1"},{"SubnetId":"subnet-firewall-AZ2"}]'
# Network Firewall topology:
# Internet -> IGW -> Firewall subnet (Network FW) -> App subnet
# Egress: App subnet -> Firewall subnet (Network FW) -> IGW -> InternetNetwork Firewallのルールグループ
Network Firewallでは、ルールグループを使用してフィルタリングロジックを定義します。ステートレスルールグループは、接続を追跡せずにパケットを処理します。NACLに似ていますが、より柔軟です。ステートフルルールグループは、TCP接続の状態を追跡し、HTTP/TLSセッション全体を検査します。ルールは次の3つの方法で記述できます。5タプルルール(送信元IP、宛先IP、プロトコル、送信元ポート、宛先ポート)、ドメインリストルール(FQDNによる許可または拒否)、Suricata互換のIPSルール(パターン照合やプロトコル検査が可能な、最も強力な方式)です。AWSは一般的な脅威向けのマネージドルールグループも提供しています。
# Create domain list rule group (egress filtering)
aws network-firewall create-rule-group \
--rule-group-name 'allow-egress-domains' \
--type STATEFUL \
--capacity 100 \
--rules-source '{
"RulesSourceList": {
"Targets": [
"amazonaws.com",
"example.com",
"*.npmjs.com"
],
"TargetTypes": ["HTTP_HOST","TLS_SNI"],
"GeneratedRulesType": "ALLOWLIST"
}
}'
# Block all other egress traffic by default
# Prevents EC2 from calling malicious external domainsWAF、Shield、Network Firewallの比較
これら3つのサービスは異なる用途に対応する相互補完的なものであり、代替関係ではありません。WAF — レイヤー7のHTTP検査を行い、アプリケーション攻撃(SQLi、XSS)、レート制限、ボットを制御します。CloudFrontまたはALBにデプロイします。Shield — DDoSを緩和し、ボリューム型攻撃からインフラストラクチャを保護します。Shield Standardは常時有効で、Advancedではチームのサポートが追加されます。Network Firewall — レイヤー3~7のVPCトラフィック制御、ステートフル検査、ドメインフィルタリング、IPS/IDSを提供します。VPCサブネット内にデプロイします。3つを組み合わせて使用します。Network FirewallでVPCレベルのトラフィックを制御し、WAFでアプリケーションリクエストをフィルタリングし、ShieldでDDoSを緩和します。
# Comparison table:
# Service Scope Layer Use Case
# AWS WAF Edge/ALB 7 App attacks, rate limits, bots
# Shield Standard All 3-4 Auto DDoS mitigation (free)
# Shield Advanced All 3-7 Enhanced DDoS + DRT support
# Network Firewall VPC 3-7 Stateful inspection, IPS, egress
# SAA-C03 exam keywords:
# 'SQL injection protection' -> WAF
# 'DDoS protection' -> Shield
# 'Block EC2 from calling external IPs' -> Network Firewall
# 'Block requests from country X' -> WAF geo-matchWAFのログ記録と分析
WAFでは、サンプリングしたリクエスト(5件に1件)またはすべてのリクエストをCloudWatch Logs、S3、Kinesis Data Firehoseに記録できます。ログには、完全なリクエストヘッダー、IPアドレス、国、照合されたルール、実行されたアクション(ALLOW/BLOCK/COUNT)が含まれます。WAFログは次の用途に使用します。攻撃の調査 — どのようなリクエストがブロックされたかを正確に確認します。ルールの調整 — 誤検知(正当なリクエストがブロックされること)を特定し、例外を追加します。新たな脅威の検出 — ブロックされたリクエストのパターンから、新たな攻撃ベクトルが明らかになることがあります。新しいルールは、正当なトラフィックをブロックしないことを検証するため、BLOCKに切り替える前にCOUNTモードを有効にします。
# Enable WAF logging to Kinesis Firehose
aws wafv2 put-logging-configuration \
--logging-configuration '{
"ResourceArn": "arn:aws:wafv2:us-east-1:123:global/webacl/prod-web-acl/abc",
"LogDestinationConfigs": [
"arn:aws:firehose:us-east-1:123:deliverystream/waf-logs"
],
"LoggingFilter": {
"DefaultBehavior": "KEEP",
"Filters": [{
"Behavior": "KEEP",
"Conditions": [{"ActionCondition":{"Action":"BLOCK"}}],
"Requirement": "MEETS_ANY"
}]
}
}'WAF のデプロイアーキテクチャパターン
AWS WAF を正しくデプロイするには、アーキテクチャのどこに関連付けるかを理解する必要があります。インターネット向けアプリケーションでは、CloudFront に WAF を関連付け、トラフィックがオリジンに到達する前にエッジで検査されるようにします。これにより、攻撃がオリジンの帯域幅を消費する前にブロックできます。内部 API や CloudFront を使用しない場合は、WAF を ALB に関連付けます。API Gateway 経由で公開する API では、API Gateway レベルで WAF を関連付けられます。WAF は複数のリソースに同時に関連付けることもできます。たとえば、CloudFront ディストリビューションと、その背後にある ALB の両方に関連付けることで、多層防御を実現できます。ただし、検査コストは 2 倍になります。
# WAF attachment points:
# 1. CloudFront distribution (global edge, CLOUDFRONT scope)
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123:global/webacl/my-acl/abc \
--resource-arn arn:aws:cloudfront::123:distribution/EXAMPLEID
# 2. ALB (regional, REGIONAL scope)
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123:regional/webacl/my-acl/xyz \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123:loadbalancer/app/my-alb/abc
# 3. API Gateway REST API
# 4. AppSync GraphQL API
# 5. Amazon Cognito User Poolマルチアカウント WAF のための Firewall Manager
AWS Firewall Manager は、AWS Organization 内のすべてのアカウントにわたって、WAF、Shield Advanced、Network Firewall、セキュリティグループのポリシーを一元管理します。Firewall Manager で WAF ルールを一度定義すると、すべてのメンバーアカウントにある ALB、CloudFront ディストリビューション、API Gateway に自動的に適用されます。新しく作成されたリソースも対象になります。メンバーアカウントで新しい ALB がデプロイされると、Firewall Manager は WAF Web ACL を自動的に関連付けます。これにより、個々のチームが WAF を正しく設定することに頼らず、組織全体で一貫したセキュリティポリシーを適用できます。
# Create Firewall Manager WAF policy
aws fms put-policy \
--policy '{
"PolicyName": "org-wide-waf-policy",
"SecurityServicePolicyData": {
"Type": "WAFV2",
"ManagedServiceData": "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"managedRuleGroupIdentifier\":{\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesCommonRuleSet\"},\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"excludeRules\":[],\"ruleGroupType\":\"ManagedRuleGroup\"}]}"
},
"ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer",
"IncludeMap": {"ACCOUNT": []},
"ExcludeResourceTags": false,
"RemediationEnabled": true
}'クイックチェック
このレッスンで扱った AWS Solutions Architect (SAA-C03) の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、AWS WAF はレイヤー 7 の HTTP トラフィックをフィルタリングし、SQL インジェクション、XSS、ボットをブロックし、悪意のある IP のレートを制限すること、Shield Standard はレイヤー 3/4 の DDoS 保護を自動的に提供し、Shield Advanced はレスポンスチームのサポートとコスト保護を追加すること、そして Network Firewall はドメインフィルタリングと IPS ルールを備えた、ステートフルな VPC レベルのトラフィック検査を提供することを学びました。Firewall Manager はすべてのアカウントにポリシーを適用します。Security Architecture セクションの完了、おめでとうございます。
よくある質問
「WAF、Shield、Network Firewall」レッスンは無料ですか?
はい。「WAF、Shield、Network Firewall」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。
「WAF、Shield、Network Firewall」で何を学びますか?
AWS WAFでOWASPトップ10の攻撃をブロックし、Shield StandardとAdvancedでDDoSから保護して、VPCにステートフルなNetwork Firewallをデプロイします。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Solutions Architectを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「WAF、Shield、Network Firewall」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Solutions Architectレッスンでコードを書いて実行できますか?
はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- KMS、ACM、暗号化パターン
- GuardDuty、Inspector、Macie
- Secrets ManagerとParameter Store
- WAF、Shield、Network Firewall