プロキシやファイアウォールの設定画面を見ていると、「ICAP」という項目が出てくることがあります。ウイルス検査や情報漏えい対策(DLP)の製品の資料でも、「ICAPでプロキシと連携」とよく書かれています。名前は見かけるものの、何をしている仕組みなのかは意外と知られていません。
この記事では、ICAP(アイキャップ、Internet Content Adaptation Protocol)を、企業でよくある6つの使い方から説明します。そのうえで、ICAPがどんなやり取りで検査を頼んでいるのか、導入するときに何に気を付けるのかを、図とシーケンスで見ていきます。
- ICAPとは何か、なぜ必要なのか
- 2つの検査ポイント(REQMODとRESPMOD)
- 企業でよくある6つの使い方
- ICAPのやり取りの流れ(OPTIONS、プレビュー、204)
- 導入で気を付けること(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を使えば、プロキシは通信を中継することに専念し、検査はアンチウイルスや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と覚えると分かりやすくなります。
| メソッド | 意味 | 主な使い道 |
|---|---|---|
| REQMOD | HTTPのリクエストをICAPサーバに渡して調べる | アップロードやWebメールの送信を調べる(DLP)。アクセス先によってブロック画面を返す |
| RESPMOD | HTTPのレスポンスをICAPサーバに渡して調べる | ダウンロードするファイルのウイルス検査、ファイルの無害化 |
| OPTIONS | ICAPサーバに、対応する機能や設定を問い合わせる | どちらのメソッドに対応しているか、プレビューの大きさなどを事前に確認する |
ICAPサーバの返事は3通りです。「そのまま通してよい」(204 No Content)、「中身を書き換えた」(修正した内容を返す)、「止める」(ブロック画面などのHTTPレスポンスを返す)です。プロキシはこの返事に従って、元の通信を通すか、書き換えた内容を渡すか、ブロック画面を見せるかを決めます。
企業でよくある6つの使い方
ここからは、企業で実際によく見るICAPの使い方を6つ紹介します。ICAPクライアントはプロキシだけでなく、ロードバランサやNASのこともあります。
Webからのダウンロードをウイルス検査する
いちばん基本的な使い方です。社員がWebサイトからファイルをダウンロードすると、プロキシはファイルをすぐには渡さず、RESPMODでウイルス検査のICAPサーバに送ります。問題がなければ元のファイルを渡し、ウイルスが見つかればブロック画面を表示します。
アップロードを情報漏えい検査する
社員がWebメールや外部のストレージに、顧客リストなどの機密情報を送ろうとする場面です。プロキシは送信の中身をREQMODでDLPのICAPサーバに渡します。DLPがクレジットカード番号や個人情報を見つけると、ブロック画面を返して送信を止めます。何を止めて何を記録だけにするかのルールは、DLPの側で決めます。
ダウンロードしたファイルを無害化する
ウイルス検査は、すでに知られている危ないファイルを見つけるのが得意です。まだ知られていない攻撃に備えて、ファイルからマクロなどの危ない部分を取り除き、作り直してから渡すのがCDR(Content Disarm and Reconstruction、ファイル無害化)です。ICAPの「中身を書き換えた」という返事を使う、分かりやすい例です。
公開Webアプリへのアップロードを検査する
ICAPは、社員を守るフォワードプロキシだけでなく、公開サービスを守るリバースプロキシでも使われます。問い合わせフォームや申請ポータルのように、社外の利用者がファイルをアップロードするWebアプリの手前で、ロードバランサがREQMODでファイルを検査に回します。検査を通ったファイルだけがWebアプリに届くので、アプリ側でウイルス対策を作り込まずに済みます。
ファイルサーバ(NAS)のウイルス検査
ICAPはWebの通信だけのものではありません。NASがICAPクライアントになり、社員がファイルを開くときや保存して閉じたときに、ファイルをウイルス検査のICAPサーバへ送る使い方もあります。ウイルスが見つかったファイルは、NASが隔離したり、開けなくしたりします。
ファイルを開くたびに検査が走るので、検査サーバの負荷が高くなりがちです。検査サーバは複数台用意して、NASから分担して使うのが一般的です。社外とファイルをやり取りするファイル転送製品でも、受け取ったファイルを同じようにICAPで検査に回すことがあります。
クラウドのプロキシから社内のDLPへ
プロキシをクラウドのサービス(SWG)に移したあとも、社内で使ってきたDLPの仕組みを続けたい場面です。クラウドのプロキシが見つけた違反の中身を、ICAPで社内のDLPサーバへ送り、インシデントの記録や対応はこれまでの仕組みで行います。インターネットを経由するので、TLSで暗号化したICAPを使います。
ICAPのやり取りの流れ
CASE 1のダウンロード検査を例に、プロキシとICAPサーバのやり取りを追いかけます。ポイントは「事前の確認(OPTIONS)」「先頭だけ見せるプレビュー」「問題なしなら204」の3つです。
事前にOPTIONSで確認する
プロキシは、ICAPサーバに OPTIONS を送って、どのメソッドに対応しているか、プレビューに何バイト送ればよいかなどを確認しておきます。主な項目は次のとおりです。
| 項目 | 意味 |
|---|---|
| Methods | このサービスが受け付けるメソッド(REQMOD か RESPMOD) |
| Preview | プレビューとして最初に送ってほしいバイト数 |
| Allow: 204 | 問題がなければ「204」で短く返せることを示す |
| Transfer-Ignore など | 検査に送らなくてよいファイルの拡張子、全部送ってほしい拡張子など |
| ISTag | サービスの状態を表す目印。検査の内容が変わると値が変わる |
| Options-TTL | この確認結果を使い回してよい秒数 |
| Max-Connections | ICAPサーバが受けられる接続数の上限 |
先頭だけ見せる(プレビュー)
大きなファイルを毎回まるごと送ると、時間も通信量もかかります。そこでプロキシは、まずファイルの先頭の一部だけを送ります。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サーバが落ちたり応答しなくなったりしたとき、プロキシがどう振る舞うかは設定で決めます。検査をせずに通す「フェイルオープン」と、エラーにして止める「フェイルクローズ」のどちらかです。製品によって、バイパス、無視、許可、エラー、ブロックなど呼び方は違いますが、考え方は同じです。
どちらが正しいということはなく、守りたいものと業務への影響を比べて決めます。たとえばダウンロードのウイルス検査はフェイルクローズ、アップロードの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プロキシ | DLP | REQMOD |
| ファイルの無害化(CASE 3) | Webプロキシ | CDR | RESPMOD(アップロードを無害化するならREQMOD) |
| 公開Webアプリへのアップロード検査(CASE 4) | リバースプロキシ・ロードバランサ | アンチウイルス・CDR | REQMOD |
| ファイルサーバの検査(CASE 5) | NAS | アンチウイルス | 製品による |
| クラウドから社内DLPへ(CASE 6) | クラウドのプロキシ | 社内のDLP | 製品による(TLSで暗号化) |
ICAPを組み込むときは、HTTPSの復号、検査する向き、ICAPサーバが止まったときの動き、検査サーバの台数の4つを最初に決めておくと、設計がまとまりやすくなります。具体的な設定や対応状況は、製品ごとにメーカーや販売代理店に確認してください。
コメント