あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

AWS WAFについて調べてみた

AWS WAFを使う機会があったのでちょいと調べてみた。

AWS WAFとは

 Web アプリケーションの通信をフィルター、監視、ブロックするためのソフトウェアまたは、ハードウェアのセキュリティ対策。
 一般のファイアウォールや IDS/IPS との違いは、アプリケーションレベルで通信の中身を解析し、特定の条件にマッチする通信を検知・遮断する。
 WAF の代表的な用途には、SQL インジェクション、クロスサイトスクリプティングなど、アプリケーションの脆弱性を悪用した攻撃の遮断やアプリケーション層の DDoS 対策、不正なボットによるアクセスの遮断などがある。
aws.amazon.com

AWS WAFコンポーネント

  • WebACL:WAF設定の塊。特定のAWSリソースに割り当てる。
  • ルール:リクエストに対する条件。
  • ルールグループ:ルールをまとめたもの。
  • アクション:ルールに合致した場合の行動を指定。Allow、Block、Countがある。

WebACLを割り当てることができるリソース

  • CloudFront
  • ALB
  • APIGateway

アクションの動作

  • Allow:AWSリソースへの転送が許可される
  • Block:リクエストをブロックする。
  • Count:リクエストをカウントするが許可するかブロックするかは決定しない。

docs.aws.amazon.com

AWS WAF料金(jp)

  • Web ACL :5.00USD/月
  • ルール  :1.00USD/月
  • リクエスト:0.60USD/100万リクエス

WAFv1とWAFv2とは

2019年末頃にバージョンが上がった模様。変更点としては、ルールの設定上限算出方法の変更(数から重みに変更)、マネージドルールの提供、記述方法の変更がある。旧バージョンは下記から設定可能。

terraformでWebACLだけ作ってみる

provider "aws" {
  region  = "ap-northeast-1"
}

resource "aws_wafv2_web_acl" "example" {
  name        = "example-waf"
  description = "Example WAF for web application"
  scope       = "REGIONAL"

  default_action {
    allow {}
  }

  visibility_config {
    cloudwatch_metrics_enabled = false
    metric_name                = "exampleACLDefaultMetric"
    sampled_requests_enabled   = false
  }
  tags = {
    test = "test"
  }
}
# terraform plan
# terraform apply

※作れた



感想

どうでもいいが最近やる気がでない。これを楽しんでやっている人は頭がイカ〇ている気がする。あー、仕事変えたい( ̄д ̄)