ネットワークやサーバを外部攻撃から防御する手段としてまず頭に思い浮かぶのがファイアウォールです。ファイアウォールとは、攻撃者と内部ネットワークやサーバとの間にファイア(火)のウォール(壁)を立てて、火災を防御するという直感的にも分かりやすい言葉ですので、ファイアウォールを導入してしまえば外部からの攻撃は万全だと錯覚してしまう担当者の方も多いのが実情です。
しかし、代表的な防衛手段に限っても通常のファイアウォールの他にIPS/IDS、Webアプリケーションファイアウォール(WAF)があります。
この記事ではまずこの3種類の防御手段を整理し、特に最近注目が高まっている「WAF」の必要性について確認します。
WAFは、IPS/IDS、通常のファイアウォールとどう違うのか
それでは、通常のファイアウォール、IPS/IDS、Webアプリケーションファイアウォール(WAF)の違いはどこにあるのでしょうか。順番に見ていきます。
通常のファイアウォール
通常のファイアウォールは、外部ネットワークからイントラネットなどの内部ネットワークへのアクセスに制限をかけるものです。ルータの内部にこうした仕組みを実現している製品もありますし、ファイアウォール専用のハードウェア機器での対応、さらにオペレーティングシステム上で実行するタイプの方法もあります。
基本的には、外部から発生するトラフィックを拒否し、内部から外部へ発生したトラフィックの戻りのみを許可することで内部ネットワークは安全に保たれます。
しかしWebサーバなどの外部向けサービスや、ファイルサーバに社外から接続したいケースなど、完全に外部からの通信を遮断することは現実的ではありません。あえて外部からの通信を許可することが必要になりますので、そこにセキュリティ的な課題が生じるわけです。
IPS/IDS
IDS(Intrusion Detection System)とは日本語に訳すと「侵入検知システム」です。通常のファイアウォールの手前に設置しておくことで内部に入ってくるトラフィックを監視して、不正ではないかと疑われたパケットを管理者に通知します。あくまで、検知と通知までなので実際に対応するわけではありません。
IPS(Intrusion Prevention System)とは日本語に訳すと「侵入防止システム」です。IPSは、悪意あるトラフィックを検出して通知するだけでなく、パケットの破棄やセッションの切断などを実行してネットワークを自動的に防御します。
IPS/IDSが有効な場面として、例えばDoS攻撃があります。DoS攻撃とは、Webサーバに過度なアクセスを集中させて通常サービスが継続できない状態を作り出す攻撃です。Webサーバは外部に対してはオープンにしておくことが必要なサービスなので、通常のファイアウォールでポートを閉じてしまうことはできません。こうした攻撃には壁を立てて防ぐのではなく、IPS/IDSで悪意あるトラフィックのみ対応することが必要となってきます。
Webアプリケーションファイアウォール(WAF)
WAFで対応できる不正攻撃として「SQLインジェクション」「クロスサイトスクリプティング」「パラメータ改ざん」をあげることができます。以下、詳しく見てみましょう。
WAFはこんな攻撃に対して威力を発揮します
WAFが対処できる「SQLインジェクション」「クロスサイトスクリプティング」「パラメータ改ざん」とは以下のような特徴を持ちます。
SQLインジェクション
SQLインジェクションとは、データベースへのデータ保存や問い合わせを行うときに悪意のあるSQL文を紛れ込ませ、データベースを改ざんしたり、情報を不正に入手したりする攻撃です。データベースというと「内部でだけ使うのであまり関係無いかな・・・」と思われるかもしれませんが、WordPressなどの一般的なCMSもデータベースが使用されており、SQLインジェクションの対象となりえます。
クロスサイトスクリプティング
クロスサイトスクリプティングとは、本来正しいスクリプトを実行させるサイトではなく、攻撃者のサイトから悪意のあるスクリプトを実行させるので「クロスサイト(サイトを横断した)スクリプティング」と言われます。具体的にはJavaScriptなどをブラウザのフォーム上に打ち込むなどして、不正な操作を実行します。
パラメータ改ざん
パラメータ改ざんは、URLパラメータやhidden、Cookieなどの値を書き換えてからサーバにデータ通信を行います。通信自体は正常に行われてしまいますので、すぐに発見できませんが、自分の個人情報を書き換えられたり、他人になりすましたりするなどの攻撃が可能になってしまいます。
一般的なファイアウォールでは「SQLインジェクション」「クロスサイトスクリプティング」「パラメータ改ざん」などは防御できません。また、IPS/IDSでは「難読化されている攻撃」つまり、SQLやJavaScriptの文法が意味する内容や、パラメータの内容が悪意を持って変化させられたのかどうか、などの攻撃には対処しにくいとされています。
WAFの基本的な動作はこうなっています
WAFでは、アクセス元とWebサーバとの間のHTTP/HTTPSのトラフィックを精査して、データベース入出力や、掲示板、フォーム送信などのWebアプリケーションへの不正攻撃を検出します。
検出の仕組みには、あらかじめ用意された不正な通信、不正な攻撃パターンをまとめた定義ファイル(シグネチャ)とのマッチングが基本になります。
これは、ウイルス対策ソフトが常に最新のウイルス定義を更新して、あらゆるウイルス感染に対処しようとしているのと同じです。したがって、WAFの性能を見るときには、最新のシグネチャを保持していることと、常に最新のシグネチャに迅速に更新できる仕組みがあるかどうかがポイントとなります。
WAFを動かす仕組みとしては、下記の3種類があります。
ホスト型WAF
ホスト型WAFはすでに各種サービスを提供しているWebサーバにWAFソフトウェアをインストールします。WAF対応ネットワーク機器などを追加しないため安価に導入できますが、インストールする台数が多いとコストがかかってきます。
ゲートウェイ型WAF
ゲートウェイ型WAFは、WAF対応のネットワーク機器を設置するタイプです。複数のWebサーバを防御できるので、Webサーバが稼働しているサーバの数が多い場合にはコストパフォーマンスが良くなります。
クラウド型WAF
クラウド型WAFは、SaaS/クラウドなどの形態で利用するタイプです。初期費用が低くメンテなどの手間もいりませんが、ランニングコストがかかります。
なお、アクセス元とWebサーバとの間のHTTP/HTTPSのトラフィックを精査するときに、もしその間の通信がSSLで保護されている場合はどうなるか、といった問題があります。これはWAF製品/サービスによって異なっており、WAFにSSL機能があればWAFで処理するのが基本です。もしWAFにSSL機能がついていない場合には、他のSSL機器と連携しつつ、復号された後のトラフィックをWAFで検査するという手順を踏みます。
まとめ
いかがでしたか?不正攻撃から自社のサービスを守るには通常のファイアウォールだけでは対応できないタイプの攻撃がたくさんあることをご理解いただけたと思います。また、外部に開放することが基本であるWebサービスでは不正の手口も次々と巧妙化しています。
こうした状況に、現時点で何も対策を立てていないということであれば、ぜひWAFの導入をご検討されることをおすすめします。