Запуск
Запуск скрипта возможен как на удаленной машине, так и на машине с SIEM. Скрипт одинаково работает как на Windows, так и на Unix-подобной системе. Работоспособность проверена на Python 3.7 и Python 3.10.
Для запуска по SSH рекомендую использовать следующую команду: nohup python3 mp-siem-tg-bot-notification.py &
При первом запуске файл БД будет создан автоматически по пути, указанному в параметре dbFileName в файле settings.py.
После создания файла БД таблица tg_users_allowed не содержит записей (т.е. оповещения об инцидентах не будут отправлять никому). Когда какой-либо пользователь нажмет кнопку "Старт" в боте или отправит команду /start, администратор получит сообщение вида:
Обнаружены новые пользователи бота: @Nickname (разрешить просмотр логов /accept123456789, игнорировать /deny123456789).
Отправив команду /accept123456789 (где 123456789 это id пользователя Телеграм), администратор добавляет пользователя в список рассылки новых инцидентов.
Отправив команду /deny123456789 (где 123456789 это id пользователя Телеграм), администратор исключает пользователя из списка рассылки новых инцидентов (команда применима в любой момент).
Если администратор не отправил ни одну из команд, пользователь не будет включен в список рассылки новых инцидентов.
Для включения администратора в список рассылки новых инцидентов он тоже должен включить себя в него командой /accept123456789.
Для ускорения этого процесса администратор может просто отправить повторно команду /start, после чего он получит описанное ранее сообщение с возможностью добавить себя в список рассылки.
Работа бота
Бот авторизуется в SIEM и получает токен, с которым осуществляет все дальнейшие обращения к SIEM по API.
Если токен закончится (обычно через 24 часа) и будет получена ошибка 401 (Unauthorised), будет выполнен новый запрос на получение токена.
Если в SIEM появляются новые инциденты, информация о них отправляется пользователям бота. Для исключения неавторизованного доступа к боту, после запуска бот отправляет оповещения только разрешенным администратором пользователям.
Администратором является пользователь, указанный в параметре admin_chat_id в файле settings.py.
Если новый пользователь начинает работу с ботом (команда /start), то администратору бота приходит оповещение о новом пользователе и выбором - разрешить или запретить ему получение оповещений об инцидентах.
В случае добавления бота в чат, администратор так же получит оповещение с выбором, отправлять ли оповещения в новый чат. В связи с особенностью обработки синтаксиса клиентом Телеграм, команду вида /accept-123456789 желательно ввести вручную, не забыв указать знак минуса.
В Telegram боту можно отправить команду /ping для проверки работоспособности бота.
Для отладки и для отображения текущих переменных бота администратор может послать ему команду /debug.