Logwatch - Enviando relatórios via e-mail

Quando o assunto é segurança, devemos considerar a importância dos relatórios do sistema, tanto para tomadas de decisões corretivas quanto
preventivas. Neste artigo, vou mostrar a configuração segura do Logwatch e o envio dos logs gerados por ele via e-mail.

[ Hits: 20.297 ]

Por: Alex em 27/10/2012 | Blog: http://linux4admins.blogspot.com/


Logwatch



Logwatch, o agente gerador de log

O Logwatch é um sistema de análise de logs customizável, que age acessando os logs do sistema criando um report das áreas especificadas no arquivo de configuração.

O Logwatch é muito simples, de fácil instalação e configuração, rodando na maioria dos sistemas Unix-like.

Site oficial:
Para instalá-lo, use:

# apt-get install logwatch

Teste seu funcionamento emitindo o comando logwatch no terminal:

# logwatch

Se tudo tiver certo, ele vai gerar um relatório extraindo informações dos logs do seu sistema.

Enviando logs por e-mail

Analisar logs é uma tarefa que precisa ser vista e praticada pelos sysadmins como algo crucial, uma vez que através dela, podemos identificar ou corrigir problemas antes dos mesmos tomarem proporções que dificultem ou impossibilitem um reparo do erro.

Muitas vezes, por falta de tempo ou a falta de experiência do sysadmin em analisar cada log, esta tarefa é colocada em último plano, um erro grave.

Pensando nisso, escrevi o script a seguir para automatizar o envio por e-mail dos logs gerados pelo Logwatch, trazendo praticidade à tarefa de analise de logs.

Segue abaixo, a ultima peça do nosso canivete suíço, o script que gera o log e o envia por e-mail:

#!/bin/sh
# Script para envio dos logs do sistema de forma periódica e automática.
# Desenvolvido em Shell script.
# Autor: Alex Sandro Silva
# Twitter: @alexhctp
# Email: alexhctp[at]hotmail[dot]com - alexhctp[at]gmail[dot]com

# CONFIGURACOES LOCAIS

LOGGEN='/usr/sbin/logwatch'
MAIL='/usr/bin/mutt'
LOGDIR='/tmp/logs/'
MAIL='/usr/bin/mutt'
# DATE=`date +%y%m%d`
DATE=`date +%Y-%m-%d`
HOME='/root/'
# MENSAGEM=/root/mensagem.txt #aprendendo uma forma de dar um echo buscando o conteúdo de um arquivo de texto, se alguem souber, conta ae, rsrs

if [ -d $LOGDIR ]
     then
     rm -r $LOGDIR
exit 0
elif [ -d $HOME  ]
     then
     mkdir $LOGDIR

     $LOGGEN > $LOGDIR/log_$DATE.log
     echo 'Logs e estatisticas enviadas automaticamente ao sysadmin' | $MAIL -s 'Estatisticas e Logs diarios - NOME DA FILIAL'  -a $LOGDIR\log* -- ti@seuemail.com

     rm -R $LOGDIR

exit 0
fi


Sintam-se à vontade para mudar, sugerir melhorias ou correções no script.

Automatizando o processo com o Cron

Para terminar, agendamos uma tarefa com o Cron para que todos os dias um log seja enviado ao sysadmin. Para isso, edite o Crontab adicionando a entrada a seguir:

# nano /etc/crontab

Insira:

# Envio de automatico de logs do sistema por email
59  23    * * *    root    /root/sendMail.sh


Pronto... agora é só criar o vício de analisar os seus relatórios do sistema, uma vez que a falta de tempo, não mais será desculpa para deixar de fazê-lo.

Espero ter ajudado.

Comentários com criticas e sugestões são bem-vindos.

Abraço a todos. ;)

Referências



Página anterior    

Páginas do artigo
   1. Introdução e Preparação
   2. Logwatch
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

OpenBSD IDS - Solução Snort e BASE

Alta Disponibilidade (High Availability) em sistemas GNU/Linux

Reforçando a segurança das conexões HTTPS no Apache

SECtool - Análise Local para Linux

Sudoers 1.8.12 - Parte I - Manual

  
Comentários
[1] Comentário enviado por temar26 em 05/11/2012 - 17:17h

Parabéns não tive tempo de testar ainda... mais um para meus favoritos ...thank...

[2] Comentário enviado por l1p3 em 20/11/2012 - 10:15h

Executei o script mais ele não esta criando o diretório para o log ser armazenado e ser enviado por email, estou colando a saída para ver se vocês conseguem me ajudar, não estou conseguindo corrigir o problema.

[root@servidor ~]# bash -x sendMail.sh
+ LOGGEN=/usr/sbin/logwatch
+ MAIL=/usr/bin/mutt
+ LOGDIR=/tmp/logs/
+ MAIL=/usr/bin/mutt
+ DATE='date +%Y-%m-%d'
+ HOME=/root/
+ '[' -d /tmp/logs/ ']'
+ '[' -d /root/ ']'
+ mkdir /tmp/logs/
+ /usr/sbin/logwatch
sendMail.sh: line 22: $LOGDIR/log_$DATE.log: ambiguous redirect
+ echo 'Logs e estatisticas enviadas automaticamente ao sysadmin'
+ /usr/bin/mutt -s 'Estatisticas e Logs diarios - Empresa' -a '/tmp/logs/log*' admin@root.com.br
Can't stat /tmp/logs/log*: Arquivo ou diretório não encontrado
/tmp/logs/log*: não foi possível anexar o arquivo.
+ exit 0

[3] Comentário enviado por alexhctp em 20/11/2012 - 17:30h

Boa tarde amigo,

Refiz o processo aqui em uma instalação ZERADA... o problema não aconteceu. Me diga se a instalação do logwatch está correta, pois como pode observar, no trecho
[code]sendMail.sh: line 22: $LOGDIR/log_$DATE.log: ambiguous redirect[/code]
a saída indica um redirecionamento incorreto ou ambíguo, o que sugere que ele não consegue entender a linha
[code]$LOGGEN > $LOGDIR/log_$DATE.log[/code]

Mais abaixo ele da o seguinte erro: [code]Can't stat /tmp/logs/log*: Arquivo ou diretório não encontrado
/tmp/logs/log*: não foi possível anexar o arquivo. [/code]
Indicando que o diretório não foi localiza, o que faz sentido pois o log não foi gerado como foi informado na linha anterior.

Por hora, verifique se todas os requisitos necessárias para o funcionamento do script estão sendo atendidos. Basicamente você precisará somente do mutt instalado e configurado e o logwatch, conforme pode ser observado ao ler todo o artigo.

Alem disso, agradeço pelo contato e informo que a decima segunda linha do script esta repetida e pode ser comentada ou excluída:
[code]MAIL='/usr/bin/mutt'[/code]

Espero ter ajudado.

Abraço a todos...

EDITADO...
Amigo, da um [code] find / -name logwatch [/code] e veja se o binário esta no diretório correto. Caso não esteja, basta acertar a variável do script para o local correto do binário.

Agora sim, um abraço a todos!!!

[4] Comentário enviado por l1p3 em 21/11/2012 - 10:19h

Bom dia Alex

Fiz as correções conforme você mencionou acima, o Mutt eu testei e esta funcionando normalmente, eu tenho uma leve impressão de que o problema seja no logwatch, conferi o binario do logwatch e o mesmo se encontra no /usr/sbin/logwatch, acho que deve ser algo nas configurações.

Abaixo Script do envio de logs:

#!/bin/sh
#Script para envio dos logs do sistema de forma periodica e automatica

#CONFIGURACOES LOCAIS
LOGGEN='/usr/sbin/logwatch'
MAIL='/usr/bin/mutt'
LOGDIR='/tmp/logs/'
#DATE='date +%y%m%d'
DATE='date +%Y-%m-%d'
HOME='/root/'
#MENSAGEM=/root/mensagem.txt

if [ -d $LOGDIR ];
then
rm -r $LOGDIR
exit 0
elif [ -d $HOME ];
then
mkdir $LOGDIR

$LOGGEN > $LOGDIR/log_$DATE.log
echo 'Logs e estatisticas enviadas automaticamente ao sysadmin' | $MAIL -s 'Estatisticas e Logs diarios - Empresa' -a $LOGDIR\log* -admin@sysadmin.com.br
exit 0
fi
;;


Uma dúvida que tenho é que nas configurações padrão do logwatch eu não altero nada?

EDIT: Não sei se vai influenciar mais estou utilizando a Distro CentOS 5.3

E obrigado alexhctp você esta me ajudando muito com esse script vai ser de grande utilidade para automatizar alguns processos aqui na empresa!




[5] Comentário enviado por alexhctp em 21/11/2012 - 13:57h

Boa tarde amigo,

Vou colocar o CentOS em uma VM pra simular o seu ambiente. Solicito que aguarde enquanto baixo a ISO e instalo no Virtual Box. Meu note com Gnu/linux ta zuado, por isso pode ser que demore um pouco (no máximo ate amanha) pra eu fazer todos os testes no CentOS e te dar outra posição.

Abraço!

[6] Comentário enviado por l1p3 em 21/11/2012 - 15:00h

Alexhctp,

Muito obrigado pela força!

Abraço

[7] Comentário enviado por l1p3 em 23/11/2012 - 08:38h

Bom dia !

Alexhctp conseguiu algum resultado em cima dos testes?

[8] Comentário enviado por alexhctp em 23/11/2012 - 16:35h


[7] Comentário enviado por l1p3 em 23/11/2012 - 08:38h:

Bom dia !

Alexhctp conseguiu algum resultado em cima dos testes?


Olá l1p3...

Pelo que pude ver nos testes que fiz usando o CentOS, o problema esta na forma como o logwatch é instalado nesse sistema. Enquanto em distros Debian Like ao executar o comando logwatch, o sistema retorna o log diretamente em tela ou redireciona a uma saída qualquer (um arquivo de texto, no nosso caso). Ao observar o comportamento de cada programa individualmente, percebi que o logwatch envia os logs automaticamente por email, sem a necessidade de um script dedicado a isso. Notei também que o logwatch usa o sendmail para realizar essa tarefa e você ode conferir essa configuração acessando o arquivo de configuração a seguir:
vi /usr/share/logwatch/default.conf/logwatch.conf

Enfim, to vendo uma forma de mudar esse comportamento.
Quando tiver noticias, volto a postar.

Abraço!

[9] Comentário enviado por l1p3 em 27/11/2012 - 15:37h

Isso mesmo,

Fiz alguns testes ao redor das configurações que mencionou à respeito do sendmail e também do envio automatico, mais nada roda tão bem quanto esse script que você criou, vou estudar uma forma automatizada também de fazer esse envio mais qualquer novidade posta para nós!

[10] Comentário enviado por kerberos2001 em 01/10/2014 - 16:15h

Olá Alexm eu caro, e carissimos colegas =),

Apenas reportando que o script funcionou maravilhosamente em alguns servidores Ubuntu 12.04 LTS que eu gerencio da minha empresa, que estão hospedados na Amazon.

Apenas um pequeno toque para correção (no meu caso, foi necessário): O arquivo ~/muttrc onde ficam as configurações de servidores, na verdade se chama ~/.muttrc (repare o ponto no inicio). Sem isso, eu não consegui enviar e-mails nos servidores usando o seu sciript.

Note ainda que é interessante que o usuário usado no logwatcher seja o root, ou algum usuário que consiga ter pleno acesso a pasta /var/logs, ou você pode ter problemas ao ler alguns logs.

Fora isso, fantástico e ótimo trabalho!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts