2008/11/26

Squid - Atualização automática Malware Patrol

Introdução

Considerando que a internet é um terreno fecundo de fraudes e ainda sim, acreditem, sem lei, é extremamente
importante que, nós como usuários avançados possamos proteger a nossa estrutura e por consequência os que a usam.

Garimpando pela internet, encontrei o Malware Patrol. Essa "black list" é atualizada a cada hora verifica a presença
de malwares em milhares de sites. Esta lista, já está pronta em formato txt e disponibilizada no site para as mais diversas soluções.

Como a solução que utilizo é o Squid (Proxy server), semanalmente eu ia até o site, visualizava a lista e atualizava.
Temos que considerar que, uma lista que é atualizada a cada hora, em meu servidor, ser atualizada semanalmente,
é uma discrepância. Portanto, partindo dessa visão e em busca de, digamos, comodismo, parti para esta solução.

É necessário um pouco de conhecimento em editores de texto (vi, pico, nano, etc), conhecer os arquivos de configuração do Squid e comandos básico do ambiente Linux.

Primeiramente, irei ditar o ambiente que utilizo e que está em funcionamento:
- Debian Etch 2.6.18-6-686
- Squid Version 2.6.STABLE5

Configuração do Squid

Considero que o já tenha seu Squid em pleno funcionamento. Portanto, iremos configurar o proxy para verificar a lista
e barrar o acesso aos que estão nela. Edite o arquivo /etc/squid/squid.conf e a adicione as linhas:

acl sites_bloqueados_malware url_regex -i "/etc/squid/malware_patrol_list"
...
http_access deny sites_bloqueados_malware

Crie o arquivo para evitar um erro quando reiniciar o proxy

touch /etc/squid/malware_patrol_list

Esse arquivo será recriado através do script que veremos adiante.

Script de atualização

Este é o "updater" propriamente dito. Optei por variáveis para a melhor customização.
Crie o arquivo no lugar que preferir. Em meu caso, fiz em /etc/scripts/, portanto:

mkdir /etc/scripts
vi /etc/scripts/update_malware_patrol.sh

E coloque o seguinte conteúdo:

#!/bin/sh
#
# Script para Update do Malware Patrol List para Squid
# Marcio Jose Atanasio - marcioatanasio@gmail.com
#
# 19/11/2008
#

DIR_LIST_SQUID=/etc/squid/
DIR_TMP=/opt/
NAME_LIST=malware_patrol_list
SQUID_SERV="/etc/init.d/squid reload"
URL_LIST=http://www.malwarepatrol.com.br/cgi/submit?action=list_squid

cd $DIR_TMP
wget -O $NAME_LIST $URL_LIST
if [ $? = 0 ]; then
mv -f $DIR_TMP$NAME_LIST $DIR_LIST_SQUID
echo `$SQUID_SERV`
else
echo 'Falha na Atualizacao da Lista de Malware Patrol. Acesse http://www.malwarepatrol.com.br' > $DIR_TMP/msg.txt
mail -s "Falha Atualizacao" "suporte_tecnico@suporte_tecnico.com.br" <>
rm $DIR_TMP/msg.txt
fi
cd -
exit 0

Mude a permissão do script

chmod +x /etc/scripts/update_malware_patrol.sh

Note essas duas linhas:
mail -v -s "Falha Atualizacao" "suporte_tecnico@suporte_tecnico.com.br" <>
rm $DIR_TMP/msg.txt
Elas te informam por email, caso haja alguma falha no download da lista. Caso queira ser informado, é necessário
frisar dois pontos:

1 - Sendmail instalado e configurado;
2 - Caso seu servidor não seja um servidor de email, um servidor que aceite relay.

1 - Para instalar o Sendmail, não há problemas.

aptitude install sendmail

Para configurar o Sendmail, na distribuição Debian, faça:

dpkg-reconfigure exim4-config
Split configuration into small files? No
General type of mail configuration: internet site; mail is sent and received directly using SMTP
System mail name: suporte_tecnico.com.br (Domínio que tem a conta de email que irá utilizar)
IP-addresses to listen on for incoming SMTP connections: 127.0.0.1
Other destinations for which mail is accepted: (O que estiver, irrelevante)
Domains to relay mail for: (Em branco)
Machines to relay mail for: (Em branco - Este é o relay do seu servidor para outros, não dos outros para você)
Keep number of DNS-queries minimal (Dial-on-Demand)? (Se tiver a internet no servidor a todo tempo, No, caso contrário, Yes)
Delivery method for local mail: mbox format in /var/mail/ (Irrelevante)

2 - Em meu ambiente, tenho outro servidor de email que está permitindo relay vindo do meu servidor proxy.
Faça o teste

echo "Teste de envio" > msg.txt
mail -v -s "Teste de envio de email" "email_destinatario@domínio.com.br" <>

Aparecerá em modo verbose todo o funcionamento do envio.
Caso não opte por ser avisado, somente comente as duas linhas.

Configuração do Crontab

crontab -e

0 * * * * /etc/scripts/update_malware_patrol.sh 1> /dev/null

Assim, a cada hora o script será executado e a lista atualizada.

Considerações Finais


No site do Malware Patrol pode ser encontrada lista para as mais diversas soluções. Há também dois tipos de lista, a Regular List e a Agressive List. Estude seu ambiente e utilize a que mais lhe convier. Em meu caso, utilizo a Regular List sem problemas.

Espero ter sido útil neste artigo. O que mais me motiva ao mundo open-source é a troca de informações e o espírito "faça você mesmo". Portanto, dúvidas em que eu puder ajudar, tenha certeza que o farei.

Nenhum comentário: