January 4

Самописный скрипт для мониторинга системных логов

Специально для телеграм-канала Мониторим ИТ

Сила в простоте! А иначе как оправдать использование этого скрипта?

Скрипт alert_monitor.sh состоит из двух функций: первая для анализа логов, а вторая для отправки найденного по электронной почте.

#!/bin/bash
# Укажем переменные
ADMIN_EMAIL="admin@example.com" # Укажите ваш email
TEMP_LOG="/tmp/critical_log_monitor.txt" # Временный файл для сохранения результата
DATE=$(date +"%Y-%m-%d %H:%M:%S") # Текущее время
# Функция для поиска ошибок и критических сообщений в логах
function check_logs() {
 echo "Critical Log Monitoring Report - $DATE" > "$TEMP_LOG"
 echo "----------------------------------------" >> "$TEMP_LOG"
 # Проверка journalctl на критические сообщения
 echo "[journalctl - Critical Errors]" >> "$TEMP_LOG"
 journalctl -p 3 -n 50 --no-pager >> "$TEMP_LOG" # Записи с приоритетом 3 (Error)
 echo "" >> "$TEMP_LOG"
 # Проверка неудачных попыток входа или подозрительной активности в secure.log
 echo "[/var/log/secure - Failed Logins & Suspicious Activity]" >> "$TEMP_LOG"
 grep -Ei 'failed|invalid|unauthorized|error' /var/log/secure | tail -n 50 >> "$TEMP_LOG"
 echo "" >> "$TEMP_LOG"
 # Проверка неудачных аутентификаций или повышения привилегий в auth.log
 echo "[/var/log/auth.log - Auth Issues & Privilege Escalation]" >> "$TEMP_LOG"
 grep -Ei 'failure|authentication|sudo:.*(error|failure)' /var/log/auth.log | tail -n 50 >> "$TEMP_LOG"
 echo "" >> "$TEMP_LOG"
 # Отображение критичных событий из syslog (можно заменить на другую директорию, если требуется)
 echo "[/var/log/syslog - Critical Events]" >> "$TEMP_LOG"
 grep -Ei 'kernel:.*error|panic|segfault|critical' /var/log/syslog | tail -n 50 >> "$TEMP_LOG"
 echo "" >> "$TEMP_LOG"
}
# Функция для отправки алертов на электронную почту
function send_alert() {
 if [[ -s $TEMP_LOG ]]; then # Проверка лог файла, что он не пустой
 mail -s "⚠️ Critical Log Alert - $DATE" "$ADMIN_EMAIL" < "$TEMP_LOG"
 echo "Alert email sent to $ADMIN_EMAIL."
 else
 echo "No critical events found. No email sent."
 fi
}
# Выполнение проверки лога и отправки алерта
check_logs
send_alert
# Очистка временного файла
rm -f "$TEMP_LOG"

Дополнительные действия:

$ sudo apt update && sudo apt install mailutils # Установка утилиты для отправки писем
$ chmod +x alert_monitor.sh # Выдача прав скрипту на выполнение
$ crontab -e  # Редактирование конфигурации планировщика заданий
*/10 * * * * /path/to/alert_monitor.sh # строка конфигурации планировщика заданий, чтобы скрипт авыполнялся каждые 10 минут

Скрипт готов!

Подписывайтесь на телеграм-канал Мониторим ИТ, там еще больше полезной информации!