ウィルスチェックのための Squid 用リダイレクタ “SquidClamAV” は、正しく設定されていない場合、ウィルスを通過させダウンロードできてしまう落とし穴があります。

ウィルス検出が正しく行われなかったログ

実際に遭遇した例をひとつ。
/etc/squid/squid.conf で下記の行が

[code]
http_access allow localhost
[/code]

定義されていないとします。

Squid サーバ上の Web クライアントからのアクセスを許さない設定ですが、何を隠そう SquidClamAV も localhost からのアクセスなので…こうなります。

[code highlight=”11″]
# /usr/local/bin/squidclamav

Sun Apr 5 20:38:45 2009 LOG SquidClamav (PID 5375) started
http://www.eicar.org/download/eicar_com.zip 192.168.0.1 mylog GET ←入力

Sun Apr 5 20:42:14 2009 DEBUG Request:http://www.eicar.org/download/eicar.com 192.168.1.3 mylog GET
Sun Apr 5 20:42:14 2009 DEBUG regex matched: http://www.eicar.org/download/eicar.com
Sun Apr 5 20:42:14 2009 DEBUG Curl will use proxy: http://127.0.0.1:3128
Sun Apr 5 20:42:14 2009 DEBUG Force scanning bad header from url http://www.eicar.org/download/eicar.com
Sun Apr 5 20:42:14 2009 DEBUG Sending STREAM to clamd.
Sun Apr 5 20:42:14 2009 ERROR fail downloading url http://www.eicar.org/download/eicar.com
Sun Apr 5 20:42:14 2009 ERROR CURLOPT_ERRORBUFFER: The requested URL returned error: 407
[/code]

fail downloading と言われたら、危険な状態です。

実際に試してみると、テストウィルスは普通にダウンロードできてしまいます…。

eicar_com.zip がダウンロードできてしまう

こういったケースも実際あるので、debug モードで確認せずに、いきなり Squid が動いているから OK とするのは早計です。

Squid キャッシュから特定のオブジェクトを削除 (purge)

このように、トラブルで通してしまったウィルスはキャッシュされてしまうので、URL が分かるならピンポイントで指定しておきます。

以下は、Eicar サイトでいつもお世話になっている 4種類のテストウィルスを purge する例。ただし、squid.conf に purge を許可する設定がされていることが前提条件です。

[code]
squidclient -m PURGE http://www.eicar.org/download/eicar.com
squidclient -m PURGE http://www.eicar.org/download/eicar.com.txt
squidclient -m PURGE http://www.eicar.org/download/eicar_com.zip
squidclient -m PURGE http://www.eicar.org/download/eicarcom2.zip
[/code]

Squid のキャッシュを丸ごと再構築

URL が分からない場合は、キャッシュ丸ごと削除し、再構築します。

[code language=”bash”]
# /etc/init.d/squid stop
squid を停止中: ……………. [ OK ]
# rm -rf /var/spool/squid/*
# squid -z
2009/04/06 00:10:15| Creating Swap Directories
# /etc/init.d/squid start
squid を起動中: . [ OK ]
[/code]