Fail2Ban Telegram

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

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

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

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

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

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

После того как вы создали бота необходимо получить 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.

Добавить комментарий

You have to agree to the comment policy.

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