Instalação e Configuração do SquidClamav no CentOS 6.3

E ai galera, aqui eu vou abordar a instalação e a configuração do SquidClamav que é um plugin que habilita o squid a utilizar o clamav para verificar vírus nas páginas que estamos navegando.

Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialcentos6_en para que não falte nenhum pacote ou configuração.

Agora vamos atualizar os repositórios e vamos fazer um upgrade do sistema

yum check-update && yum update -y

Agora vamos armazenar o anti-vírus

yum install clamd -y

Agora vamos colocar ele na inicialização

chkconfig --add clamd
chkconfig clamd on

Agora vamos inicializar ele

/etc/rc.d/init.d/clamd start 

Vamos acessar o diretório que vai armazenar os fontes

cd /usr/src

Agora vamos obter o c-icap que é um carinha que vai auxiliar o squidclamav

wget -c http://www.douglasqsantos.com.br/Downloads/security/c_icap-0.2.4.tar.gz

Agora vamos obter o squidclamav

wget -c http://www.douglasqsantos.com.br/Downloads/security/squidclamav-6.10.tar.gz

Agora vamos descompactar o c_icap

tar -xzvf c_icap-0.2.4.tar.gz

Agora vamos acessar o diretório

cd c_icap-0.2.4

Agora vamos configurar ele

./configure 

Agora vamos compilar e instalar ele

make && make install clean

Agora vamos copiar a configuração dele para o /etc

cp /usr/local/etc/c-icap.conf /etc

Agora Agora vamos fazer alguns ajustes nele

sed -i 's/ServerAdmin you@your.address/ServerAdmin douglas@douglasqsantos.com.br/g'  /etc/c-icap.conf
sed -i 's/ServerName YourServerName/ServerName proxy.douglasqsantos.com.br/g'  /etc/c-icap.conf
sed -i '497s/^/Service squidclamav squidclamav.so/' /etc/c-icap.conf

Agora vamos criar o script de inicialização do c-icap

vim /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 $?

Agora vamos dar a permissão de execução para ele

chmod 755 /etc/rc.d/init.d/c-icap

Agora vamos colocar ele na inicialização do sistema

chkconfig --add c-icap
chkconfig c-icap on 

Agora vamos preparar o squidClamav

cd /usr/src
tar -xzvf squidclamav-6.10.tar.gz

Agora vamos acessar o diretório dele

cd squidclamav-6.10

Agora vamos mandar configurar ele

./configure

Agora vamos mandar compilar e instalar ele

make && make install clean

Agora precisamos ajustar a sua configuração

sed -i 's,redirect .*,redirect http://www.douglasqsantos.com.br/error.html,g' /etc/squidclamav.conf 
sed -i 's,clamd_local .*,clamd_local /var/run/clamav/clamd.sock,g' /etc/squidclamav.conf
echo 'trustclient ^192\.168\.1\.21$' >> /etc/squidclamav.conf
echo 'trustuser douglas.santos' >> /etc/squidclamav.conf

Aqui nas configurações acima o redirect é para enviar o cliente para uma página de erro quando ele tentar acessar um vírus, a opção clamd_local é o caminho do socket do clamav, a opção trustclient é o ip do cliente que não vamos fazer checagem e o trustuser é o cliente que não vamos fazer checagem.

Agora precisamos inicializar o c-icap

/etc/rc.d/init.d/c-icap start 

Agora vamos inserir as seguintes linhas no final do arquivo de configuração do squid

vim /etc/squid/squid.conf
[...]
#Final do arquivo
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

Agora precisamos reiniciar o squid

/etc/rc.d/init.d/squid restart 

Agora podemos testar acessando http://www.eicar.org/download/eicar.com.txt devemos ser direcionados para a página de erro.

Agora se acessar com o usuário douglas.santos ou da máquina 192.168.1.21 não vamos ser bloqueados.

Referências