Bro 2.4.1 генерирует уведомление по электронной почте для атаки SSH Bruteforce
У меня возникают проблемы при создании уведомления по электронной почте, когда кто-то пытается выполнить ssh bruteforce-атаку на мой сервер с Bro (v2.4.1). У меня есть такой скрипт Bro, который переопределяет максимальное количество попыток входа в систему до 5 в сутки:
@load protocols/ssh/detect-bruteforcing
redef SSH::password_guesses_limit=5;
redef SSH::guessing_timeout=1440 mins;
hook Notice::policy(n: Notice::Info)
{
if ( n$note == SSH::Password_Guessing && /192\.168\.178\.16/ in n$sub )
add n$actions[Notice::ACTION_EMAIL];
}
где 192.168.178.16 - локальный ip моего сервера, и я убедился, что скрипт загружается, включив его в $PREFIX/site/local.bro. Выход из broctl scripts
показывает, что скрипт загружается просто отлично при запуске. Тем не менее, я никогда не получаю уведомления по электронной почте о ssh-атаках.
Сводные данные о соединении, отброшенных пакетах и недействительных уведомлениях о сертификатах ssl отправляются по электронной почте просто отлично, поэтому это не проблема конфигурации электронной почты Когда я проверяю вывод журнала ssh примерно так:
sudo cat /opt/bro/logs/current/ssh.log | bro-cut -d ts uid id.orig_h id.orig_p id.resp_h id.resp_p version auth_success direction client server cipher_alg
6 неудачных попыток входа в систему (которые я сгенерировал для проверки этого) просто отлично записываются в /opt/bro/logs/current/ssh.log:
2016-11-11T14:45:08+0100 CRoENl2L4n5RIkMd0l 84.241.*.* 43415 192.168.178.16 22 2 - INBOUND SSH-2.0-JuiceSSH SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 aes128-ctr
2016-11-11T14:45:13+0100 CMflWI2ESA7KVZ3Cmk 84.241.*.* 43416 192.168.178.16 22 2 - INBOUND SSH-2.0-JuiceSSH SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 aes128-ctr
2016-11-11T14:45:17+0100 CZuyQO2NxvmpsmsWwg 84.241.*.* 43417 192.168.178.16 22 2 - INBOUND SSH-2.0-JuiceSSH SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 aes128-ctr
2016-11-11T14:45:20+0100 CC86Fi3IGZIFCoot2l 84.241.*.* 43418 192.168.178.16 22 2 - INBOUND SSH-2.0-JuiceSSH SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 aes128-ctr
2016-11-11T14:45:25+0100 CHqcJ93qRhONQC1bm4 84.241.*.* 43419 192.168.178.16 22 2 - INBOUND SSH-2.0-JuiceSSH SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 aes128-ctr
2016-11-11T14:45:28+0100 CdV0xh1rI4heYaFDH2 84.241.*.* 43420 192.168.178.16 22 2 - INBOUND SSH-2.0-JuiceSSH SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 aes128-ctr
Однако я никогда не получаю уведомление об этом по электронной почте. Единственная причина, по которой я могу придумать, это то, что у меня отключен вход по паролю через ssh, так что, может быть, попытки входа без закрытого ключа не запускают события ssh_failed_login в Bro? Столбец auth_success в приведенной выше таблице показывает "-" для неудачных попыток входа в систему, тогда как успешный вход в систему показывает "T", так что, может быть, это должно быть "F", чтобы событие сработало?
Любая помощь или предложения с благодарностью!
1 ответ
Из-за шифрования SSH нам пришлось прибегнуть к эвристике для обнаружения успешных и неудачных аутентификаций. Эти эвристики со временем улучшились, но все еще далеки от совершенства. Если столбец "auth_success" не установлен, как в приведенных вами примерах, это означает, что Bro не смог угадать, был ли вход успешным или нет.
Причина, по которой скрипт обнаружения bruteforce не работает, заключается в том, что он никогда не обнаруживает неудачный вход в систему. Ваше подозрение в конце вашего вопроса верно.