
Уведомления Zeek в Telegram (редакция ZeekJS)
Этот пакет повторно реализует zeek-notice-telegram на TypeScript (ZeekJS), чтобы обойти ненадёжность ActiveHTTP.
Он заимствует как пакет Ясина, указанный выше, так и реализацию ZeekJS того самого исходного вдохновения этого пакета (zeek-notice-slack), которая теперь называется zeekjs-notice-slack.
Повторную генерацию scripts/telegram.js из исходного кода TypeScript можно выполнить, запустив npm install && npm run build.
Базовое использование идентично zeek-notice-telegram. Если кратко, его можно использовать так:
@load base/frameworks/notice
export {
redef enum Notice::Type += {
Notice::SSHLoginSuccessful,
};
// NOTE: you must define these!
redef Notice::telegram_token = "xxx";
redef Notice::telegram_chat_id = "yyy";
}
event ssh_auth_successful(c: connection, auth_method_none: bool)
{
NOTICE([$note=Notice::SSHLoginSuccessful, $conn=c, $msg="Login detected"]);
}
hook Notice::policy(n: Notice::Info)
{
if ( n$note == Notice::SSHLoginSuccessful )
{
add n$actions[Notice::ACTION_TELEGRAM];
}
}
Сбой при отправке уведомления через Telegram не останавливает обработку хуков уведомлений. Вместо этого предоставляются хуки Zeek для обработки как случаев ошибок, так и (при желании) успешной отправки сообщений:
Notice::telegram_notice_succeeded — когда всё в порядке;Notice::telegram_notice_api_error — когда сам API Telegram отвечает ошибкой;Notice::telegram_notice_network_error — когда что-то идёт не так при взаимодействии с API Telegram.Пример использования этих хуков см. в btest-тесте.
Тест btest имитирует API Telegram и проверяет успешный сценарий и различные условия ошибок.
Чтобы запустить тесты, перейдите в каталог testing и выполните make.