Squidプロキシサーバーとの統合

このセクションの内容:

Dr.Web ICAPDを設定する

Squidを設定する

Squidの詳細設定

1)Dr.Web ICAPDを設定する

Dr.Web ICAPDとSquid HTTPプロキシサーバーを統合するには、設定ファイル内のDr.Web ICAPDの設定セクション([ICAPD]セクション)で現在のパラメータ値を確認し、必要に応じて変更する必要があります。

ListenAddressパラメータに、HTTPプロキシサーバーからの接続を待機するDr.Web ICAPDによって待ち受け(リッスン)されるネットワークソケットのアドレス(<IP address>:<port>)を指定します(デフォルトでは127.0.0.1:1344ソケットを使用)。

Block*設定で、Dr.Web ICAPDがブロックまたは許可するWebサイトのカテゴリーと脅威の種類を有効または無効にします。

必要に応じて、WhiteListおよびBlackListのパラメータを使用して、ブロックしないWebサイトとブロックするWebサイトを定義できます。BlackListパラメータはWhiteListパラメータよりも優先されます。つまり、両方のパラメータの値に同じWebサイトが含まれている場合、このWebサイトへのアクセスはブロックされます。

Webサイトへのアクセスをより詳細に(さまざまな条件に基づいて)設定するには、スキャンルールを編集します。

注意

設定のDr.Web ICAPDのセクションにあるUsePreviewUse204AllowEarlyResponseパラメータのデフォルト値を使用すると、Internet Content Adaptation Protocol(ICAP)の該当する機能をコンポーネントで使用できます(つまり、ICAPプレビューモードを使用する、ICAPプレビューモード以外で204ステータスコードを返す、要求全体がプロキシサーバーから受信される前に「初期」応答の送信を開始するといった操作が可能になります)。HTTP要求処理に問題がない場合は、デフォルト値を変更しないことをお勧めします。

すべての設定を調整したら、Dr.Web for UNIX Internet Gatewaysを再起動します(コマンドdrweb-ctl reloadを使用します)。設定デーモンDr.Web ConfigDを再起動することもできます(service drweb-configd restartコマンドを使用します)。

2)Squidを設定する

SquidとDr.Web ICAPDとのインタラクションを有効にするには、squid.conf設定ファイル(通常は/etc/squid3/にあります)を編集してICAPの使用を許可します。Squidを設定するには、次のパラメータを設定します。

1.SquidにICAPの使用を許可する。

2.Squidが使用するICAPサービスとしてDr.Web ICAPDを登録する。

3.ICAPプレビューモード(オプション)の使用を有効にする。

4.クライアントのデータ(プロキシサーバーでの認証にパスしたユーザーのIPアドレスとユーザー名)を送信し、Dr.Web ICAPDのルール内で使用することを許可する(オプション)。

5.Dr.Web ICAPDとSquid間の常時接続のサポートを有効にする(オプション。常時接続の使用は必須ではありませんが、SquidとDr.Web ICAPDを同時に使用する際のパフォーマンスが向上します)。

Squidを設定するときは、次の点に注意してください。

SquidでICAP経由のHTTP要求(REQMOD)とHTTP応答(RESPMOD)をチェックするには、該当する種類の2つのICAPサービスを追加します。

SquidでDr.Web ICAPDをICAPサービスとして使用するには、icap_serviceで指定したアドレスとポートが、Dr.Web ICAPDの設定のListenAddressパラメータで指定したアドレスとポートと一致する必要があります。

icap_preview_sizeパラメータ値が0でない場合、Dr.Web ICAPDはSquidでは機能しません。

Squidは自動的に「クライアントのIPアドレス」と「ユーザー名」の値を作成し、ICAP要求のヘッダーとしてDr.Web ICAPDにリダイレクトします。このデータの正確性と可用性は保証されていません。Dr.Web ICAPDは、ユーザー名とユーザーのIPアドレスがプロキシサーバーによってX-Client-UsernameヘッダーとX-Client-IPヘッダーで転送されると想定します。また、Squidの設定でデフォルトで定義されている値エンコード方法のみが使用されると想定します。このため、Squidを設定するときは、このデータの転送方法に影響を与えるパラメータ値(icap_client_username_encodeicap_client_username_headerなど)を変更しないことをお勧めします。

注意

使用するSquidバージョンはICAPを有効化(--enable-icap-clientオプションを指定してコンパイル)して構築される必要があります。ICAPが有効化されていない場合は、SquidとDr.Web ICAPDの間に接続を確立することができません。

設定できるパラメータのリストは、使用しているSquidサーバーのバージョンによって異なります(Squidバージョン3.2(およびそれ以降)、3.1、3.0の設定については、後述の説明を参照)。下の文字列がすでに設定ファイルにある場合は、それらの値を指定した値に変更する必要があります。該当のパラメータがすでにファイルに含まれていても、コメントアウトされている場合は、コメントを外します。Squid設定ファイルに必要なパラメータがない場合は、それらのパラメータをファイルに追加します(末尾など)。

注意

Dr.Web ICAPDとSquidの間のやり取りを設定するには、#1#2の手順のみが必須です。以下のうち、他の設定が不要な場合は、それらをSquid設定ファイルに追加しないでください。

Squid 3.2以降のバージョンの場合

#1
icap_enable on
 
#2
icap_service i_req reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
icap_service i_res respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
 
adaptation_access i_req allow all
adaptation_access i_res allow all
 
#3
icap_preview_enable on
icap_preview_size 0
 
#4(Squid 3.2では、icap_send_client_ipおよびicap_send_client_usernameパラメータの名前が変更されました)
adaptation_send_client_ip on
adaptation_send_username on
 
#5
icap_persistent_connections on

Squid 3.1の場合

#1
icap_enable on
 
#2(Squid 3.1では、サービスの設定に使用される形式が変更され、icap_accessパラメータの名前が変更されました)
icap_service i_req reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
icap_service i_res respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
 
adaptation_access i_req allow all
adaptation_access i_res allow all
 
#3
icap_preview_enable on
icap_preview_size 0
 
#4
icap_send_client_ip on
icap_send_client_username on
 
#5
icap_persistent_connections on

Squid 3.0の場合

#1
icap_enable on
 
#2
icap_service i_req reqmod_precache 0 icap://127.0.0.1:1344/reqmod
icap_service i_res respmod_precache 0 icap://127.0.0.1:1344/respmod
 
icap_class icapd_class_req i_req
icap_class icapd_class_resp i_res
 
icap_access icapd_class_req allow all
icap_access icapd_class_resp allow all
 
#3
icap_preview_enable on
icap_preview_size 0
 
#4
icap_send_client_ip on
icap_send_client_username on
 
#5
icap_persistent_connections on

Squidの設定を変更したら、再起動してください。

Squidの詳細設定

必要に応じて、SquidがICAPプロトコル経由でスキャンのために送信するデータのサイズを制限できます。この目的のために、設定ファイルはヘッダーContent-Lengthのコンテンツの要件を満たす(あるいは満たさない)条件で追加される必要があります。例:

acl <name> rep_header Content-Length ^[0-9]{7,}$

(サーバー応答のヘッダーContent-Lengthに999999より大きい数値が含まれている場合、条件<name>はtrueになります)。

次に、追加した条件を使用して、ICAPプロトコルを介したサーバー応答のスキャンを許可または拒否します(Squidの外部ICAPサーバーへの接続パラメータでは、すべての語を条件名<name>に置き換えます)。上の例は、ヘッダーContent-Lengthが999999よりも大きい数値である場合に当てはまる可能性があるため、条件<name>がtrueである応答のスキャンを拒否するために使用します。

#Squid 3.1以降のバージョン
adaptation_access i_res deny <name>
 
#Squid 3.0以降のバージョン
icap_access icapd_class_resp deny <name>

注意

ヘッダー Content-Length の存在は、Webサーバーの応答では保証されません。それが利用できない場合、ICAPサーバーにスキャンするためにSquidから送られるデータのサイズ制限に示された方法は機能しません。

Squidの設定を変更したら、再起動してください。

よりきめ細かい方法でWebトラフィックのスキャンを制限するSquidの設定に関する詳細は、Squidのドキュメントを参照してください。たとえば、http://www.squid-cache.org/Doc/を参照してください。