Bro 2.4.1 为 SSH 暴力攻击生成电子邮件通知
Bro 2.4.1 generating E-mail notice for SSH Bruteforce Attack
当有人试图使用 Bro (v2.4.1) 对我的服务器进行 ssh 暴力攻击时,我无法生成电子邮件通知。我有一个像这样的 Bro 脚本,它将最大登录尝试重新定义为每 24 小时 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 的密码登录,所以也许没有私钥的登录尝试不会触发 Bro 中的 ssh_failed_login 事件? table 上方的 auth_success 列显示失败登录尝试的“-”,而成功登录显示 "T",因此也许应该是 "F",以便要触发的事件?
非常感谢任何帮助或建议!
由于 SSH 被加密,我们不得不求助于启发式方法来检测成功和不成功的身份验证。随着时间的推移,这些启发式方法得到了改进,但仍远非完美。如果 "auth_success" 列未设置,就像您提供的示例中那样,这意味着 Bro 无法猜测登录是否成功。
暴力破解检测脚本不起作用的原因是它从未检测到不成功的登录。你在问题末尾的怀疑是正确的。
当有人试图使用 Bro (v2.4.1) 对我的服务器进行 ssh 暴力攻击时,我无法生成电子邮件通知。我有一个像这样的 Bro 脚本,它将最大登录尝试重新定义为每 24 小时 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 的密码登录,所以也许没有私钥的登录尝试不会触发 Bro 中的 ssh_failed_login 事件? table 上方的 auth_success 列显示失败登录尝试的“-”,而成功登录显示 "T",因此也许应该是 "F",以便要触发的事件?
非常感谢任何帮助或建议!
由于 SSH 被加密,我们不得不求助于启发式方法来检测成功和不成功的身份验证。随着时间的推移,这些启发式方法得到了改进,但仍远非完美。如果 "auth_success" 列未设置,就像您提供的示例中那样,这意味着 Bro 无法猜测登录是否成功。
暴力破解检测脚本不起作用的原因是它从未检测到不成功的登录。你在问题末尾的怀疑是正确的。