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 не работает, заключается в том, что он никогда не обнаруживает неудачный вход в систему. Ваше подозрение в конце вашего вопроса верно.

Другие вопросы по тегам