Antivírus no Linux para usuários de domínio
Publicado por Iran Macedo (última atualização em 24/08/2010)
[ Hits: 8.738 ]
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! ;)
#!/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.
procurar palavras dentro de todos os ficheiros de sub directorias
Fluxbox: Wallpapers aleatórios
Otimiza.sh - Atualiza seu Ubuntu/Debian
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)
Melhorando a precisão de valores flutuantes em python[AJUDA] (8)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta