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

このセクションの内容

Dr.Web ICAPDを設定する

Squidを設定する

Squidのアドバンス設定

Dr.Web ICAPDを設定する

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

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

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

必要に応じて、BlackListパラメータの値として、ブロックするWebサイトのリストを指定します。WhiteListパラメータの値には、ブロックしてはいけないWebサイトのリストを指定できます。

注意

BlackListパラメータはWhiteListよりも優先されます。両方のパラメータのリストにドメインが含まれている場合、そのドメインはブロックされます。

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

Squidを設定する

SquidとDr.Web ICAPD間のインタラクションを有効にするには、squid.conf設定ファイル(通常は/etc/squid3/にあります)を編集してICAPの使用を許可します。Squidを設定するには、以下の手順に従ってください。

1.Squidの設定でICAPを有効にします。

2.SquidのICAPサービスとしてDr.Web ICAPDを登録します。

3.ICAPプレビューモードを有効にします(オプション)。

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

5.Dr.Web ICAPDと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では機能しません。

クライアントのIPアドレスとユーザー名は、ICAPリクエストのX-Client-UsernameおよびX-Client-IPヘッダーでSquidによってDr.Web ICAPDに送られます。これらのヘッダーの値は、Squidでデフォルトで使用される方法によってエンコードされている必要があります。エンコード方法に影響を与えるSquidの設定(icap_client_username_encodeおよびicap_client_username_headerヘッダー)は変更しないでください。

注意

SquidがICAPのサポート付きで構築されている(すなわち、--enable-icap-clientオプションを指定してコンパイルされている)必要があります。そうでない場合、SquidとDr.Web ICAPD間の接続は確立できません。

注意

HTTPSプロトコルを使用するには、SquidがSSLサポート付きでビルドされている(すなわち、--with-opensslおよび--enable-ssl-crtdオプションでコンパイルされている)必要があります。Squidの設定でSSLバンピングを有効にする必要があります。

設定できるパラメータのリストは、使用しているSquidサーバーのバージョンによって異なります(Squidバージョン3.2(およびそれ以降)、3.1、3.0の設定については、後述の説明を参照)。
ここに示す例に従って、Squidの設定ファイルを変更します。
例に示されているパラメータがすでにコメントアウトされている場合は、コメントを外します。必要なパラメータがない場合は、それらのパラメータを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 (In Squid 3.2, the icap_send_client_ip and icap_send_client_username parameters have been renamed)
adaptation_send_client_ip on
adaptation_send_username on
 
#5
icap_persistent_connections on

Squid 3.1の場合

#1
icap_enable on
 
#2 (In Squid 3.1, the format used to configure a service has been changed and the icap_access parameter has been renamed)
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>有効です)。

上記の例の条件は、ICAPプロトコルを介したサーバーレスポンスのスキャンをallow(許可)またはdeny(拒否)するために使用できます(Squidの接続パラメータでは、allの語を条件名<name>に置き換える必要があります)。次の例は、条件<name>が有効であるレスポンスのスキャンを拒否するために使用する設定を示しています。

#Squid 3.1 and later versions
adaptation_access i_res deny <name>
 
#Squid 3.0 and later versions
icap_access icapd_class_resp deny <name>

注意

WebサーバーのレスポンスにContent-Lengthヘッダーがない場合があります。この場合、データサイズの制限に関する設定は適用されません。

SquidのWebトラフィックの制限の設定に関する詳細については、公式マニュアルに記載されています。

注意

設定ファイルの編集後、変更した設定を有効にするためにSquidを再起動します。