Eu criei um script a partir do que encontrei na web para notificar uma SA sobre usuários sendo adicionados a um servidor. Eu configurei com um cron para executar o script a cada 5 minutos para monitorar diferenças no arquivo /var/log/secure, mas ele ainda envia um e-mail em branco se nada tiver mudado. Como posso editá-lo para não enviar por e-mail se nenhuma alteração for feita. O roteiro está abaixo:
file="/var/log/secure"
while cmp "$file" "${file}_bkp"; do
sleep 2
done
diff "$file" "${file}_bkp" | grep -e useradd | mailx -s "User Added On Server" [email protected]
cp "$file" "${file}_bkp"
Responder1
Concordo com o comentário de que um método de verificação com melhor desempenho é monitorar o /etc/passwd
arquivo em vez de analisar um arquivo de log, que poderia ser um arquivo grande e intensivo para processar. Se /etc/passwd
for detectado que foi alterado, você poderá comparar um backup do arquivo para ver o que mudou.
Exemplo rápido que você pode personalizar de acordo com suas necessidades exatas.
# One-off initial Set up
md5 -q /etc/passwd > /etc/passwd.md5
cp /etc/passwd /etc/passwd.compare
# Cron job script logic
if [[ $(md5 -q /etc/passwd) != $(< /etc/passwd.md5) ]]
then
# The passwd file has changed, do something!
#
# Diff /etc/passwd with /etc/passwd.compare to get details, etc.
# Send an alert with details
#
# Prepare for the next time a change happens.
md5 -q /etc/passwd > /etc/passwd.md5
cp -f /etc/passwd /etc/passwd.compare
#
fi