WAFとは(概要) | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

今日はWAF(Web Application Firewall/わふ)の概要を学びます。

 

目次

1.WAFとは

2.WAFで対策できる主な攻撃

3.WAFの種類

4.WAFのフィルタリング手法

 

1.WAFとは

WAF(Web Application Firewall)は、Webアプリケーションへの攻撃に対するセキュリティ手段の1つ。

Firewallという名の通り、ネットワークの境界で外部からの不正な通信を遮断する役割を持つ。

Webアプリケーションの脆弱性をついた攻撃に対する防御策の常套である。

 

通常のファイアウォールがパケットのヘッダ部分(ポート番号)を見て判断するのに対し、

WAFはペイロード(データの中身)まで確認して判断してくれる。

 

2.WAFで対策できる主な攻撃

繰り返しになるが、通常のファイアウォールでは、ヘッダ部分でパケットの不正有無を判断する。

言い換えると、通常のファイアウォールはデータの中身(ペイロード)には注意を払わないので、

正規ルートで送信されてきたデータは、たとえ中身に悪意あるものを含んでいても、侵入を許すことになる。

 

一方でWAFは、ペイロードまで確認し、不正有無を判定できる。

ファイアウォールの目をかいくぐってきた不正な内容のパケットに、目を光らせられるのが、WAFの最大の利点である。

具体的には、例えば以下のような各種セキュリティ攻撃に対する防御策となる。

 

攻撃 攻撃の説明 補足
SQLインジェクション Webフォーム等で不正なSQLを送り込み、DBの情報窃盗・データ改ざんや消去、ストアドプロシージャの不正実行などを行う攻撃。SQLの組み立ての脆弱性をつかれる。 SQLの組み立てを工夫することで、防げる攻撃ではある。が、思わぬ隙からの攻撃にも対処できるよう、SQLの組み立て工夫+WAFでガードするとより安心。
パスワードリスト攻撃 何らかの方法(別のサイト等)で入手した他人のIDとパスワードの組合せリストを用いて、攻撃対象のサイトで不正ログインを試みる攻撃。 サイト利用者がIDとパスワードの組合せを使いまわしていると被害にあう可能性が高い。そのため前提として、利用者自身が気を付けてパスワード設定すべきである。WAFでは、同じIPアドレス(端末)から、異なるアカウントで連続して大量ログインしているケースを検知できる。
OSコマンドインジェクション Webフォーム等での不正入力により、Webサーバに不正なOSコマンドを実行・動作させる攻撃。ウイルス感染により他のサーバへの攻撃の踏み台にされたり、ファイル書き換えやシステムの不正操作などといった被害に遭う。 シェルを起動できる言語機能を使っていると、特に脆弱性をつかれやすい。変数に入る値をチェックし、不正なものは実行できないようにするプログラムを作れば、脆弱性は弱まる。
クロスサイトスクリプティング 正規のWebページやメールなどに不正なスクリプトを埋め込み、偽ページの表示やCookie情報の不正取得、悪意あるスクリプトの実行等を行う攻撃。 Webページに出力する全ての要素に対してエスケープ処理をしておく等、徹底したコーディングの工夫も対策となる。
ディレクトリトラバーサル 通常はアクセスできないファイルやディレクトリに不正アクセスする攻撃。ファイル名を扱うようなプログラムで、当該ファイルからディレクトリを不正にたどり、ディレクトリ構造やシステム機密内容を不正に取得される。 ディレクトリはパラメータではなくプログラム上で指定し、ファイル名だけをパラメータから受け取るようにシステム設計するといった工夫も必要である。
Dos攻撃・DDos攻撃 サーバに大量のアクセスを行い、処理能力を超過させることで、サービスの停止やその他想定しない動きを誘発する攻撃。
Dos攻撃は1台のデバイスからの攻撃だが、DDos攻撃は(ウイルス感染させた他人のPC等を含む)複数台から妨害するため、犯人を特定しにくく、より大規模で悪質な攻撃となる。
システム設計の工夫だけでは、特にDDos攻撃の防衛には限界がある。そのため、今回のテーマであるWAFや、IDS(不正侵入検知システム)・IPS(不正侵入防御システム)等のツールで対策するのが主流となっている。
ブルートフォースアタック(総当たり攻撃) パスワード等を不正入手するため、考えられる文字列の組合せパターンを片っ端から試していく攻撃。時間や試行回数に制限が無いと不正に解読されてしまう。 特定のIDでログイン時、一定回数パスワード入力を誤ったらアカウントをブロックする等の手段でも回避できる。ただし逆ブルートフォースアタック(パスワードを固定し、IDの組合せを変えて試す)ではアカウントブロックによる対策はしにくいので、WAFが有用。同じIPアドレス(端末)からの、一定数以上連続したログイン試行を検出する等の対策ができる。
バッファオーバーフロー サーバの処理能力を超える大量のデータや悪意のあるコードを送り、メモリのバッファ許容量を超過、不具合を発生させる攻撃。 メモリの領域あふれを未然防止するようなプログラムを記述するといった対策も必要。加えてWAFでも防御しておくことで、脆弱性を弱める。

 

 

3.WAFの種類

WAFの種類は、ハードウェア、ソフトウェア、クラウドの3つである。

それぞれの特徴は以下の通り。

 

種類 説明 メリット デメリット
アプライアンス型(ハードウェア) WAF専用機器を設置する。 自社占有なので柔軟にカスタマイズでき、処理も高速で安定している。
複数のWebサーバがあっても1台でカバーできる。
専用機器の導入や保守・運用コストが高い。
ホスト型(ソフトウェア) WebサーバにWAFのソフトウェアをインストールする。 アプライアンス型よりもコストを低く抑えられる。 複数のWebサーバがある場合、各サーバにインストールが必要(台数が増えるとかえって費用・管理コストが上がる)。
クラウド型 インターネット上のサービスとしてWAFを利用する。 手軽にWAF機能を導入できる。近年主流となっている。 WAFサービス提供元やネットワーク状態の影響を受ける。
自社でカスタマイズしにくい。

 

4.WAFのフィルタリング手法

WAFでペイロードを確認し、フィルタリングする手法は、通常のファイアウォールと同様、大きく分けて以下の2種類ある。

 

フィルタリング方法 説明
ホワイトリスト あらかじめ定義した正当なパターンの通信のみを許可する。
(正当パターン以外のパターンが来たら遮断する)
ブラックリスト あらかじめ定義した不正なパターンの通信を遮断する。
(不正なパターン以外はすべて通信を許可する)

 

 

 

今回は以上!

WAFというよりもセキュリティ攻撃の解説記事のようになった感が否めない…(;^ω^)ゴメンナサイ