Fail2Ban уведомления в Telegram

Fail2Ban Telegram

Fail2Ban довольно мощная программа для блокировки попыток взлома вашего сервера. Я уже писал в одной из прошлых статей как настроить fail2ban на vps для блокировки перебора паролей по ssh, а так же в админ-панель WordPress. В этой статье добавим возможность получать уведомления в Telegram.

Конечно в стандартной комплектации уже имеются скрипты для отправки уведомлений по электронной почте, но как по мне читать такие сообщения удобнее в мессенджере.

Регистрация бота Telegram

Первым делом необходимо зарегистрировать бота, именно он и будет отправлять вам сообщения с информацией о блокировках. В интернете полно инструкций как зарегистрировать бота. Не буду детально рассматривать этот процесс ограничусь лишь краткой инструкцией:

  • Найти в Telegram бота @BotFather;
  • Следуя простым инструкциям этого бота создать своего бота и получить Access Token. Этот токен нам понадобится в скрипте отправки сообщений.

После того как вы создали бота необходимо получить id вашей учетной записи в Telegram. Сделать это можно например с помощью бота @userinfobot. Он покажет вам ваш id или id любой другой учетной записи.

Скрипт отправки сообщений в Telegram

Данный скрипт нужно сохранить например в /usr/local/bin и дать ему права на выполнение например так chmod 755 telegram.sh

#!/bin/bash

token='ваштокен_полученный_при_создании_бота'
chat="ваш_id"
subj="Host banned"
message=`cat`

/usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage"

Скрипт принимает текст сообщения со стандартного ввода и отправляет его вместе с темой Host banned указанному в скрипте id. При желании можно модифицировать скрипт добавив переменную командной строки и передавать id в переменную chat из action скрипта fail2ban. Это понадобится если вы хотите отправлять уведомления нескольким получателям.

Следующим шагом создаем action скрипт для отправки сообщений из fail2ban. В debian/ubuntu они по умолчанию находятся в /etc/fail2ban/action.d. Создайте новый файл telegram.conf примерно такого содержимого (я взял за основу один из файлов sendmail.conf):

# Fail2Ban configuration file
#
# Author: Dyachenko Konstantin
# Telegram bot messaging
#

[Definition]

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionban = printf %%b "[Fail2Ban] : banned <ip> from `uname -n`
            The IP <ip> has just been banned by Fail2Ban after <failures> attempts against <name>." | /usr/local/bin/telegram.sh fail2ban

[Init]

# Default name of the chain
#
name = default

Ну и наконец добавим action в конфигурацию jail нужного нам сервиса. Например для WordPress выглядит так:

[wordpress-hard]
enabled = true
filter = wordpress-hard
action   = iptables-allports[name=wordpress]
           telegram[name=Wordpress, logpath=/var/log/fail2ban.log]
logpath = /var/log/auth.log
maxretry = 3
port = http,https
bantime = 3600
Fail2Ban уведомления в Telegram
Вот так выглядят сообщения от бота Fail2Ban

После всех манипуляций не забудьте перезагрузить демона fail2ban.

Оцените статью
Добавить комментарий

Внимание! Нажимая кнопку "Отправить комментарий" вы соглашаетесь с политикой конфиденциальности сайта.