【図解】ICAPとは?プロキシとウイルス検査・DLPをつなぐ仕組みを初心者向けに解説

プロキシやファイアウォールの設定画面を見ていると、「ICAP」という項目が出てくることがあります。ウイルス検査や情報漏えい対策(DLP)の製品の資料でも、「ICAPでプロキシと連携」とよく書かれています。名前は見かけるものの、何をしている仕組みなのかは意外と知られていません。

この記事では、ICAP(アイキャップ、Internet Content Adaptation Protocol)を、企業でよくある6つの使い方から説明します。そのうえで、ICAPがどんなやり取りで検査を頼んでいるのか、導入するときに何に気を付けるのかを、図とシーケンスで見ていきます。

この記事でわかること
  1. ICAPとは何か、なぜ必要なのか
  2. 2つの検査ポイント(REQMODとRESPMOD)
  3. 企業でよくある6つの使い方
  4. ICAPのやり取りの流れ(OPTIONS、プレビュー、204)
  5. 導入で気を付けること(HTTPS、障害時の動き、性能、暗号化)
この記事について

この記事は、ICAPの仕様(RFC 3507)と、Squid、Broadcom、Cisco、Fortinet、F5、Dell、Hitachi Vantara、OPSWAT などが公開しているドキュメントを参考に、ICAPに共通する考え方を一般化してまとめたものです。特定の製品の機能や動作を説明・保証するものではありません。製品ごとの対応状況や設定は、各メーカーや販売代理店に確認してください。

ICAPを一言でいうと

ICAPは、プロキシなどの「通り道の機器」が、通信の中身を専門の検査サーバに渡して「調べてもらう・直してもらう」ための共通の手順です。2003年に RFC 3507 として公開され、TCPの1344番ポートを使うのが標準です。やり取りの形はHTTPによく似ていますが、HTTPとは別のプロトコルです。

空港の手荷物検査にたとえると分かりやすくなります。搭乗口の係員(プロキシ)は、気になる荷物を専門の検査室(ICAPサーバ)に回して調べてもらい、その結果に従って荷物を通すか止めるかを決めます。係員が検査機器を全部持つ必要はありません。

通り道の機器(ICAPクライアント) 社員 プロキシICAPクライアント インターネット 通信 通信 ICAP(TCP 1344番) 「これを調べて」→「結果」 検査の専門家(ICAPサーバ) ウイルス検査 アンチウイルス 情報漏えい検査 DLP ファイル無害化 CDR 検査は専門の製品に任せ、 プロキシは結果に従う
図1 ICAPは、通り道の機器と検査の専門家をつなぐ

なぜICAPが必要なのか

プロキシがウイルス検査も情報漏えい検査も自分でこなそうとすると、処理が重くなり、検査の質もプロキシの製品に縛られます。ICAPを使えば、プロキシは通信を中継することに専念し、検査はアンチウイルスやDLPの専門製品に任せられます。

もう1つの利点は、共通の手順であることです。ICAPに対応したプロキシと、ICAPに対応した検査製品であれば、メーカーが違っても組み合わせられます。すでに使っているDLP製品を、新しく入れたプロキシにつなぐ、といったことができます。

登場人物

役割何をするかよくある製品の種類
ICAPクライアント通信やファイルを受け取り、ICAPサーバに検査を頼む。結果に従って通す・止めるWebプロキシ・SWG、一部のファイアウォール・UTM、ロードバランサ(ADC)、ファイルサーバ(NAS)、ファイル転送製品
ICAPサーバ渡された中身を検査し、「そのままでよい」「書き換えた」「止める」を返すアンチウイルス、複数エンジンでの検査、ファイル無害化(CDR)、DLP、サンドボックス

すべての機器がICAPに対応しているわけではありません。ファイアウォールやNASの中には、ICAPではなく独自の仕組みで検査製品とつなぐものもあります。

2つの検査ポイント:REQMODとRESPMOD

ICAPで検査を頼むタイミングは2つです。社員から外へ出ていくリクエストを調べるのが REQMOD(リクエストの修正)、外から返ってきたレスポンスを社員に渡す前に調べるのが RESPMOD(レスポンスの修正)です。アップロードを見たいならREQMOD、ダウンロードを見たいならRESPMODと覚えると分かりやすくなります。

社員 プロキシ Webサーバ リクエスト(アップロード) レスポンス(ダウンロード) 外へ出す前に 社員に渡す前に REQMOD RESPMOD ICAPサーバ ICAPサーバの返事は、この3通り そのまま通してよい (204 No Content) 中身を書き換えた (修正した内容を返す) 止める (ブロック画面を返す)
図2 REQMODとRESPMOD、ICAPサーバの3通りの返事
メソッド意味主な使い道
REQMODHTTPのリクエストをICAPサーバに渡して調べるアップロードやWebメールの送信を調べる(DLP)。アクセス先によってブロック画面を返す
RESPMODHTTPのレスポンスをICAPサーバに渡して調べるダウンロードするファイルのウイルス検査、ファイルの無害化
OPTIONSICAPサーバに、対応する機能や設定を問い合わせるどちらのメソッドに対応しているか、プレビューの大きさなどを事前に確認する

ICAPサーバの返事は3通りです。「そのまま通してよい」(204 No Content)、「中身を書き換えた」(修正した内容を返す)、「止める」(ブロック画面などのHTTPレスポンスを返す)です。プロキシはこの返事に従って、元の通信を通すか、書き換えた内容を渡すか、ブロック画面を見せるかを決めます。

企業でよくある6つの使い方

ここからは、企業で実際によく見るICAPの使い方を6つ紹介します。ICAPクライアントはプロキシだけでなく、ロードバランサやNASのこともあります。

Webからのダウンロードをウイルス検査する

いちばん基本的な使い方です。社員がWebサイトからファイルをダウンロードすると、プロキシはファイルをすぐには渡さず、RESPMODでウイルス検査のICAPサーバに送ります。問題がなければ元のファイルを渡し、ウイルスが見つかればブロック画面を表示します。

社員 プロキシ Webサイト ダウンロード ! RESPMOD ウイルス検査 ウイルスあり 渡さない 「ウイルスが見つかったため ダウンロードを止めました」 問題がなければ 204 が返り、 プロキシは元のファイルを渡す
図3 CASE 1:ダウンロードしたファイルのウイルス検査(RESPMOD)

アップロードを情報漏えい検査する

社員がWebメールや外部のストレージに、顧客リストなどの機密情報を送ろうとする場面です。プロキシは送信の中身をREQMODでDLPのICAPサーバに渡します。DLPがクレジットカード番号や個人情報を見つけると、ブロック画面を返して送信を止めます。何を止めて何を記録だけにするかのルールは、DLPの側で決めます。

社員 顧客リスト アップロード プロキシ Webメール・外部ストレージ REQMOD DLP(情報漏えい検査) 個人情報を検出 → ブロック画面を返す 送信を止める・記録する など、ルールはDLP側で 決める
図4 CASE 2:アップロードの情報漏えい検査(REQMOD)

ダウンロードしたファイルを無害化する

ウイルス検査は、すでに知られている危ないファイルを見つけるのが得意です。まだ知られていない攻撃に備えて、ファイルからマクロなどの危ない部分を取り除き、作り直してから渡すのがCDR(Content Disarm and Reconstruction、ファイル無害化)です。ICAPの「中身を書き換えた」という返事を使う、分かりやすい例です。

社員 プロキシ Webサイト !マクロ付き文書 ファイル無害化(CDR) 無害化した文書 マクロなど危ない部分を取り除き、 作り直したファイルを返す (ICAPの「書き換え」の返事)
図5 CASE 3:ファイルを無害化してから渡す(CDR)

公開Webアプリへのアップロードを検査する

ICAPは、社員を守るフォワードプロキシだけでなく、公開サービスを守るリバースプロキシでも使われます。問い合わせフォームや申請ポータルのように、社外の利用者がファイルをアップロードするWebアプリの手前で、ロードバランサがREQMODでファイルを検査に回します。検査を通ったファイルだけがWebアプリに届くので、アプリ側でウイルス対策を作り込まずに済みます。

社外の利用者 添付ファイル インターネット 公開サービス(DMZ・内部) リバースプロキシ (ロードバランサ) Webアプリ 検査済みだけ渡す REQMOD ウイルス検査・CDR 問い合わせフォームや 申請ポータルの アップロードを守る
図6 CASE 4:公開Webアプリへのアップロードを検査する(REQMOD)

ファイルサーバ(NAS)のウイルス検査

ICAPはWebの通信だけのものではありません。NASがICAPクライアントになり、社員がファイルを開くときや保存して閉じたときに、ファイルをウイルス検査のICAPサーバへ送る使い方もあります。ウイルスが見つかったファイルは、NASが隔離したり、開けなくしたりします。

社員のPC ファイルを開く・保存 ファイルサーバ(NAS) ICAPクライアント ICAP 開く前・閉じた後に ウイルス検査 #1 ウイルス検査 #2 ウイルスが見つかったファイルは、 NASが隔離したり、開けなくしたりする 開閉のたびに検査するので、 検査サーバは複数台で分担する
図7 CASE 5:NASのファイルを開閉のたびに検査する

ファイルを開くたびに検査が走るので、検査サーバの負荷が高くなりがちです。検査サーバは複数台用意して、NASから分担して使うのが一般的です。社外とファイルをやり取りするファイル転送製品でも、受け取ったファイルを同じようにICAPで検査に回すことがあります。

クラウドのプロキシから社内のDLPへ

プロキシをクラウドのサービス(SWG)に移したあとも、社内で使ってきたDLPの仕組みを続けたい場面です。クラウドのプロキシが見つけた違反の中身を、ICAPで社内のDLPサーバへ送り、インシデントの記録や対応はこれまでの仕組みで行います。インターネットを経由するので、TLSで暗号化したICAPを使います。

社員(社外) クラウドのプロキシ DLPで違反を検出 SaaS・Web 社内 社内のDLPサーバ インシデントの記録 ・対応はこれまでどおり 違反した中身をICAPで送る TLSで暗号化した ICAPを使う
図8 CASE 6:クラウドのプロキシから社内のDLPへ送る

ICAPのやり取りの流れ

CASE 1のダウンロード検査を例に、プロキシとICAPサーバのやり取りを追いかけます。ポイントは「事前の確認(OPTIONS)」「先頭だけ見せるプレビュー」「問題なしなら204」の3つです。

社員のPC ブラウザ プロキシ ICAPクライアント Webサーバ インターネット ICAPサーバ ウイルス検査 OPTIONS(事前に機能を確認) 1 RESPMOD対応・プレビューは1024バイト など 2 ファイルをダウンロード 3 リクエストを中継 4 ファイル(レスポンス) 5 まだ社員には渡さない RESPMOD(先頭の一部だけ) 6 100 Continue(続きも見たい) 7 残りのデータ 8 ウイルス検査 204(問題なし)か、ブロック画面 9 元のファイル か ブロック画面 10
図9 RESPMODでダウンロードを検査する流れ

事前にOPTIONSで確認する

プロキシは、ICAPサーバに OPTIONS を送って、どのメソッドに対応しているか、プレビューに何バイト送ればよいかなどを確認しておきます。主な項目は次のとおりです。

項目意味
Methodsこのサービスが受け付けるメソッド(REQMOD か RESPMOD)
Previewプレビューとして最初に送ってほしいバイト数
Allow: 204問題がなければ「204」で短く返せることを示す
Transfer-Ignore など検査に送らなくてよいファイルの拡張子、全部送ってほしい拡張子など
ISTagサービスの状態を表す目印。検査の内容が変わると値が変わる
Options-TTLこの確認結果を使い回してよい秒数
Max-ConnectionsICAPサーバが受けられる接続数の上限

先頭だけ見せる(プレビュー)

大きなファイルを毎回まるごと送ると、時間も通信量もかかります。そこでプロキシは、まずファイルの先頭の一部だけを送ります。ICAPサーバは先頭を見て、検査が要らないと判断すれば204を返し、続きも見たいときは 100 Continue を返します。プロキシは100 Continueを受けてから残りを送ります。

RESPMODのリクエストの中には、元のHTTPのリクエストと、Webサーバからの応答がそのまま入っています。ICAPサーバは、どのサイトから何をダウンロードしたのかまで分かったうえで検査できます。

RESPMODのリクエストのイメージ(数値は例)

RESPMOD icap://icap.example.local:1344/avscan ICAP/1.0
Host: icap.example.local
Allow: 204                         <- 問題なしなら204で返してよい
Preview: 1024                      <- まず先頭の1024バイトだけ送る
Encapsulated: req-hdr=0, res-hdr=137, res-body=296

GET /files/report.zip HTTP/1.1      <- 社員が送った元のリクエスト
Host: www.example.com

HTTP/1.1 200 OK                     <- Webサーバからの応答
Content-Type: application/zip

400                                 <- ファイルの先頭(16進数で1024バイト分)
(ファイルのデータ)
0

結果を返す

ICAPサーバは検査を終えると、問題がなければ 204 を返します。プロキシは手元に持っていた元のファイルをそのまま社員に渡すので、同じファイルを送り返してもらう必要がありません。ウイルスが見つかった場合は、ブロック画面にあたるHTTPのレスポンスを返し、プロキシはそれを社員に見せます。

導入で気を付けること

ICAPサーバが止まったときの動き

ICAPサーバが落ちたり応答しなくなったりしたとき、プロキシがどう振る舞うかは設定で決めます。検査をせずに通す「フェイルオープン」と、エラーにして止める「フェイルクローズ」のどちらかです。製品によって、バイパス、無視、許可、エラー、ブロックなど呼び方は違いますが、考え方は同じです。

止めずに通す(フェイルオープン) プロキシ ICAPサーバ 応答なし 検査しないまま通す 業務は止まらないが、すり抜ける エラーにする(フェイルクローズ) プロキシ ICAPサーバ 応答なし エラー画面を返して止める 安全だが、Webが使えなくなる
図10 ICAPサーバが止まったときの2つの動き

どちらが正しいということはなく、守りたいものと業務への影響を比べて決めます。たとえばダウンロードのウイルス検査はフェイルクローズ、アップロードのDLPは業務を止めないようフェイルオープンにする、といった分け方もあります。どちらにする場合も、ICAPサーバを複数台にして止まりにくくしておきます。

注意点のまとめ

ポイント起きること対策の例
HTTPSの通信暗号化されたままでは、中身をICAPサーバに渡せないプロキシでTLSを復号してからICAPに渡す。復号の対象外にした通信は検査されないことを理解しておく
検査する向きREQMODかRESPMODの片方だけ設定すると、もう片方の向きは検査されないアップロードとダウンロードのどちらを守りたいかを決め、必要なら両方を設定する
大きなファイル・動画ファイルを受け取り切るまで渡せないので、利用者には遅く感じるプレビューを使う。サイズの上限を決める。ストリーミングは検査から外す
検査サーバの負荷利用者が多いと検査待ちが発生する。NASでは開閉のたびに検査が走るICAPサーバを複数台にして分担する。同時接続数の上限を確認する
ICAPの通信の暗号化ICAPは標準では暗号化されない。検査に回すファイルの中身がネットワークに流れるプロキシとICAPサーバは信頼できる同じネットワークに置く。離れた場所とつなぐときは、TLSで暗号化したICAP(Secure ICAP。ポート11344がよく使われる)を使う

まとめ

ICAPは、プロキシやロードバランサ、NASなどの「通り道の機器」と、ウイルス検査やDLPなどの「検査の専門家」をつなぐ共通の手順です。外へ出るものはREQMOD、入ってくるものはRESPMODで検査に回し、ICAPサーバの返事(そのまま・書き換え・止める)に従って処理します。

場面ICAPクライアントICAPサーバメソッド
ダウンロードのウイルス検査(CASE 1)WebプロキシアンチウイルスRESPMOD
アップロードの情報漏えい検査(CASE 2)WebプロキシDLPREQMOD
ファイルの無害化(CASE 3)WebプロキシCDRRESPMOD(アップロードを無害化するならREQMOD)
公開Webアプリへのアップロード検査(CASE 4)リバースプロキシ・ロードバランサアンチウイルス・CDRREQMOD
ファイルサーバの検査(CASE 5)NASアンチウイルス製品による
クラウドから社内DLPへ(CASE 6)クラウドのプロキシ社内のDLP製品による(TLSで暗号化)

ICAPを組み込むときは、HTTPSの復号、検査する向き、ICAPサーバが止まったときの動き、検査サーバの台数の4つを最初に決めておくと、設計がまとまりやすくなります。具体的な設定や対応状況は、製品ごとにメーカーや販売代理店に確認してください。

コメント