WAFの分類に関する基礎的なメモ

今月半ばくらいにWAF(Web Application Firewall)について色々と調べていたのでその分類に関してメモ。
WAFの仕組みは意外に単純なものであると分かった。

検出方法によるWAFの分類

ブラックリスト型、ホワイトリスト型

  • 初期の頃のWAFで用いられていた検出方法
  • 検出パターンに一致したリクエストを拒否or許可。検出パターンにない攻撃には対応できない
  • 検出パターンを手動で記述して管理。管理がすごく大変

シグネチャ型

  • 現在主流の検出方法
  • 検出パターンをシグネチャと呼び、WAFのプロダクト側で管理。利用者は定期的にポチっとアップデートを押すだけでOK
  • 動作原理はブラックリスト型、ホワイトリスト型と同じなのでそれらと区別されないこともある
備考

httpdのレイヤーで動作するシグネチャ型のイメージは「6G Firewall 2020 | Perishable Press」を読むとなんとなく分かる。.htaccessに書くだけで動作させることも可能。

WordPressならAll In One WP Security & Firewallを使えば導入できる。

ロジック型

  • プログラムでリクエスト内容を精査して怪しいものがあれば弾く。
  • シグネチャ型に比べて未知の攻撃パターンに強い。
  • PHPなどで実装
  • 実際にプロダクトがあるか分からないけどApacheのモジュールとして実装することもできるはず
備考

WordPressではWordFenceShieldNinjaFirewallといったプラグインで導入できる。
どういう動作をしているのかはAn introduction to NinjaFirewall filtering engine.でイメージがつかめる。

ちなみにルールベース型と呼んでいるところもあるようだが、シグネチャ型のシグネチャをルールと呼ぶケースもあり初学者としては混乱してしまった。今のところ個人的にはロジック型で一貫したい。

設置方法によるWAFの分類

ホスト型

  • 各ホストで個別に動作するタイプのWAF
  • 導入が比較的簡単。管理もそれほど難しくはない
  • ただし大量のサーバーがあると管理が大変かも
  • サーバーのパフォーマンスに多少のオーバーヘッドがかかる

ネットワーク型(ゲートウェイ型)

  • リバースプロキシやロードバランサーのように複数のサーバーをぶらさげて動作するタイプのWAF
  • 導入および運用の難度は高め。自前でサーバーにWAFのソフトウェアを入れて構築するか、アプライアンス製品を導入するか
  • 大量のサーバーがあってもWAFの機能を集約できるので管理が楽
  • コストは初期費用がかなりかかるのと、ランニングコストとしてサーバー代と運用を行うインフラ技術者の人件費がかかる
  • 単一障害点にならないように注意

SaaS型(クラウド型)

  • 色んなベンダーが提供しているマネージドなWAF
  • 導入はサービスに申し込んでDNSの設定をすればOKみたいなかんじ。マネージドなので運用は何もしなくていい
  • サーバーの数に関わらず管理は楽(なはず)
  • 月額費用は自前でネットワーク型を入れるより高いが人件費を合わせて考えると安いかもしれない

ほか覚書

  • WAFはあくまで保険なので、WAFがあるからウェブアプリケーションに脆弱性があってもOKという判断はNG
  • 誤検知でサイトの正常な動作に支障を与える場合があるので注意。導入時には必ず動作検証を

参考

5分で絶対に分かるWAF:5分で絶対に分かる – @IT
WAFの機能と種類 | 技術情報 | ソフトウェアWAFのJP-Secure
Signature とWAFㅣすぐ分かるセキュリティ用語ㅣEnterprise WAFはCloudbric