CentOS 6
Sponsored Link

Squid + SquidClamav
2014/08/12
 
Squid と Clamav を連携させて Webブラウジング時のダウンロードファイルをリアルタイムスキャンできるように設定します。
[1]
[2] Clamd をインストールします。
# EPEL からインストール

[root@prox ~]#
yum --enablerepo=epel -y install clamd
[root@prox ~]#
/etc/rc.d/init.d/clamd start

Starting Clam AntiVirus Daemon: [ OK ]
[root@prox ~]#
chkconfig clamd on
[3] SELinux を有効にしている場合、Clamd の起動/動作にはブール値の変更が必要です。
[root@prox ~]#
setsebool -P antivirus_can_scan_system on

[root@prox ~]#
setsebool -P antivirus_use_jit on
[4] c-icap をインストールします。
[root@prox ~]#
yum -y install gcc make

[root@prox ~]#
curl -L -O http://downloads.sourceforge.net/project/c-icap/c-icap/0.4.x/c_icap-0.4.2.tar.gz
[root@prox ~]#
tar zxvf c_icap-0.4.2.tar.gz

[root@prox ~]#
cd c_icap-0.4.2

[root@prox c_icap-0.4.2]#
./configure

[root@prox c_icap-0.4.2]#
[root@prox c_icap-0.4.2]#
make install

[root@prox c_icap-0.4.2]#
[root@prox ~]#
cp /usr/local/etc/c-icap.conf /etc

[root@prox ~]#
vi /etc/c-icap.conf
# 161行目:管理者アドレス変更

ServerAdmin
root@srv.world
# 170行目:サーバー名変更

ServerName
prox.srv.world
# 568行目:追記

Service squidclamav squidclamav.so
# 起動スクリプト作成

[root@prox ~]#
vi /etc/rc.d/init.d/c-icap
#!/bin/bash

# c-icap: Start/Stop c-icap
# chkconfig: - 70 30
# description: c-icap is an implementation of an ICAP server.
# processname: c-icap
# pidfile: /var/run/c-icap/c-icap.pid

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

CONFIG_FILE=/etc/c-icap.conf
PID_DIR=/var/run/c-icap

RETVAL=0
start() {
   echo -n $"Starting c-icap: "
   daemon /usr/local/bin/c-icap -f $CONFIG_FILE
   RETVAL=$?
   echo
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/c-icap
   return $RETVAL
}
stop() {
   echo -n $"Stopping c-icap: "
   killproc c-icap
   rm -f /var/run/c-icap/c-icap.ctl
   RETVAL=$?
   echo
   [ $RETVAL -eq 0 ] && rm -f $PID_DIR/c-icap.pid /var/lock/subsys/c-icap
   return $RETVAL
}
case "$1" in
   start)
      start
   ;;
   stop)
      stop
   ;;
   status)
      status c-icap
   ;;
   restart)
      stop
      start
   ;;
   *)
      echo $"Usage: $0 {start|stop|status|restart}"
   exit 1
esac
exit $?

[root@prox ~]#
chmod 755 /etc/rc.d/init.d/c-icap

[5] SquidClamav をインストールします。 ( 下記サイトで最新のものを確認してダウンロードしてください )
http://sourceforge.net/projects/squidclamav/files/squidclamav/
[root@prox ~]#
curl -L -O http://downloads.sourceforge.net/project/squidclamav/squidclamav/6.14/squidclamav-6.14.tar.gz

[root@prox ~]#
tar zxvf squidclamav-6.14.tar.gz

[root@prox ~]#
cd squidclamav-6.14

[root@prox squidclamav-6.14]#
./configure --with-c-icap

[root@prox squidclamav-6.14]#
[root@prox squidclamav-6.14]#
make install

[root@prox squidclamav-6.14]#
[root@prox ~]#
ln -s /usr/local/etc/squidclamav.conf /etc/squidclamav.conf

[root@prox ~]#
vi /etc/squidclamav.conf
# 18行目:変更( リダイレクト先URL(あらかじめ適当なものを作っておく )

redirect
http://www.srv.world/error.html
# 27行目:変更( clamdの設定とあわせる )

clamd_local
/var/run/clamav/clamd.sock
[root@prox ~]#
/etc/rc.d/init.d/c-icap start

Starting c-icap:     [ OK ]
[root@prox ~]#
chkconfig --add c-icap

[root@prox ~]#
chkconfig c-icap on

[6] Squid の設定です。
[root@prox ~]#
vi /etc/squid/squid.conf
# 最終行に追記

icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
[root@prox ~]#
/etc/rc.d/init.d/squid restart

Stopping squid: ................             [  OK  ]
Starting squid: .                            [  OK  ]
[7] 以上で設定完了です。
動作確認として、クライアントPC から Web ブラウザで以下のテストウィルスが置いてあるページにアクセスして、
http://eicar.org/85-0-Download.html
「eicar.com」をクリックし、テストウィルスのダウンロードを試みて、設定したリダイレクト先 URL にリダイレクトされることを確認してください。
 
Tweet