🔎

AWS WAFって何?

2021/10/25に公開

はじめに

AWS WAFについて、「なんかAPI守ったり出来るやつ」くらいしか考えてなかったので、もうちょっとちゃんと調べて整理してみました。

結論

  • 構成例

  • AWS WAF(Web Application Firewall)とは、「セキュリティ対策を行うマネージドサービス」である

    • 主にアプリケーション層のレイヤを保護するのに有用
    • WAFを使うべき、使うべからず、どちらとも言えない、というのがはっきりわからん人はこちらの記事を参照
    • AWSのセキュリティ系サービスってどれ使えばいいんだろ? https://zenn.dev/katoaki/articles/5dd8753c6423d4
  • WebACLとRules(ルールグループ)とRuleの関係

    • WebACL:Rules(ルールグループ) = 1:N
    • WebACL:Rule = 1:N
    • Rules(ルールグループ):Rule = 1:N
  • WebACLとRules(ルールグループ)とRule

    • WebACLという単位で設定を行う。
      • どのRule,Rulesから実行するのか設定できる
    • Ruleとは、不正アクセスとみなす検査方法とアクション(カウント or ブロック)の定義を1つのセットにしたもの
      • 不正とみなされたリクエストにActionを実行する。
      • ActionはにはCountとBlockがある。Blockだと遮断する。
      • Rules(ルールグループ) を利用して、Ruleをひとまとめに管理する。
        • なので、例えば一旦内包するRuleを一括で「カウント」にして一旦様子見する、といったことができる

やってみたこと

主にBlackBeltの動画みながら、自分が知りたかったことについて要点を整理してみました。

is 何

  • AWS WAFとは「セキュリティ対策を行うマネージドサービス」である

  • 具体的には、WEBアプリの通信内容を検査し、不正なアクセスをカウントしたりブロックしたりログに記録するものである

    • 欠陥を悪用する能力を制限するものである。根本的な欠陥を修正するものではない。
    • レイヤ1-4以下には不適切(そこはCloudFront, ELB, AWS Shieldの守備範囲)
    • 標的型攻撃のすべてを防げるわけではない(OSI基本参照モデルで言うとレイヤ7の「アプリケーション層」までが守備範囲、レイヤ7がメインの守備範囲)
      • ただし、後述の「Rate-based rule」によって対応することも可能な部分もある。あくまでメインはレイヤ7ということ。
  • WAFを使うべき、使うべからず、どちらとも言えない、というのがはっきりわからん人はこちらの記事を見てください

  • 不正アクセスとみなす検査方法とアクション(カウント or ブロック)の定義を1つのセットにして Rule という

    • Ruleは一度設定して終わり、ではなく現場に合わせて見直すことが大事
      • Webアプリの仕様上支障がある内容への対応、攻撃者の手法の変化への対応など
      • JSONのフォーマットで、APIを介して変更できるので、自動化が捗る&AWSサービスとの連携が強いのがAWS WAFのいいところ

→で、Ruleってなに?

Ruleについて

  • 不正アクセスとみなす検査方法とアクション(カウント or ブロック)の定義を1つのセットにしたもの
    • 不正とみなされたリクエストにActionを実行する。
    • ActionはにはCountとBlockがある。Blockだと遮断する。
    • Regular-ruleとRate-based-ruleがある
      • Regular rule
        • リクエストに対する検査方法と、リクエストが検査条件に一致した場合の処理を定義する
      • Rate-based-rule
        • DDoSやブルートフォースアタックのようなものへ対応
        • リクエストレートの制限を適用する条件を指定できる
            * 例えば、5分間に同一IPアドレスからの指定回数を超えたリクエストがあるとトリガするといった条件を指定可能
    • Rate LimitやStatementはOR・AND・NOTで組み合わせできる

Rules(ルールグループ)

  • 複数のRuleをまとめたものをRules(ルールグループ) という
  • スコープダウンステートメントを利用して、所定の条件にマッチするものはいずれのルールにも一致しないものとすることができる
  • グループ単位でアクション設定を上書きできる( 参考 )
    • Override rule group action to count:true of false
      • 要するに、いきなりブロックにすると稼働中のアプリに影響が出るので「一旦全部カウントで!」というのが出来るってことです。
      • このオプション、最初全く意味が分からなかったので補足しました↑

WebACL

  • 複数のRule, RulesをまとめたものをWebACLという
  • どのRuleから実行するのか、どれくらいの処理量を許容するのかを定義できる。
  • 処理量の定義はWCUによって行う。
  • Rule毎にWCUが決まっていて、総WCU数のリミットをWebACLに定義できる。リミットの定義は必須

参考

Discussion