Site Meter

Protengendo o acesso HTTP com antivírus - HAVP + Clamav + Squid

Posts na série Acesso HTTP com antivírus

  1. Protengendo o acesso HTTP com antivírus - HAVP no Debian “etch”
  2. Protengendo o acesso HTTP com antivírus - HAVP + Clamav + Squid

No post anterior desta série expliquei como instalar o pacote HAVP diretamente do repositório Debian oficial. Comentei sobre as dependências do Clamav, mas me esqueci de dizer que essencialmente precisamos apenas dos pacotes (básicos) clamav, clamav-freshclam e libclamav3, sendo dispensável o pacote clamav-daemon.

 

Nesta implementação considerei utilizar o HAVP como um proxy parente do Squid a melhor solução. A grande vantagem é que você continua com todos os beníficios das ACLs do Squid, ou seja poderá continuar controlando e filtrando todo o tráfego que passar pelo Squid e ainda ter a protenção contra vírus, conforme demostrado no esquema baixo.

HAVP como proxy parente do Squid

Para integramos o HAVP + Clamav + Squid, precisamos alterar alguns arquivos de configuração. Vou considerar que o Squid já esteja configurado e funcionando corretamente. Primeiramente editamos o /etc/havp/havp.config e alteramos algumas de suas seções para que fiquem iguais à:

USER havp
GROUP havp
LOG_OKS false
PORT 8080
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /etc/havp/templates/br
ENABLECLAMLIB true
ENABLECLAMD false

Penso que seja auto explicativo, mantenha todas as outras opções do arquivo intactas. Agora devemos indicar ao Squid qual é seu proxy parente, neste caso o HAVP, então acrescentamos as seguintes linhas ao /etc/squid.conf:

acl all src 0.0.0.0/0.0.0.0
cache_peer localhost parent 8080 0 no-query no-digest no-netdb-exchange default
cache_peer_access localhost allow all
 
# Todo o tráfego HTTP deve ser enviado ao proxy parente HAVP
acl HTTP proto HTTP
never_direct allow HTTP

Com as opções acima indicamos ao Squid que todo o tráfego HTTP deverá passar obrigatoriamente pelo proxy parente que fará a verificação com o antivírus Clamav. Antes de testar recarregue as novas configurações dos serviços envolvidos:

# invoke-rc.d havp force-reload
# invoke-rc.d squid force-reload

Para testar configure o seu navegador para acessar pelo Squid e visite a página http://www.eicar.org/download/eicar_com.zip, caso tudo esteja funcionando corretamente será exibida a tela abaixo.

HAVP bloqueando acesso ao “vírus” eicar

 

 

Acho que desta forma podemos ter uma boa segurança contra estes vírus espertos que enganam muita gente e causam muitos prejuízos as empresas.

Espero que tenham gostado e o resto fica por conta da imaginação de cada um, ou seja proxy transparente, customização dos templates do HAVP e outros ajustes finos que podenm ser feitos tanto no Squid quanto no HAVP. Como ponto de partida deixo, logo abaixo, algumas referências que utilizei.

 

http://www.server-side.de/ideas.htm
http://www.opensourcehowto.org/how-to/squid/squid-clamav–havp.html
http://sidux.com/PNphpBB2-viewtopic-t-7162.html

BuscaPé, líder em comparação de preços na América Latina

Este texto foi publicado em 24/02/2008 por wasare na categoria debian, sysadmin

6 Comentários para “Protengendo o acesso HTTP com antivírus - HAVP + Clamav + Squid”

  1. Paulo Brito on 25/02/2008 às 16:05 #

    Parabéns, cara! Tanto pelo artigo quanto pela iniciativa de colocar no BR-Linux, porque eu sinceramente nem imaginava essa possibilidade, de scannear o download no proxy… Agora parece óbvio, mas sem seu toque nem pensaria nisso.

  2. Júlio Cesar on 26/02/2008 às 16:32 #

    Apesar de não ser referente ao topico, respondo a vossa visita ao nação e desde já agradeço:

    Salve Wanderson,

    Acho valido sim e até existe um tópico com sugestões e tal. O nome do registro eu acho que não foi possível de registro completo, mas o forum se chama Gnu/Linux MG1

    :)

    Ajude nos a melhorar! :)

  3. Dailson Fernandes on 28/02/2008 às 10:39 #

    Em relação a performance? Como fica a navegação?
    O Delay é alto?
    A máquina onde está instalada esta estrutura? Qual a configuração que você usou?
    Como fica o uso de memória e processador nesta máquina?
    Você já usou em ambiente de produção? Como muitos usuários?
    Sei que são muitas perguntas, mas se possível responda-as…

    Agradeço antecipadamente

    Dailson Fernandes

  4. wasare on 28/02/2008 às 23:16 #

    Dailson,

    Não realizei nenhum teste comparativo de desempenho e empiricamente não houve delay. A máquina é uma comum de uns dois anos atrás (sempron ? com 512MB RAM). Não fiz nenhuma medição de memória ou processamento, mas não consome muito pois nem precisa do daemon do clamav que parece ser um bom devorador de recursos. Esta solução foi aplicada em um ambiente de produção com uns 4 clientes usando simultaneamente num link adsl de 150Kbps.

    Como esta implementação é plugável ao Squid é possível fazer diversos testes em ambientes que demandam alta carga não duvido que funcione bem, mesmo com algum custo computacional vale muito a implementação. (mas em momento algum deve se dispensar o anti-vírus nas estações para os chupa-cabras de vírus da M$)

    Uma observação que gostaria de fazer é que como todo o tráfego passa pelo HAVP e depois “repousa” no cache do Squid os arquivos em cache não são escaneados novamente, dependendo do ambiente uma “sintonia fina” no Squid pode minimizar possíveis problemas de desempenho.

  5. Adriano on 12/06/2008 às 11:57 #

    Muito interessante.

    No caso, para utilizar outros protocolos, no caso ftp, basta adicionar uma regra semelhante, certo?

    Abraço.

  6. wasare on 12/06/2008 às 14:10 #

    Adriano,

    Em tese funciona, mas pode existir alguma limitação quanto ao tamanho do arquivo a ser verificado. Por questões de memória RAM, não é aconselhável escanear todos os arquivos.

    Faça alguns testes… e tire suas conclusões.

Enviar Trackback | Feed de Comentários

Registre seu Comentário

« Ajuste “manual” do brilho da tela do notebook no Linux | StarDict: Alternativa Livre ao Babylon »


Warning: stristr() [function.stristr]: Empty delimiter in /home/.griffon/wasare/tutolivre.net/wp-content/plugins/wassup/wassup.php on line 2093