Перейти к содержанию

Ежедневные отчеты от Fail2Ban в Telegram

Вместо уведомлений о каждом бане можно делать ежедневные отчеты, которые позволяют наглядно посмотреть статистику по банам, разбанам и попаданиям в разрезе настроенных фильтров.

Мой скрипт запускается в 9 утра и отправляет такую статистику за прошедший день:

📕 Fail2Ban report (2024-02-25)

⭐️ Banned by services:
sshd 192
⭐️ Unbanned by services:
sshd 3
⭐️ Found by services:
sshd 3452

🖥 Hostname: myhostname

Ниже описана его пошаговая установка.

Установка и настройка

Я буду использовать 2 скрипта. Первый генерирует отчет, второй отправляет уведомление в Telegram.

  1. Скачиваем и устанавливаем скрипт генерирующий отчёт:

    curl -L -o /usr/local/bin/fail2ban_daily_report https://raw.githubusercontent.com/kiriharu/experiments/master/shellscripts/fail2ban_daily_report.sh
    chmod +x /usr/local/bin/fail2ban_daily_report
    

  2. Скачиваем и устанавливаем скрипт отправляющий уведомления в Telegram

    curl -L -o /usr/local/bin/bash_telegram_notify https://raw.githubusercontent.com/kiriharu/experiments/master/shellscripts/bash_telegram_notify.sh
    chmod +x /usr/local/bin/bash_telegram_notify
    

  3. Добавляем задачу в crontab:
    Пишем crontab -e, выбираем удобный редактор. Добавляем следующую строку, заменяем где надо токен и id юзера:

    0 9 * * * bash_telegram_notify -t токен_бота -u ваш_id_юзера "`fail2ban_daily_report`" > /dev/null &
    

Готово!