WAFとは
Web Application Firewall(WAF)の略。
Webアプリケーションの脆弱性に対しての攻撃(例えばSQLインジェクション攻撃とか)から、アプリケーションを保護するセキュリティ対策として利用される技術・製品のことで、
攻撃や脆弱性を感知した場合には、リクエストをブロックする
AWS WAFドキュメント
Fierwallとの違いは
IPアドレスやポート番号で通信を許可/拒否するものではないという点。
AWSでいうとセキュリティグループがFirewallにあたる。
Firewallでは悪意のあるアクセスなのかまでは判断することができない。
導入箇所
ALB・CloudFront・API Gatewayに割り当てて利用する
AWS WAFの攻撃範囲
AWS WAFの用語
- WebACL
- 1つのWAFの設定の塊
- CloudFront・ALB・API Gatewayに割り当てる単位
- 1つのリソースに対して1つのWebACLのみ、割り当てることができる
- 複数のリソースに対して同じWebACLを割り当てることができる
- 複数のルール/ルールグループを内包する
- WebACLキャパシティユニット(WCU)が1500まで
- ルールごとの重みの合計値のこと
- ルール
- リクエストに対する条件のまとまり
- ルールごとにWCUが設定されている
- ルールグループ
- ルールをまとめたもの
- 事前に定義可能
- アクション
- リクエストをルールに照らし合わせた結果をどう扱うかの設定
- Count(カウント)・Allow(許可)・Block(ブロック)がある
- Count
- AWS WAF はリクエストをカウントしますが、リクエストを許可するかブロックするかは決定しません。このアクションにより、AWS WAF がウェブ ACL の残りのルールの処理を継続します。リクエストにカスタムヘッダーを挿入し、他のルールが照合できるラベルを追加できます。
- Allow
- AWS WAF では、処理と応答のためにリクエストを AWS リソースに転送できます。このアクションにより、リクエストのウェブ ACL 評価が終了します。保護されたリソースに転送する前に、カスタムヘッダーをリクエストに挿入できます。
- Block
- AWS WAF はリクエストをブロックします。このアクションにより、リクエストのウェブ ACL 評価が終了します。デフォルトでは、AWS リソースは HTTP 403 (Forbidden) ステータスコードで応答しますが、応答をカスタマイズできます。AWS WAF がリクエストをブロックする場合、ブロックアクション設定は、保護されたリソースがクライアントに送り返す応答を決定します。
- Count
- ルール毎にアクションがあり、全てのルールに当たらなければWebACLに設定された DefaultActionに沿って処理される
AWS WAFで作成できるルール
- IP制限
- 管理系ページへのアクセス制限
- 特定path以下へのアクセスは特定アドレス(拠点とか)からのみ許可する
- ブラックリスト
- 特定のIPアドレスをブロックする
- 管理系ページへのアクセス制限
- レートベースのルール
- 5分間で閾値を超える同一アドレスからのアクセスがあった場合に、ブラックリストに追加する。
- 一定時間経過するとブラックリストから解除する
- 特定の脆弱性に関するルール
- XSS(クロスサイトスクリプティング)やSQLインジェクションなどWebアプリケーションの脆弱性に関するルールを作成する
- 悪意のあるHttpリクエストかを確認するルール
- httpヘッダーがIPアドレスかを確認したり
- httpリクエストの長さを確認したり
AWS Managed Rules for AWS WAFの種類
ベースラインルールグループ
様々な既知の脅威に対する一般的なルールを提供する
これらのルールグループのうち1つ以上を選択して、対象のアプリケーションを保護するためのベールラインとなるルールを設定
- Core rule set
- OWASP Top10の脅威に基づく、一般的なウェブアプリケーションに適用可能な防御ルール
- Admin protection
- 公開されている管理ページへの外部アクセスをブロックするためのルール
- Known bad inputs
- 無効であることがわかっており、脆弱性の悪用またわ探索に関するリクエストパターンをブロックするルール
ユースケース別のルールグループ
ユースケールに合わせた追加の保護対策を提供
保護対象のオペレーティングシステムやミドルウェア、アプリケーションによって、適切なルールを選択する
- SQL database
- SQLインジェクション攻撃など、SQLデータベースの悪用に関するリクエストパターンをブロックするルール
- Linux operating system
- Linux固有のローカルファイルインクルージョン(LFI)攻撃など、Linux固有の脆弱性の悪用に関するリクエストパターンをブロックするルール
- PHP application
- 安全でないPHP関数のインジェクションなど、PHPに固有の脆弱性の悪用に関するリクエストパターンをブロックするルール
- WordPress application
- WordPressサイト特有の脆弱性の悪用に関するリクエストパターンをブロックするルール
- POSIX operationg system
- POSIXおよびPOSIXと同様のオペレーティングシステムに固有の脆弱性の悪用(ローカルファイルインクルージョン(LFI)攻撃など)に関連するリクエストパターンをブロックするルール
- Windowns operation system
- PowerShellコマンドのリモート実行など、Windows固有の脆弱性の悪用に関連するリクエストパターンをブロックするルール
IPレピテーションルールグループ
ここの攻撃の種類に対するルールではなく、よく踏み台などにされるIP元リストを提供しており、それらIPに基づいてリクエストをブロックする
- Amazon IP requtation list
- botやその他の脅威に関連づけられているIPアドレスをブロックするルール。Amazon内部の脅威インテリジェンスにもどずくルールによって脅威IPが収集されている。
- Anonymous IP list
- VPN、プロキシ、Torノード、ホスティングプロバイダーなどのビューワーIDの難読化を許可するサービスからのリクエストをブロックするルール
Bot Controlルールグループ(有償)
ボットと判断されるリクエストを検知し、それに基づいたアクションを行う
- botに特化したマネージドルールを提供
- リクエストによってbotの種別を表すラベルを追加
- ラベル内にbotの種類と特徴(シグナル)を表す情報を付与
- AWS WAFを利用する全てのユーザーは、Bot Controlのルールグループを有効にせずとも、一定の可視性が得られる
- Bot Controlルールを利用した場合の効果を事前に取得し、利用の可否を決めることができる。
Account Takeover Preventionルールグループ(有償)
ログインページに対する不正なアクセスから保護するためのルールグループ
- 盗まれた認証情報を利用したログイン試行を可視化及び制御
- クレデンシャルフタッフィング攻撃
- ブルートフォース攻撃
- その他の異常のログイン試行
- POSTされたデータを盗まれたクレデンシャルのデータベースと照合
- アプリケーション統合SDKの利用で検知能力を向上(オプション)
- Javascript、iOS/Android SDK
参考記事