quarta-feira, 30 de março de 2011

Instalação do plugin HAVP

Plugin do squid responsável por passar o tráfego http pelo antivírus.

1) Baixar em http://www.server-side.de/download.htm;
2) Descompactar:
    # tar -zxvf havp-0.92a.tar.gz;

3)    # ./configure -prefix=/etc/havp
       # make
       # make install

4)   # groupadd havp
      # useradd -g havp havp

5) nas versões anteriores do HAVP era necessário montar um drive virtual de memoria, que ele usava para fazer as verificações das paginas. Nessa nova versão

não é mais necessário, tal procedimento será feito dentro dos processos que são abertos, para isso é necessário montar o / com a opção mand.

para montar use o comando:
     # mount -o remount,mand /

Obs: Para que essa mudança fique persistente existem duas maneiras de resolver, a primeira editando o arquivo /etc/fstab e mudando de defaults para defaults,mand ou de uma outra maneira editando o arquivo /etc/init.d/havp por volta da linha 52 onde tem: echo "Starting HAVP ..." em baixo desta linha adicione o comando: mount -o remount,mand / 
A segunda opção eu gosto mais porq não altera a inicialização do sistema.

6) Setar as permissões aos arquivos:
    # chown havp /var/tmp/havp /var/log/havp /var/run/havp
    # chmod 700 /var/tmp/havp /var/log/havp /var/run/havp

7) Editar o arquivo /etc/havp/havp.conf
    O Arquivo conf original do havp é muito bem documentado e pode ser revisto posteriormente para novas opções, o básico segue abaixo:
    # vim /etc/havp/havp.conf

#Usuario e Grupo
USER havp
GROUP havp
#Rodar como processo
DAEMON true
#Local do arquivo do processo
PIDFILE /var/run/havp/havp.pid
#Quantidade minima e maxima de processos (Depende do hardware)
SERVERNUMBER 20
MAXSERVERS 100
#Arquivo de Log e Erro
ACCESSLOG /var/log/havp/access.log
ERRORLOG /var/log/havp/havp.log
LOG_OKS false
LOGLEVEL 0
#Arquivos temporarios de verificacao
SCANTEMPFILE /var/tmp/havp/havp-XXXXXX
TEMPDIR /var/tmp
#Porta que o serviço vai escutar novas conexoes (Deve ser liberada no firewall da maquina)
PORT 8089
BIND_ADDRESS 127.0.0.1
#Deixar os erros em portugues
TEMPLATEPATH /etc/havp/templates/br
#Scaniar imagens, tamanho maximo de arquivos que vão ser scaniados
SCANIMAGES enable
MAXSCANSIZE 5000000
KEEPBACKBUFFER 200000
#Habilitando o antivirus Clamav (podem ser outros antivirus, veja o arquivo default de conf)
ENABLECLAMLIB true



8) Galera agora vem o dilema, não me recordo se o arquivo /etc/init.d/havp é instalado no make ou se temos que copiar na mão grande. na duvida segue abaixo o

arquivo, fique atento apenas para a observação do item 5.
    # vim /etc/init.d/havp

#!/bin/sh
#
#
####
# This init-script tries to be LSB conform but platform independent.
#
# Therefore check the following two variables to fit to your requests:
# HAVP_BIN HAVP_CONFIG PIDFILE
# Any configuration of HAVP is done in havp.config
# Type havp --help for help and read havp.config you should have received.

HAVP_BIN=/usr/local/sbin/havp
HAVP_CONFIG=/etc/havp/havp.config
PIDFILE=/var/run/havp/havp.pid

# Return values acc. to LSB for all commands but status:
# 1       generic or unspecified error (current practice)
# 2       invalid or excess argument(s)
# 3       unimplemented feature (for example, "reload")
# 4       user had insufficient privilege
# 5       program is not installed
# 6       program is not configured
# 7       program is not running
# 8-99    reserved for future LSB use
# 100-149 reserved for distribution use
# 150-199 reserved for application use
# 200-254 reserved
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.

reload_havp()
{
echo "Reloading HAVP ..."
PID="`cat $PIDFILE`"
if [ "$PID" != "" ]; then
kill -HUP "$PID" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error: HAVP not running"
exit 1
fi
else
echo "Error: HAVP not running or PIDFILE not readable"
exit 1
fi
exit 0
}

case "$1" in
start)
echo "Starting HAVP ..."
mount -o remount,mand /
if [ ! -f $HAVP_BIN ]; then
echo "Error: $HAVP_BIN not found"
exit 5
fi
$HAVP_BIN -c $HAVP_CONFIG
exit $?
;;

stop)
echo "Shutting down HAVP ..."
if [ ! -f "$PIDFILE" ]; then
 echo "Error: HAVP not running or PIDFILE unreadable"
 exit 1
fi
PID="`cat $PIDFILE`"
if [ "$PID" != "" ]; then
kill -TERM "$PID" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error: HAVP not running"
exit 1
fi
else
echo "Error: HAVP not running or PIDFILE unreadable"
exit 1
fi
sleep 2
exit 0
;;

restart)
echo "Shutting down HAVP ..."
$0 stop >/dev/null 2>&1
$0 start
exit $?
;;

reload-lists)
reload_havp
;;

force-reload)
reload_havp
;;

reload)
reload_havp
;;

status)
echo "Checking for service HAVP ..."
exit 4
;;

*)
#echo "Usage: $0 {start|stop|status|restart|force-reload|reload|reload-lists}"
exit 0
;;
esac


9) Para que o havp inicie junto com sistema use o comando:
    # echo "/etc/init.d/havp start" >> /etc/rc.local

10) vamos iniciar o serviço:
    service havp start


E está pronto, rodando o seu plugin de verificação de virus para squid, qualquer duvida olhe os logs em /var/log/havp/havp.log e /var/log/havp/access.log

Versão Utilizada:
havp-0.92a.tar.gz

Observações Finais:
a) As linhas iniciadas com # foram executadas como root;
b) Para o tutorial foi utilizado o CentOS 5.5. Deve funcionar normalmente para o Fedora e Red Hat, para outras distribuições podem ser consideradas as configurações :)

Um comentário:

  1. Boa Tarde,
    amigo estou tentando integrar o SQUID3 com o HAVP mas quando restarto o serviço consta este erro abaixo:

    [ 5009.725219] Out of memory: Kill process 4172 (havp) score 538 or sacrifice child
    [ 5009.725342] Killed process 4172 (havp) total-vm:339584kB, anon-rss:265420kB, file-rss:0kB Killed

    Poderia me ajudar!?

    ResponderExcluir