Antivírus no Linux para usuários de domínio

Publicado por Iran Macedo (última atualização em 24/08/2010)

[ Hits: 8.633 ]

Download antivirus




Já começo afirmando que sim, este antivírus é para limpar o sistema Linux de vírus. Mas, estes vírus não agem sobre o Linux, não tem nenhum tipo de efeito sobre este sistema. Então, para que instalar um antivírus no Linux? A resposta é fácil e está descrita no título deste tópico, o antivírus serve para "limpar a sujeira" que os usuários de domínio, rodando sobre plataforma Windows, possam vir a fazer.

E qual é a importância de ter um antivírus instalado no Linux? Bem, para o Linux este será apenas mais um serviço, rodado ou manualmente pelo seu administrador ou por uma tarefa agendada no Cron. Mas, para o administrador de Linux preocupado com toda a saúde de sua rede, este antivírus se faz mais do que necessário.

Pense apenas na possibilidade de uma estação de trabalho Windows, infectada, passar o vírus para todos os diretórios do Linux, compartilhados em rede. Estes diretórios estão compartilhados para outros usuários, que por sua vez estão utilizando outras estações Windows. E, como não é novidade, ao acessar um diretório, o vírus é rodado automaticamente pelo seu arquivo *.inf e mais algumas máquinas estão infectadas. Pior, pode ser um Worm que busca por diretórios compartilhados e máquinas em rede. Questão de tempo para que todas as estações de trabalho estejam com vírus e o trabalho de limpar tudo isso torna-se maior e desagradável. Certo, as estações de trabalho possuem antivírus e desta forma "estão protegidas". Mas, sempre ao acessar tais diretórios infectados, lá vai o antivírus for Windows abrir uma mensagem de vírus detectado e lá vão os usuários atrás de você para resolver isso. De que jeito resolver? Procurar até achar, pasta por pasta, arquivo por arquivo?

Não, essa não é a ação mais adequada. Baixe este script que ele fará todo o serviço pesado para você! E isso, desde a criação de pastas necessárias, como a Quarentena, até a instalação, atualização e utilização do Clamav, antivírus bem conhecido e que é utilizado neste programa.

Por padrão, ao procurar e achar vírus, nosso script tomará a ação de isolar estes arquivos do contato com os diretórios compartilhados em rede, compactando-os e catalogando-os por data e hora de detecção. Tudo é guardado em Log para ser analisado posteriormente. Utilizando o Cron para agendamento da tarefa por dia, semana, quinzena ou mês, você tem um antivírus que trabalha de forma autônoma e que lhe garante possibilidade de desfazer qualquer remoção feita por falsos-positivos. Cabe a você apenas observar se tais arquivos detectados são realmente vírus e excluí-los ou não. A decisão é somente sua, administrador :)

Experimente rodá-lo sem ser root. Ou rodá-lo sem o Clamav instalado (necessário ter os repositórios do Clamav registrado na sua sources.list). Dúvidas, só rodar o comando "antivirus -h" e ler o Help. Uma boa fonte de pesquisa para quem procura entender Shell Scripts sem grandes firulas! ;)

Softwares utilizados: Clamav, Freshclam, Cron.
Cria: um hardlink para /usr/bin e 4 pastas, necessárias para seu uso.
Precisa de permissões administrativa para rodar. Pode ter seu uso agendado para rodar automaticamente, pelo Cron.

Este programa foi severamente testado nas plataformas Debian, Ubuntu Desktop e Ubuntu Server. Está rodando redondo. Mas, caso você encontrar algum bug, favor me comunicar pelo mail registrado no cabeçalho do Script. Para uso no Debian, será preciso a inclusão de alguns repositórios que não vem na instalação padrão.

Espero que gostem! ;)

  



Esconder código-fonte

#!/bin/bash

#############################################################
#
# Antivirus - atualiza, escaneia, encontra, move e zipa arquivos infectados.
#
# Script para encontrar e mover arquivos infectados (vírus) do compartilhamento do Samba.
# Encontrar e mover. Depois avaliar se é para apagar ou não os arquivos apontados como vírus.
#
# Utilizando o conceito mais básico dos antivírus, não apagamos qualquer arquivo detectado, mas sim
# move-los para uma pasta segura (quarentena) e de lá permanece intocável pelos usuários. Caso seja um falso-positivo, podemos
# recuperar o arquivo posteriormente. Caso não seja um falso-positivo, podemos simplesmente apaga-lo após
# algum tempo. Desta forma, as atualizações, detecções e compactações serão automáticas, mas o remoção, manual.
#
# Serviço pode ser rodado manualmente ou agendado através do Cron para que seja automático.
#
# Utiliza a engine do Clamav. Desta forma, você deve instalá-lo primeiro. Arquivos necessários para instalação são
# instalados automaticamente, caso este programa não encontre o Clamav instalado no sistema. São eles:
# clamav, clamav-base, clamav-daemon, clamav-freshclam, clamav-testfiles, clamav-doc
#
# Mais informações: você encontra mais informações na ajuda deste programa (antivirus -h pelo Terminal).
#
#############################################################
#
# Programa: antivirus
# Versão 1.0
# Licença de uso: BSD
# Use, compartilhe, mantenha os créditos de quem criou e/ou ajudar a desenvolver.
#
#############################################################
#
# Versão 1.0 - Distribuição em blocos, dividido por funções. Ferramenta para mover e zipar vírus encontrados.
#          Cataloga vírus por data no nome. Analisa permissão de usuários para uso. Cria hardlink em /usr/bin.
#          Responde aos parâmetros -V (--version) e -h (--help). Instala e atualiza Clamav, se necessário.
#
#############################################################
#
# Por Iran Macedo.
# E-mail: macedo dot if at gmail dot com
# última modificação: 16/08/2010.
#
#############################################################


param=$1
clear

# Verifica se sessão tem permissão administrativa para rodar.
 if [ "$USER" != "root" ];then
   echo ""
   echo " *** Você não tem permissão administrativa para rodar
     este programa! Para funcionar, você deve ser ROOT!"
   echo ""
   exit 1
 fi

# Verifica se o seu sistema já tem o Clamav instalado. Se não, instala. 
 unset instalado
 instalado=$(ps aux |cut -d " " -f 1 |grep clamav) > /dev/null 2>&1
 if [ -z "$instalado" ];then
 echo -e "{FONTE}33[36;1m
 *** O antivírus Clamav e sua base de dados não estão instalados!
 
 *** Aguarde... isso pode demorar alguns minutos!
 {FONTE}33[0m"

# XXX Instala o Clamav na sua máquina. Coloque aqui o comando para instalação!
 apt-get install clamav clamav-base clamav-daemon clamav-freshclam clamav-testfiles
 /usr/bin/freshclam -d
 echo "
 *** Instalação terminada! Pressione [ENTER] para continuar.
 "
 read
 fi

# Verifica se o programa já está em /usr/bin. Se já está, segue sem alterações. Se não está,
# faz um hardlink deste para /usr/bin.
 unset instalado
 instalado=$(ls /usr/bin/ |grep -sow $(basename "$0")) > /dev/null 2>&1

 if [ -z $instalado ];then
   ln "$0" /usr/bin/antivirus > /dev/null 2>&1
#   clear
   echo ""
   echo -e "{FONTE}33[36;1m Este programa criará um link no seu sistema.

 Da próxima vez, rode este programa somente digitando o comando: {FONTE}33[0m
{FONTE}33[36;1;5m [ antivirus ]{FONTE}33[0m {FONTE}33[36;1m pelo seu Terminal.

 E lembre-se, este programa precisa ser rodado pelo Root ;)
 
 É necessário também que o pacote Clamav esteja instalado. Caso não esteja, 
 o programa tentará instalá-lo de forma automática.

 root@pc# antivirus{FONTE}33[0m

 Pressione [ENTER] para continuar..."
   read
   clear
 fi


# FUNÇÃO PRINCIPAL
###
Main() {

 Verify_Dicts   # Função para verificar diretórios.
 Parameters   # Função para verificar parâmetros.

 Date      # Função para atribuir Data.
 Update      # Função para atualizar base do Clamav.
 Scan      # Função para escanear por arquivos infectados.
 Zip      # Função para mover e zipar infectados.

} #Fim Main.


# FUNÇÃO PARAMETERS
# Se o usuário usar algum parametro, as informações serão passadas e o programa será fechado logo após.
# Parametros -V e --version (versão), -h e --help (ajuda).
###
Parameters() {

# Variável rodou verifica se o programa foi rodado por inteiro (antivirus)
# ou se foi utilizado um dos parâmetros (antivirus -V, por exemplo).

# param == $1, primeiro parâmetros após o comando.
 case "$param" in
   -V | --version) echo ""
      echo " Programa: "$(basename "$0" ) ;
# Pega a versão direto do cabeçalho.
      echo -n " Versão atual: " ;
      grep -m 1 "Versão" "$0" |cut -d - -f 1 |tr -d \# ;
# Pega a data da modificação direto do cabeçalho.
      echo -n " Data da última modificação: " ;
      grep -m 1 "modificação" "$0" |cut -d : -f 2 |tr -d \# ;
      echo " Criado por Iran Macedo."
      echo "";
      exit 0 ;;
   -h | --help) Mensagem_Uso ;
      exit 0 ;;
# Para qualquer outro parametro, mensagem de uso.
# Caso $param tenha um outro parâmetro, inválido.
      *) if [ -n "$param" ];then
         echo ""
         echo -e "{FONTE}33[31;1;5m Ooops!!!"
         echo -e " Opção inválida: $param!{FONTE}33[0m"
         echo 
         echo " Parâmetros válidos: "
         echo " -h | --help | -V | --version"
         exit 1
         fi ;;
 esac

} #Fim Parameters


# FUNÇÃO DE AJUDA
# Esta função é invocada quando utilizados os parametros -h ou --help.
###
Mensagem_Uso() {

 clear
 echo "
 Programa: antivirus"
 echo -n "
 Local do arquivo ";whereis antivirus
 echo "
 Programa para remoção de vírus em servidores de compartilhamento (Samba) para usuários Windows.

 Este programa tem como finalidade procurar por vírus nos diretórios onde usuários windows salvam
 seus arquivos, diminuindo assim possíveis focos de infecção para os terminais Windows.

 O programa antivirus utiliza o Clamav e toda a sua base de assinaturas para escanear, encontrar e mover
 virus ou arquivos infectados para uma pasta segura. De lá, este programa cria um arquivo zipado, identificando
 no nome a data do dia em que foi movido. Após isso, o arquivo zipado é movido para a pasta /root/clamav/quarentena
 e ficará lá para ser avaliado pelo administrador. O arquivo original, outrora movido para a pasta movidos, será
 apagado do sistema. Todas as remoções ficam em Log (/var/log/clamav/movidos) para uso futuro, mostrando a data e
 seu local original, para o caso de qualquer arquivo ser movido de forma indevida. Caso seja esta a situação, basta 
 verificar a data da remoção no log, encontrar o arquivo dentro de quarentena pela data, descompacta-lo e voltá-lo 
 para seu lugar original.
 
 Pasta da remoção: /root/clamav/movidos
 Pasta da quarentena: /root/clamav/quarentena
 Log de remoção: /var/log/clamav/movidos.log
 Log de atualização: /var/log/clamav/freshclam.log
 
 Uso: $(basename "$0") [-h | -V]

 -h, --help      Opcional. Mostra esta tela de ajuda e sai.
 -v, --version      Opcional. Mostra a versão atual deste programa e sai.

 Para rodar o programa, digite [ antivirus ] no seu Terminal.

 Este programa adiciona um hardlink na pasta /usr/bin, não sendo necessário utilizar o caminho completo para o programa.

 Criado por Iran Macedo.
 "

} #Fim Mensagem_Uso


# Função Verify_Dicts
# Verificam as pastas necessárias. Caso não existam, serão criadas.
###
Verify_Dicts() {

# /var/log/clamav --> Diretório para Logs do Clamav.

 cd /var/log/clamav > /dev/null 2>&1
 test "$?" = "1" && mkdir -p /var/log/clamav
 
# /root/clamav/movidos --> Diretório temporário para vírus.
 cd /root/clamav/movidos > /dev/null 2>&1
 test "$?" = "1" && mkdir -p /root/clamav/movidos

# /root/clamav/quarentena --> Diretório para guardar os vírus zipados.
 cd /root/clamav/quarentena > /dev/null 2>&1
 test "$?" = "1" && mkdir -p /root/clamav/quarentena

} #Fim Verify_Dicts


# FUNÇÃO DATA
# Atribui data na Variável.
###
Date() {

 Data=$(date +%Y-%m-%d-%Hh%Mm%Ss)

} #Fim Date.

# FUNÇÃO ATUALIZAÇÃO
###
Update() {

 echo " "
 echo " " >> /var/log/clamav/movidos.log
 echo " *** Atualizando... aguarde!"
 echo " *** Antivírus iniciado em: "$Data"" >> /var/log/clamav/movidos.log
 /usr/bin/freshclam   # Comando de atualização do Clamav.

} #Fim Update.


# FUNÇÃO SCAN
###
Scan() {

# Este bloco escaneia e move arquivos infectados.
# Atribua aqui todos os discos / partições ou pastas que serão escaneadas.
 echo "
 *** Escaneamento iniciado... aguarde, isso pode demorar vários minutos!
 "
# Escaneando diretório /home.
 /usr/bin/clamscan -ri /home --move=/root/clamav/movidos >> /var/log/clamav/movidos.log

# XXX Adicione nas linhas abaixo todos os discos, partições ou diretórios que você deseja escanear.
# /usr/bin/clamscan -ri /media/disk-2 --move=/root/clamav/movidos >> /var/log/clamav/movidos.log
# /usr/bin/clamscan -ri /media/arquivos --move=/root/clamav/movidos >> /var/log/clamav/movidos.log

} #Fim Scan.

# FUNÇÃO ZIPAR
###
Zip() {

 cd /root/clamav/quarentena
 infected=$(ls -m /root/clamav/movidos |tail -n 1 |cut -d , -f 1) # Atribui informação à variável.

# Se não existem infectados, sair

 if [ -z $infected ];then > /dev/null 2>&1    # Se a variável estiver vazia.

    Date
    echo " *** Tudo limpo... Nenhum vírus encontrado!"
    echo ""
    echo " *** Fim do Scan!"
    echo " *** Escaneamento terminado: "$Data"" >> /var/log/clamav/movidos.log
    echo "" >> /var/log/clamav/movidos.log
    exit 0  #este script é encerrado.

# Se existem arquivos infectados...
 else
    Date
# Zipar os infectados em Quarentena...
    tar -zcvf "$Data".tar.gz /root/clamav/movidos > /dev/null 2>&1
    cd /root/clamav/movidos/
    rm -rf *   #Apaga os originais...
    echo "" >> /var/log/clamav/movidos.log
    echo " *** Opa! Encontramos algo! Arquivos em /root/clamav/quarentena."
    echo " *** Log da detecção em /var/log/clamav/movidos.log."
    echo ""
    echo " *** Fim do Scan!"
    echo " *** Escaneamento terminado: "$Data"" >> /var/log/clamav/movidos.log
    echo ""
    exit 0 # E encerra o script após mover e zipar.
 fi

} #Fim Zip.

Main #Encerra função Main.


Scripts recomendados

Firewall Dinamico

Firewall Iptables

Configuração de failover de links de internet

Monitoramento de usuário via screenshots

Ajuste de brilho do monitor


  

Comentários
[1] Comentário enviado por ifmacedo em 29/08/2010 - 07:48h

OBS: Fica aqui uma observação! Este script, do jeito que está, só rodará se você der o comando pelo Terminal. Ele vai rodar e executar todas as tarefas, sem problemas. MAS... caso você crie uma rotina pelo Cron (agendamento de tarefa) para rodá-lo por lá, aí este script não funcionará corretamente. Na verdade, ele não vai nem rodar.

Veja que temos vários comandos de impressão na tela (echo's) do início ao fim do script. Se o echo estiver apontando a saída do comando para um documento, tal como esta linha: "echo " *** Escaneamento terminado: "$Data"" >> /var/log/clamav/movidos.log", que joga a saída de comando para o Log, então não tem problema, pois a saída não será na tela, mas sim no log. Agora, se você tem uma saída que não aponta pra doc algum, como esta linha: "echo " *** Fim do Scan!"", então o script não rodará!

Resumindo isso tudo o que eu escrevi, o Cron não trabalha (ou não consegue trabalhar) com scripts que jogam saídas de comandos na tela! Então, você pode resolver isso somente comentando todas as linhas que jogam o texto na tela ou apagando-as (o que não recomendo). Outra saída é criar uma cópia do script e modificar o nome do script completo, para tipo "antivirus_manual".

Para verificar se o agendamento da tarefa pelo Cron está rodando, basta, após a hora do agendamento, dar o comando "top" ou "ps aux" e verificar se você encontra o comando antivirus ou clamscan por lá!

Abs.

[2] Comentário enviado por yrgon em 20/03/2015 - 17:18h

Boa tarde; muito bom o artigo mas tenho uma duvida, estou pesquisando sem informações precisas, sou usuário iniciante de Linux e o PC do meu irmão pegou um vírus brabo que não deixa nem ligar o computador, sei que dá para rodar antivirus com o Linux para efetuar a limpeza, sendo que instalei o clamav e tudo mais dele, na hora que termina o scaner ele não limpa nada ele só me dá opção para deletar ou por em quarentena, e o que eu quero é limpar os arquivos até mesmo por questão de não saber o que pode ser deletado as informações não são minhas, encarando isso como se fosse um cliente ele não gostaria de ter suas coisas deletadas, alguém pode me dar uma ajuda para uma limpeza de arquivos ?
Deletar seria a ultima opção. quero limpar para que ele faça o backup, ele usa o ruindows por causa de 2 programas de CNC o artcam e o mach3, se ele conseguir fazer o backup e esses dois programas para linux será mais um novo usuário linux.
Agradeço a todos.
Daniel.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts