For a English version of this site, please click here
Norton Automatic
Updater - por Alceu
Rodrigues de Freitas Junior (glasswalk3r@yahoo.com.br), baseado no NAI
VirusScan DAT file auto updater criado por Bas Rijniersce (bas@brijn.nu)
Alterações: Por
favor cheque os links
"Notes" e "Change" na página de download para maiores
informações.
Norton Automatic Updater é um script em Perl que procura
resolver um problema comum em redes Microsoft Windows: atualizar
todas as estações de trabalho com Norton
Antivírus
de um único ponto da rede.
As vantagens em fazer isso são:
- A estação terá o Norton
antivírus
atualizado forçadamente, através de um script de
logon de qualquer
usuário que efetuar logon na mesma.
- Você evitará desperdício de
consumo de banda
de sua rede, uma vez que o download da
atualização será feito apenas uma vez
e o arquivo
será compartilhado atravé da intranet.
O NAU irá checar por novas versões do Intelligent
Updater
e irá realizar o download dos arquivos do servidor web da
Symantec, desde que a nova versão do site seja mais atual do
que
a mantida no servidor da rede local. Uma vez copiado, o arquivo
terá sua integridade checada com o uso de MD5sum e, caso
esteja ok,
será gerado um arquivo de lote (script de logon de
usuários do MS Windows) para atualizar as demais
estações.
A Symantec já possui um produto que gerencia a
atualização de todas as
estações de trabalho
de um servidor Windows NT: a intenção do NAU
é
fornecer uma escolha em software livre para esse problema e
está
também disponível atualmente para servidores UNIX
com o Samba instalado
e rodando como o PDC da rede local.
O NAU está disponível para livre
distribuição pela licença GNU GPL
(veja em http://www.fsf.org
para maiores
informações).
O NAU não irá realizar nenhuma atividade
diretamente nas
estações de trabalho; ele irá usar um
arquivo de
lote (batch) para executar o Intelligent Updater nestas
máquinas.
Ele também não irá procurar por
vírus
nestas estações.
O NAU possui as seguintes capacidades na sua versão atual:
- Criar um arquivo de log, armazenando todas as atividades
executadas, sendo estas sendo executadas com sucesso ou não;
- Checagem via MD5 da integridade do arquivo do Intelligent
Updater antes de disponibilizar o mesmo para uso;
- Pode
criar um script de logon independente para forçar a
atualização do
Norton Antivírus nas estaçõs de
trabalho, ou usar um script já
existente como modelo, e apenas incluir as
instruções após as do modelo
já terem sido executadas;
O NAU requer:
- Um servidor de autenticação PDC
(tanto Microsoft Windows NT quanto Samba);
- Perl;
- o módulo LWP para Perl;
- o módulo Digest::MD5 para Perl;
Servidor PDC
É possível usar tanto um servidor Windows NT ou
um servidor UNIX com
Samba instalado, desde que ambos estejam configurados como servidores
PDC, e os usuários realizem
autenticações nos mesmos.
O NAU irá usar as capacidades do Samba de compartilhamento
de
arquivo e autenticar usuários em um domínio
Microsoft
Windows como PDC para garantir a atualização das
estações de trabalho de uma rede local qualquer.
Perl
Bem, considerando que o NAU foi escrito em Perl e esta linguagem
é interpretada, é até natural que
esteja instalada
no servidor.
Qualquer distribuição UNIX (Linux, FreeBSD,
Solaris, AIX,
etc) decente inclui Perl na mídia de
instalação do sistema. Você pode obter
maiores
informações sobre Perl no site http://www.perl.com.
Se você usa Windows NT, então dever´
instalar a
versão correspondente para esse SO dispon&icute;vel
em http://www.activestate.com.
LWP.pm
LWP é um módulo que oferece acesso a
funções de http,
https e ftp para Perl. À partir da versão 1.6,
NAU irá usar esse módulo
como substituto a programas como wget e lynx para checar a
página por
atualizações e realizar o download da
atualização do antivírus.
O uso desta biblioteca permite, além de uma menor
dependência do NAU da
aplicativos externos, a possibilidade de ser multiplataforma,
já que
Perl e o Samba estão disponíveis para diferentes
plataformas de
hardware e sistema operacional.
A versão mínima deste
módulo é a
5.66: em versões anteriores, o NAU não
será capaz
de salvar o arquivo do Intelligent Updater.
Digest::MD5.pm
Esse módulo substitui o uso do programa md5sum,
responsável nas versões
anteriores à 1.6 para checar a integridade do arquivo do
Intelligent
Updater copiado do site da Symantec.
Se você utiliza PGP poderá checar minha
assinatura no arquivo para download. Minha chave pública se
encontra aqui.
A configuração do NAU é bastante
simples.
Primeiramente, você deve ter um diretório que seja
compartilhado pelo servidor PDC. Por razões de
segurança, esse compartilhamento pode ser feito apenas com
direitos de leitura.
NAU irá usar scripts the logon the usuário,
portanto
você deve configurar a opção de
netlogon no
servidor que estiver usando (Windows NT ou Samba).
Depois descompacte o arquivo com o comando abaixo:
tar -xzvf nau-1.6.tar.gz /
Isso irá expandir o NAU em /etc e /usr/sbin. O arquivo
nau.pl
será colocado em /usr/sbin por razões de
restrição de acesso e o arquivo nau.conf em /etc.
Um
cliente do NAU, para sistemas operacionais Microsoft Windows,
será descompatado na
pasta /nau_client. Copie o arquivo nau.exe para o diretório
que
será compartilhado junto com o Intelligent Updater: ambos
arquivos serão copiados posteriormente para as
estações via script de logon.
Toda a configuração do NAU agora pode ser feita
pelo
arquivo /etc/nau.conf. Leia com atenção os
comentários e configure as diversas
opções.
Uma vez executado, o NAU irá conectar-se a Internet e checar
por
novas versões do Intelligent Updater, comparando com a
versão local. Se um novo arquivo for encontrado, ele
irá
fazer o download, atualizar a base local e criar um arquivo batch
chamado netlogon.bat como no exemplo abaixo:
@echo off
c:
if exist 2300141.lock goto ok
del *.lock
echo Running Norton Update file...
copy \\SERVER\NAU\naudb.exe /y
start /w naudb.exe /q
del naudb.exe
echo Dat file from: 1082601696 > 2300141.lock
:ok
echo Norton AntiVirus is up to date.
exit
NAU irá gerar um número randômico e
criar um
arquivo com esse número usando uma extensão
.lock. Toda a
vez que alguém efetuar o logon no servidor PDC, esse arquivo
será checado. Se for encontrado, a
estação
já está atualizada. Caso contrário, o
Intelligent
Updater será executado.
À partir da versão 1.5, o NAU permite o uso de templates
de arquivos batch. Normalmente, esses arquivos batch são
utilizados
pelos administradores para executarem instruções
corriqueiras de
administração. O NAU irá utilizar
esses mesmos comandos como base na
criação do arquivo batch, e depois
irá incluir seus comandos para
atualização de antivírus.
Para utilizar essa função, basta incluir no
diretório onde será salvo o
arquivo batch o arquivo de lote desejado, com a nome alterado para netlogon.template.
Os comandos encontrados nesse arquivo serão inseridos no
novo arquivo,
chamado netlogon.bat. Isso permitirá que os comandos
executados
regularmente no logon de cada usuário ainda possam ser
mantidos.
Você terá, também, que instalar os
módulos
LWP e Digest::MD5 para que versões 1.6 e acima funcionem.
Isso pode ser feito de três maneiras, e apesar de eu explicar
apenas a instalação para o módulo LWP,
os procedimentos são exatamente
os mesmos para o Digest::MD5:
- Através de instalação de
pacotes
Ambos módulos são bastantes
usados e estão amplamente disponível em novas
versões do Perl. Sistemas
UNIX que trabalham com pacotes, como Linux e FreeBSD, podem ter um
pacote específico para instalar essa biblioteca. Normalmente
elas são
chamadas, respectivamente, de LWP (ou libwww) e perl-digest-md5
Para cada sistema de pacotes, o processo de
instalação é diferente,
portanto eu não vou entrar em detalhes como instalar um
pacote.
Esse é modo mais simples de instalar uma biblioteca no Perl.
CPAN é um
repositório de diversas biblitoecas para Perl, e o
módulo CPAN.pm
oferece uma interface simples para buscar servidores com essas
bibliotecas e instalá-las no seu servidor. CPAN.pm
é um módulo padrão,
empacotado junto com o Perl. A possibilidade de tê-la
já instalada na
sua versão de Perl é muito grande.
Para instalar o módulo LWP, basta executar na linha de
comando:
perl -MCPAN -e shell
A primeira vez que você executar esse módulo,
será feitas algumas
perguntas para você poder configurar o módulo.
Depois de configurado,
basta digitar:
install LWP
Responder as perguntar e ter o módulo copiado e
instalado no seu servidor. Caso esteja atrás de algum proxy,
você
poderá ter alguns problemas quanto aos testes executados
pelo módulo
CPAN para instalação do LWP. Basta
então executar:
force install LWP
Que os testes serão executados, mas caso
algum erro ocorra, o LWP ser&accute; instalado de qualquer
forma.
Perceba que alguns testes são cruciais, e pode ser que o LWP
não esteja
funcionando devido à alguma dependência! Esteja
atento as mensagens, e
sempre responda sim (YES) para as perguntas quando a responder sobre
dependências.
Para proceder com Digest::MD5, basta seguir os mesmos passos, apenas
mudando o nome LWP para Digest::MD5 nos comandos acima.
- Através do download do LWP
Você pode fazer o download direto do LWP do site http://www.cpan.org.
O arquivo normalmente está no compactado no formato
"tar+gz", então
bastará você executar a seguinte
sequência de comandos, depois de
efetuar o download:
mv lwp.tar.gz /usr/local
tar xzvf lwp.tar.gz
cd lwp
perl Makefile.PL
make
make test
make install
O problema deste método que é que você
terá que resolver as
dependências sozinho, baixando e instalando as bibliotecas
que o LWP
depende manualmente. Esteja atento as mensagens de
instalação do LWP
para checar quais são essas bibliotecas. Novamente esses
passos se
aplicam também à instalação
do Digest::MD5 (na realidade, na grande
maioria de módulos para Perl).
Para executar o NAU, você deve executar:
nau.pl caminho/nau.conf
Onde caminho é uma parâmetro,
indicando a localização do arquivo de
configuração nau.conf.
Você deve agendar o NAU utilizando o CRON para buscar novas
atualizações diariamente: isso irá
garantir que as
estações sejam atualizadas sempre. Eu recomendo
que seja feita essa
busca pelo menos duas vezes ao dia (de manhã e de no final
do dia)
Além de possíveis bugs que alguém
possa encontrar
(apesar do NAU já estar estável atualmente), uma
vez
executado o Intelligent Updater, quando executado, abre uma janela
solicitando interação do usuário, com
um
botão de OK e outro de CANCELAR a
atualização. Se
a atualização for cancelada, não
há o que
se fazer.
Isto costumava ser um problema até a versão 1.5:
o NAU
é distribuído com um cliente que irá
pressionar o
botão de OK, permitindo que a
atualização ocorra
sem interação do usuário. O cliente
foi
desenvolvido em Microsoft Visual Basic, e por causa da linguagem
escolhida, ele irá funcionar apenas em sistemas operacionais
da
Microsoft, infelizmente.
No entanto, recebi recentemente um email reportando que o uso do
programa em VB não é realmente
necessário: o arquivo executável do
Intelligent Updater aceita uma chave como parâmetro ("/q")
que permite
que o antivírus seja executado sem a tela de
confirmação. Em vista
disso, novas versões do NAU (1.7.1 em diante) não
serão mais
distribuídas com o cliente em VB. O script de logon para
atualização
também foi modificado para atender essa nova demanda.
Este programa cliente será copiado para cada
estação no processo de logon de
usuário, e
irá tomar o arquivo do Intelligent Updater como um
argumento,
executá-lo e pressionar o botão de OK.
Usando um servidor Windows NT
Talvez já tenha um servidor Windows NT rodando como PDC na
sua
rede local. Teoricamente você pode rodar o NAU num servidor
NT, desde que instale o Active Perl no servidor, uma vez que Perl
não é nativa neste sistema. Eu realizei um teste
com a versão 5.6.1 build 631
do Active Perl, e infelizmente tive problemas em utilizar o mesmo. Essa
versão inclui a versão 5.51 do módulo
LWP, utilizado à partir da versão
1.6 do NAU e a versão mínima do LWP para rodar o
NAU é 5.66.
Até a data de atualização desta
página, ainda não existia um pacote no site http://www.activestate.com
para atualização deste módulo,
atualmente na versão 5.62. Essa
atualização poderia ser feita manualmente ou
através do módulo do CPAN,
mas eu não tive oportunidade de testar o mesmo num servidor
com Active
Perl instalado. Se você teve êxito nesta
instalação, por favor me avise.
Uma solução melhor é instalar no
Windows NT o Cygwin (http://www.redhat.com/downloads)
ou Active Perl 5.8, que inclui a versão 5.68 do LWP.
Considere
seriamente em atualizar sua versãa do Active Perl.
Você pode usar o programa AT do Windows NT para agendar a
execução do NAU, ou então o CRON caso
esteja
usando Cygwin.
Isso é possível, desde que o programa utilize um
processo
semelhante ao da Symantec para atualizar seus sistemas: baixar a
atualização de um website, copiar ela para o
servidor e/ou executar ela
em cada estação de trabalho
Os programas que eu sei que funcionam desta forma:
Eu criei uma versão do NAU para o antivírus da
Mcafee, ainda em versão BETA.
Você pode fazer o download do MAU (Mcafee Automatic Updater)
checando o link na seção de downloads.
Gostaria de agradecer as seguintes pessoas que me auxiliaram com o NAU:
- Mauricio Kucaniz que me ajudou a testar a versão
1.4 e
versões anteriores, me apontando bugs encontrados.
- Alex Esteves Jaccoud Falcão por criar o cliente
do NAU para
sistemas operacionais da Microsoft.
- Obrigado também à Lutfi (lutfi_arab
at yahoo.com)
por reportar os erros da versão 1.7 e ajudar nas devidas
correções.