ファイアーウォールの神話
■ファイアーウォールは万能か?
もともとインターネットは、研究者など一部関係者だけが利用することから、性善説に基づいて設計され、利用されてきました。しかしその後、世界中の一般の人々に開放されたネットワークになっていきました。
このようになってから、インターネットからLAN内に対して不必要な通信を防御する必要性に迫られてくるようになり、セキュリティ対策としてファイアーウォールが設置されるようになってきました。
では、ファイアーウォールさえ設置すれば、セキュリティ対策として万全なのでしょうか?
ファイアーウォール(=防火壁)という名前だけを聞くと、全ての攻撃=火を防御してくれそうに思えます。
しかし、近年の攻撃パターンでは、それは単なる神話となっています。
なぜ神話となっているのでしょうか?
ここでは、ファイアーウォールによる防御を神話とさせている攻撃について明らかにしていきます。
■ファイアーウォールが守るもの
ファイアーウォールは、LANとインターネットの境界に設置され、LAN上のコンピュータの保護を目的として、事前に決められたルールに沿ってパケットの内容等をチェックし、通信の許可/不許可の判定を行い、不許可の場合はその通信をブロックします。
例えば、ユーザ発の通信は許可するが、インターネット発の通信は不許可とするといった設定が可能です。
これによって、ユーザ端末に対する外部からの直接攻撃は防御できます。
しかし、インターネットにサービスを公開する場合、80番ポート(HTTP)、443番ポート(HTTPS)といったポート番号に対して通信許可の設定をする必要があります。
したがって、これらのポート番号の通信を使った攻撃では、ファイアーウォールによる防御は無効です。
このような攻撃としては、例えばHTTP GET Flood、HTTP POST Flood、SQLインジェクション、メールにマルウェア添付して開かせる、といった攻撃があります。
次に、これらの攻撃について説明していきます。
HTTP/HTTPSを使ったDoS攻撃では、HTTP GET Flood、HTTP POST Floodと呼ばれる攻撃があります。
HTTP GET Flood攻撃とは、事前に多数の端末やサーバに不正にインストールしたBotを使ってターゲットのWebサーバに大量のHTTP GETリクエストを実行する攻撃です。この結果Webサーバは大量のHTTP GETコマンドを処理しきれず、遅延が発生してダウンします。
HTTP GETリクエストには、ランダムなパス等を入れることによって、リクエストが正常なものかHTTP GET Flood攻撃なのかの判断を困難にすることが多いです。
同様に、大量のHTTP POSTコマンドを実行する攻撃をHTTP POST Flood攻撃といいます。
しかし、このような攻撃を手動で実施しようとしても、現在のサーバスペックでは過負荷を実現することは困難です。したがって、攻撃者は事前に多くの端末にDDoS攻撃ツールを仕込んで構成されたボット(bot)ネットワークを使って、そこから一斉に攻撃をしかけます。
■Webアプリケーションの脆弱性攻撃は防御できない
Webアプリケーションの脆弱性を狙った攻撃はHTTP/HTTPSで通信するので、ファイアーウォールを通過します。
その一つに、SQLインジェクションという攻撃があります。
Webアプリケーションはユーザからの各種情報入力を受けてサーバ側で処理し、結果をユーザに返すという処理があります。サーバの処理には、サーバやデータベースにアクセスし、情報参照・更新するという処理があります。
このような処理の過程では、Webアプリケーションは、ユーザから想定外の情報が入力されてもそのまま処理せず、正しくエラー処理を実施する必要があります。
しかし、こうした処理に不備があると、攻撃者から、SQLと呼ばれるデータベース処理をするためのコマンドを含む情報が入力された後、その内容でサーバが処理することで、サーバ上で攻撃者の思いのままにSQLが実行されてしまいます。
これにより、攻撃者は、不正なSQL実行によりデータベース内の重要情報漏えい、コンテンツの改ざんといった攻撃を行うことができます。
コンテンツの改ざんでは、多くの場合、Web 閲覧者にマルウェアの侵入を試みるプログラム (スクリプト) が書き込まれます。
攻撃者はWebサーバを介してデータベースを攻撃します。攻撃の内容としては、Webサーバ上のアプリケーションにユーザが入力できる項目があるとします。さらに、その入力値をチェックに不備がある場合、攻撃者は入力値にデータベースを改ざんするSQL文を含む文字列を入力します。このSQL文はユーザが閲覧した際に不正なスクリプトが実行されるような内容となっています。
なお、入力値は不正ですが、アプリケーションは正常に処理するので、Webサーバのログでは正常終了というステータスになるため、Webサーバのログを詳細に見ない限り不正な動作かは判明しません。
したがって、Webサーバのログ監視だけでは不正な動作を検知することは困難です。(①→②)
この段階で閲覧するとユーザ上で不正なスクリプトが実行されるコンテンツがWebサーバで公開された状態となっています。(③)
そして、この状態でユーザが標的Webサーバのコンテンツを閲覧すると、ユーザ端末上で不正なスクリプトが実行されます。(④)
ユーザは、いつも訪れ、かつ出処の知れたWebサイトなので、特に閲覧で気をつけるということは無いことが多いです。
ただ、ユーザ端末上でウイルス対策ソフトが実行されている場合は、ウイルス対策ソフトによる検知で攻撃があることが発覚するケースもあります。
しかし、ウイルス対策ソフトのパターンにマッチしないケースでは、知らないうちにユーザ端末にマルウェアがインストールされてしまいます。
このようなことから、ウイルス対策ソフトをユーザ端末にインストールすることは、このようなケースもあることから必要ですが、万全ではないともいえます。
したがって、対策はサーバ側で実施されなければなりません。
■電子メールを利用した攻撃は防御できない
電子メールにおける攻撃は、上で説明したようなシステム上の脆弱性を狙った攻撃ではなく、ある意味、利用する人間の脆弱性を狙った、つまりソーシャルエンジニアリングの手口による攻撃です。
特に、標的型メール攻撃が知られています。手法としては、標的の関係者を装い不正プログラムを組み込んだファイル/URLを送り付け、マルウェアをユーザ端末にインストールするよう仕向けます。エンドユーザのセキュリティ意識を高めることで防ぐことができる場合もありますが、年々巧妙化しているので、完全に防ぐことは難しいです。
■セキュリティ対策は複合的に
ファイアーウォールの設置だけではセキュリティ対策として不十分であることを説明しました。しかし、ファイアーウォールが不要というわけではありません。
ファイアーウォール以外にも、ネットワークレベルでの攻撃にはIDSによる検知やIPSによる防御、Webアプリケーションの脆弱性に対する攻撃の防御にはWAF(Web Application Firewall)があります。
必要なのは、他のセキュリティ対策製品と組み合わせることによって、さまざまな攻撃に対する防御を強固にすることです。
一方、セキュリティ対策製品をそろえるだけではセキュリティ対策として万全ではありません。ユーザ一人ひとりのセキュリティ意識向上も欠かせません。情報セキュリティ教育は全メンバー漏れなく定期的に実施して、習熟度を維持・向上していく必要があります。