Enviando email das atividades do proFTPD

O artigo descreve a criação de um script de monitoramento das atividades de usuários em um servidor proFTPD. O relatório é enviado por email.

[ Hits: 2.752 ]

Por: Saulo dos Santos Mathias em 25/02/2019 | Blog: http://mathias.eti.br


Introdução



Olá a todos,

recentemente configurei o proFTPD em um servidor para compartilharmos arquivos com amigos, mas necessitava ter um certo controle sobre isso (com toda certeza vão se perguntar porque não usar nuvem e blá blá), bem, porquê são arquivos de cunho profissional e alguns de cunho pessoal o qual gostamos de manter privado (nada ilegal).

Bem, procurando uma solução não encontrei algo do tipo, ou não soube procurar de forma correta, dessa forma resolvi criar uma script com alguns elementos do próprio Linux que existem ou que tem no seu repositório dos quais achei pesquisando diretamente nele.

Toda configuração fora realizada em um Debian 9 (Stretch):
  • proFTPD - instalado (não irei abordar instalação já que tem muitos por aqui no VOL)
  • fileschanged - existe no repositório direto do Debian (aptitude install fileschanged) para instalação
  • sendemail - existe no repositório direto do Debian (aptitude install sendemail) para instalação
  • diff - para comparar os arquivos (não abordarei seu uso detalhado) - vem nativo no sistema
  • cat - Serve para concatenar arquivos e imprimir a saída padrão - Google tradutor =) - vem nativo no sistema

Mas vamos ao que interessa né!! =)

Para melhor entendimento usarei como diretório padrão /opt/FTP/, dessa forma não foge a didática para que dê certo as configurações, mas pode ser colocado em qualquer diretório de sua escolha.

Com tudo acima instalado e rodando já vamos à primeira parte, que é a configuração de envio por email usando o sendemail.

Este é para envio de email dos usuários ftp logados.

Editor a sua escolha: /opt/FTP/logando.sh

# !/bin/bash
smtpemailfrom=emailenvio@email.com #email para envio
mailto=emailrecebe@email.com #email que receberá
subject='Logado FTP Server' # Assunto do Email
smtpserver=mail.server.com # Host Servidor de Email
smtplogin= emailenvio@email.com #email para envio
smtppass=senha #senha do email
smtpauth=tls=yes #tipo de criptografia do servidor
arq=/opt/FTP/logando.txt #Aqui coloquei o arquivo que ira ser comparado e enviado

/usr/bin/sendemail -f $smtpemailfrom -t $mailto -u $subject -o message-file=$arq -s $smtpserver:587 -xu $smtplogin -xp $smtppass

Salve o arquivo.

Vamos agora copiar o arquivo log do proFTPD para comparação:

# cp /var/log/proftpd/proftpd.log /opt/FTP/

Aqui iremos fazer o script para verificação do usuários logados no FTP, lembre-se de estar dentro do diretório /opt/FTP/.

Editor a sua escolha: /opt/FTP/ftplogin.sh

#!/bin/bash

EMAIL1=/opt/FTP/logando.sh #Script pra envio de email
loginftp=/opt/FTP/proftpd.log #Cópia do Arquivo LOG do proFTPD var/log/proftpd.log
arquivo1=/opt/FTP/logando.txt #Será criado com a diferença entre os arquivos proftpd
logando=/var/log/proftpd/proftpd.log #Esse é o arquivo de log do proFTPD
deslogado=/opt/FTP/deslogado.txt #Arquivo para saber quando o usuário deslogar

#LOGANDO
diff $logando $loginftp |grep -E "usuario|usuario2" > $arquivo1 #O grep faz um filtro mas se não quiser filtro apenas tirar o grep
if [[ -z $arquivo1 ]]; then
cat $deslogado > $arquivo1
$EMAIL1

elif [[ -s $arquivo1 ]]; then
diff $logando $loginftp |grep -E "usuario|usuario2"> $arquivo1 #O grep faz um filtro mas se não quiser filtro apenas tirar o grep
cat $logando > $loginftp
echo "Sessão Aberta no FTP"
$EMAIL1

else
echo "Sessão Fechado no FTP"
cat $deslogado > $arquivo1
$EMAIL1

fi

Salve o arquivo.

Aqui vamos apenas criar o arquivo deslogado.txt para quando o usuário deslogar, você receberá um email e no corpo dele irá a mensagem que colocará neste arquivo.

Editor a sua escolha: /opt/FTP/ftplogin.sh

echo "Usuário deslogado da sessão FTP!!"

Salve o arquivo.

Nessa parte é que vamos fazer o pulo do gato para que tudo isso funcione:

fileschanged -f /var/log/proftpd/proftpd.log -x /opt/FTP/ftplogin.sh &

O comando fileschanged verifica o log do proFTPD e executa o nosso script em modo background, dessa forma não precisamos nos preocupar com a finalização do script ao sair do sistema e posteriormente pode ser colocado na inicialização do sistema.

Quanto os parâmetros -f e -x:
  • -f = Arquivo o qual ele irá ficar verificando se há alteração
  • -x = Executa script ou aplicação

Até aqui nossa estrutura de arquivo dentro do /opt/FTP/ deverá estar assim:
  • logando.sh - envio do email logado
  • ftplogin.sh - script de verificação de usuário logado
  • logando.txt - diferença dos logs que é o que será enviado por email
  • deslogado.txt - envia um email quando o usuário deslogar da sessão algo como echo "Usuário deslogado da sessão"
  • proftpd.log - arquivo de comparação

Não se esqueça de dar permissão de execução nos .sh para poder executar os scripts:

# chmod +x logando.sh ftplogin.sh

Se tudo deu certo, ao logar no ftp você irá receber a notificação por email, lembre-se que isso é por comparação de arquivos de log, então no primeiro acesso deve vir muito lixo do que já foi usado do ftp, então aconselho limpar o arquivo de logo antes do seu uso.

Deve receber no email algo parecido com isso
Nessa outra parte vamos configurar outro script para as atividades do que é colocado, alterado ou tirado do FTP, primeiro vamos copiar o arquivo de log:

# cp /var/log/proftpd/xferlog /opt/FTP/

Este é para envio de email dos arquivos upados ou deletados.

Editor a sua escolha: /opt/FTP/files.sh

# !/bin/bash
smtpemailfrom=emailenvio@email.com #email para envio
mailto=emailrecebe@email.com #email que receberá
subject='Atividade Files FTP Server' # Assunto do Email
smtpserver=mail.server.com # Host Servidor de Email
smtplogin= emailenvio@email.com #email para envio
smtppass=senha #senha do email
smtpauth=tls=yes #tipo de criptografia do servidor
arq=/opt/FTP/files.txt #Aqui coloquei o arquivo que ira ser comparado e enviado

/usr/bin/sendemail -f $smtpemailfrom -t $mailto -u $subject -o message-file=$arq -s $smtpserver:587 -xu $smtplogin -xp $smtppass

Salve o arquivo.

Aqui é o script para verificação das atividades do que é feito dos arquivos no FTP.

Editor a sua escolha: /opt/FTP/filesftp.sh

#!/bin/bash

EMAIL2=/opt/FTP/files.sh
files=/opt/FTP/xferlog
arquivo2=/opt/FTP/files.txt
log=/var/log/proftpd/xferlog

#FILES ATIVIDADE
diff $log $files > $arquivo2
cat $log > $files
echo "Arquivo FTP.."
$EMAIL2

Salve o arquivo.

Mesmas coisas, não esquecendo de dar permissão de execução aos scripts:

# chmod +x files.sh filesftp.sh

E vamos rodar o outro fileschanged para as atividades do arquivo FTP:

# fileschanged -f /var/log/proftpd/xferlog -x /opt/FTP/filesftp.sh &

Agora nossa estrutura de arquivo dentro do /opt/FTP/ deverá estar assim:
  • logando.sh - envio do email usuário logado
  • ftplogin.sh - script de verificação de usuário logado
  • logando.txt - diferença dos logs que é o que será enviado por email
  • deslogado.txt - envia um email quando o usuário deslogar da sessão algo como echo "Usuário deslogado da sessão"
  • proftpd.log - arquivo de comparação
  • files.sh - envio do email das atividades de arquivos do ftp
  • filesftp.sh - script de verificação das atividades de arquivos do ftp
  • file.txt - diferença dos logs que é o que será enviado por email das atividades de arquivos do ftp
  • xferlog - arquivo de comparação das atividades de arquivos do ftp

Pode ser usado um sed ou um cut para melhorar as informações de que serão enviadas por email, fiquem a vontade para melhorar o script e postem nos comentários pois, pode servir para outras pessoas.

Fontes do fileschanged:
   

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

Obtendo diferentes versões do Debian GNU/Linux

Como um monte de letras de um código fonte transforma-se em voltagens?

KDE Plasma no Slackware Current

Instalação do Zabbix 1.6 no CentOS 5

AlmaLinux - Sua Alternativa ao CentOS

  
Comentários
[1] Comentário enviado por CapitainKurn em 28/02/2019 - 10:58h

Só lembrando um detalhe, que embora fuja um pouco ao escopo é importante. O gmail deve ser configurado para permitir clientes inseguros.

[2] Comentário enviado por mathiasaulo em 28/02/2019 - 13:33h


[1] Comentário enviado por CapitainKurn em 28/02/2019 - 10:58h

Só lembrando um detalhe, que embora fuja um pouco ao escopo é importante. O gmail deve ser configurado para permitir clientes inseguros.


Bem lembrado meu nobre, obrigado!!

[3] Comentário enviado por cizordj em 03/04/2019 - 21:56h

Muito obrigado pelo artigo, tenho um servidor xampp com o proFTPD embutido e seu artigo certamente vai me ajudar a implementar um sistema de monitoração.

[4] Comentário enviado por mathiasaulo em 19/04/2019 - 22:07h


[3] Comentário enviado por Cizordj em 03/04/2019 - 21:56h

Muito obrigado pelo artigo, tenho um servidor xampp com o proFTPD embutido e seu artigo certamente vai me ajudar a implementar um sistema de monitoração.


Eu é que agradeço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts