Доброго Uptime-а всем! Хочу поделиться настройкой логирования сообщений из fail2ban в мессенджер Telegram.
На борту имеем удаленный сервер с ОС Linux\Ubuntu 22 и настроенный fail2ban.
Настройка работает на момент 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
😇 - не судите строго, так как это первая статья. Если что-то будет не получаться, пишите в комментах. Разберемся вместе.