Let's Introduce
AWS WAF Bot Control
JAWS-UG 朝会 #21 05.27.2021
#jawsug_asa
Stand IO
Target
- AWS WAFに興味がある方
- AWS WAFのBot Controlについてシュッと知りたい方
- AWS WAFなにそれ?という方
AWS WAFとBot Controlについての基本的な部分を
取り扱うので初心者の方向けの内容です💡
※このセッションではAWS WAF V2をメインで話します
Who am I ?
- Masayuki Nakano
- SRE
- 筋トレ💪
- 👩🏼と🐈と暮らしてます
What's AWS WAF?
AWS WAF は、可用性、セキュリティ侵害、リソースの過剰消費に影響を与えるような、ウェブの脆弱性を利用した一般的な攻撃やボットから、ウェブアプリケーションまたは API を保護するウェブアプリケーションファイアウォールです
AWS WAFで保護できること
- SQL Injection
- XSS
- レートベース
- IP Block
- Bot Control ← New
- etc...
※Web Application Firewall
AWS WAFは以下のリソースにアタッチし利用することが可能
- ALB, CloudFront, API Gateway, AppSync
※ClassicLoadBalancer, NetworkLoadBalancerなどには利用不可
How to use?
AWS WAFにはルールという概念がある
例えば、User-Agentにchromeが含まれている場合はNGにするなど
-
ユーザー定義ルール
- 「自分で」ルールを定義
-
マネージドルール
- セキュリティベンダーが提供しているルール
- AWSからもルールが提供されるようになった
- ルールの詳しい内容についてはブラックボックス
これらルールをWAFにアタッチする
Action
ルールにマッチしたリクエストに対するアクション
-
Block
- ステータスコード403でレスポンス
-
Allow
- リクエストを許可
-
Count
- Blockせずメトリクスに反映する
- まずはCountで設定して様子をみるのが良い😀
WAF ACLs
Own Rule
{
"Name": "exclude-curl",
"Priority": 0,
"Action": {
"Block": {
"CustomResponse": {
"ResponseCode": "400"
}
}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "exclude-curl"
},
"Statement": {
"ByteMatchStatement": {
"FieldToMatch": {
"SingleHeader": {
"Name": "User-Agent"
}
},
"PositionalConstraint": "CONTAINS",
"SearchString": "curl",
"TextTransformations": [
{
"Type": "NONE",
"Priority": 0
}
]
}
}
}
カスタムレスポンスとして400を返す
User-Agentにcurlが含まれているか
Managed Rule
- Bullet One
- Bullet Two
- Bullet Three
Title Text
What's Bot Control?
AWSのマネージドルールの1つ
ウェブリクエストからBotか判定し、設定したAction(Allow or Block or Count)を行うことが可能
Bot Controlのルールの一部
具体的な内容はブラックボックスになっている
Rules
Rule単位でActionをCountに変更することが可能
Metrics
Categories
Lighthouseはcontent_fetcherのカテゴリに分類
curl,wgetはhttp_libraryのカテゴリに分類
But it's expensive, right?💸
Bot Controlで発生する費用
- Bot Controlのプロビジョニング費用 10$/month
- Bot Control によって処理されるリクエスト 1$/100万req
AWS WAFで発生する費用
- Web ACL 5$/month
- ルール 1$/month
- リクエスト 0.6$/100万req
費用 = Bot Controlで発生する費用 + AWS WAFで発生する費用
※WAFのログを取得するのにKinesis Firehoseが必要になる
Conclusion
- AWS WAFを利用することでアプリケーションレイヤーを守ることができる
- ルールを自作することが可能(メンテナンスコストはかかる)
- マネージドルールはメンテナンスコストは低いがルールはブラックボックス
- ルールのActionはいきなりBlockで本番投入するのではなくCountで様子を見る
- Bot ControlでBotの傾向を知ることができる
- WAFのログを取得するためにはKinesis Firehoseが必要
Have a nice day!
jaws-asa-21
By maaaato
jaws-asa-21
- 1,458