Найти тему

Fail2Ban - логирование в Telegram

Доброго Uptime-а всем! Хочу поделиться настройкой логирования сообщений из fail2ban в мессенджер Telegram.

На борту имеем удаленный сервер с ОС Linux\Ubuntu 22 и настроенный fail2ban.

Бан хоста и информирование в Telegram
Бан хоста и информирование в Telegram

Настройка работает на момент 24.02.2023. В добрый путь как говорится.

1) Для начала нужно зарегистрировать бота в телеграмме и получить token. Как это сделать, можно посмотреть вот здесь https://habr.com/ru/post/262247/

2) После регистрации бота переходим по ссылке git - https://githubhelp.com/deividgdt/fail2ban_telegram_notifications

А) Вы можете полностью клонировать проект к себе.

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

3) Далее, для корректной отправки сообщение через curl методом POST нужно собрать строку такого вида (для начала соберем строку с тестовым сообщением, чтобы проверить отправку):

curl -X POST -H "Content-Type:multipart/form-data" -F chat_id=вашЧатId -F text="Test Send Msg" "https://api.telegram.org/ТОКЕН/sendMessage"

Примечание 1

Перед тем как отправлять сообщения, нужно решить, куда будет приходить информация, в бота или созданную Вами группу (так как chatid будут различаться). Если это группа, не забываем добавлять созданного бота в в группу и давать ему права админа.

После создания группы, переключите режим Публичная. Это нужно для того, чтобы узнать chatid группы. Когда группа переведена в публичный режим, собираем вот такую строку и отправляем curl (можно использовать postman если есть).

curl -s -X POST https://api.telegram.org/ВАШТОКЕН/getChat?chat_id=@ВАШАГРУППА
Когда делаете запрос, добавляйте слово bot. Т.е, имеем токен 688777747573345:DFJGHDKFGLDFV_MNeWOSFhVwNYMepnA
Часть, которая идет до двоеточия, должна содержать суффикс bot. Т.е получаем строку такого вида
https://api.telegram.org/bot688777747573345:DFJGHDKFGLDFV_MNeWOSFhVwNYMepnA/getChat?chat_id=@chat

В ответ вам вернутся данные в формате json

{
"ok": true,
"result": {
"id": -34876587346577,
"title": "name",
"username": "chat",
"type": "channel",
"active_usernames": [
"chat"
],
"invite_link": "https://t.me/+HGHGKkjhg%^$"
}
}

"id": -34876587346577 - искомый идентификатор вашей группы.

4) Далее, как описано в пункте 3 (ссылка на git) настраиваете fail2ban для отправки уведомлений в свою группу в телеграмме (не забывайте давать права 755 на файлы. Как давать права на файл в Linux описано тут - https://losst.pro/prava-dostupa-k-fajlam-v-linux).

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

iptables -L -n -v

😇 - не судите строго, так как это первая статья. Если что-то будет не получаться, пишите в комментах. Разберемся вместе.