~~NOCACHE~~
~~DISCUSSION~~
## 0.はじめに(WAF)
**機能でなく仕組みで考えよう!**
WAF(Web Application Firewall)とは、簡単に言うと「Webリクエストを評価」し、「評価結果に応じた動作」を行う仕組みです。
この仕組みにより、「Webアプリケーションの脆弱性などを悪用した攻撃」からWebサイトを保護する機能をもたらします。
### 評価項目および動作項目
AWS WAF の評価項目および動作を記載します、それぞれの項目で文字列やサイズなど詳細な設定が可能です。
https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/classic-web-acl-create-condition.html
■Webリクエストを評価
^ 項目                    ^ 概要                                                                                                                                                                                        ^ 備考                                                                  ^
| 接続元の国              | [リクエスト送信元の国]に基づいて評価します。 |                                                                       |
| 接続元のIP アドレス     | [リクエスト送信元のIPアドレス]もしくは[ヘッダー内のIPアドレス]を評価します。                                                                                                                          |                                                                       |
| ラベル                  | 同じ Web ACL で追加したラベルを評価します。                                                                                                                                                 | ルールにはプライオリティがあり、後続の評価ではラベルを参照できます。  |
| ヘッダー                | 指定したヘッダー情報を評価します。                                                                                                                                                          |                                                                       |
| 単一のクエリパラメータ  | 指定したQuery argumentの値を評価します。                                                                                                                                                    |                                                                       |
| 全てのクエリパラメータ  | 全てのQuery argumentの値を評価します。                                                                                                                                                      |                                                                       |
| クエリ文字列            | URL 内で「?」文字の直後に続く部分                                                                                                                                                             |                                                                       |
| URIパス                 | URIを評価します。(ドメインの後の「/」から「?」までだと思う)APIGatewayでいうリソース部分                                                                                                                         |                                                                       |
| body                    | bodyを評価します。                                                                                                                                                                          |                                                                       |
| HTTPメソッド            | HTTPメソッドを評価します。(DELETE、GET、HEAD、OPTIONS、PATCH、POST、 PUT)                                                                                                                   |                                                                       |
| リクエストレート        | 5 分間に許可される単一の IP アドレスからのリクエストの最大数を評価します。                                                                                                                  | 総当たり系の攻撃は、レート制限で対応となります。                      |
■評価結果に応じた動作
^ 項目      ^ 概要                          ^ 備考                                                                                                                                                 ^
| 許可      | リクエストを通過します。      |                                                                                                                                                      |
| 拒否      | リクエストを遮断します。      |                                                                                                                                                      |
| カウント  | リクエストをカウントします。  | 期間内に一定以上のリクエストがあった場合は、送信元のIPアドレスをブラックリストにいれるといった作りこみをする場合があります。  |
### 記事一覧
各評価項目ごとの設定例については下記に記載していきます。
{{tag>AWS WAF}}