Merge in SNORT/snort3 from ~AAVILASE/snort3:kerberos_read_failed_login_config to master
Squashed commit of the following:
commit
df7f69935cab4aa36609413fc3144849695b87d7
Author: Andres Avila <aavilase@cisco.com>
Date: Fri Jan 23 15:49:17 2026 -0500
kerberos: add config to set failed_login flag in kerberos client detector
{
odp_ctxt.eve_http_client = atoi(conf_val) ? true : false;
}
+ else if (!(strcasecmp(conf_key, "kerberos_check_failed_login")))
+ {
+ odp_ctxt.kerberos_check_failed_login = atoi(conf_val) ? true : false;
+ }
else if (!(strcasecmp(conf_key, "appid_cpu_profiling")))
{
if (!(strcasecmp(conf_val, "disabled")))
APPID_LOG(nullptr, TRACE_INFO_LEVEL, "Appid Config: brute_force_inprocess_threshold %" PRId8" \n", brute_force_inprocess_threshold);
APPID_LOG(nullptr, TRACE_INFO_LEVEL, "Appid Config: failed_state_expiration_secs %" PRId32" \n", failed_state_expiration_secs);
APPID_LOG(nullptr, TRACE_INFO_LEVEL, "Appid Config: inspect_ooo_flows %s\n", inspect_ooo_flows ? "True" : "False");
+ APPID_LOG(nullptr, TRACE_INFO_LEVEL, "Appid Config: kerberos_check_failed_login %s\n", kerberos_check_failed_login ? "True" : "False");
}
bool OdpContext::is_appid_cpu_profiler_running()
void OdpContext::initialize(AppIdInspector& inspector)
{
+ KerberosClientDetector* c_krb = (KerberosClientDetector*) client_disco_mgr.get_client_detector("kerberos");
+ c_krb->set_failed_login(kerberos_check_failed_login);
service_pattern_detector->finalize_service_port_patterns(inspector);
client_pattern_detector->finalize_client_port_patterns(inspector);
service_disco_mgr.finalize_service_patterns();
void OdpContext::reload()
{
+ KerberosClientDetector* c_krb = (KerberosClientDetector*) client_disco_mgr.get_client_detector("kerberos");
+ c_krb->set_failed_login(kerberos_check_failed_login);
assert(service_pattern_detector);
service_pattern_detector->reload_service_port_patterns();
assert(client_pattern_detector);
bool eve_http_client = true;
bool appid_cpu_profiler = true;
bool inspect_ooo_flows = true;
+ bool kerberos_check_failed_login = false;
uint8_t brute_force_inprocess_threshold = DEFAULT_BRUTE_FORCE_INPROCESS_STATE_THRESHOLD;
uint16_t max_packet_before_service_fail = DEFAULT_MAX_PKTS_BEFORE_SERVICE_FAIL;
uint16_t max_packet_service_fail_ignore_bytes = DEFAULT_MAX_PKT_BEFORE_SERVICE_FAIL_IGNORE_BYTES;
if (krbs->flags & KRB_FLAG_AUTH_FAILED)
{
- if (krb_client_detector->failed_login
+ if (krb_client_detector->check_failed_login
&& ((krbs->flags & KRB_FLAG_USER_DETECTED) || reqCname))
{
this->add_user(asd, (krbs->flags & KRB_FLAG_USER_DETECTED) ? krbs->cname : reqCname,
krbs->tag = *s;
if (krbs->tag == 0xa4
&& (krbs->msg_type == AS_REQ_MSG_TYPE || krbs->msg_type == TGS_REQ_MSG_TYPE)
- && this->failed_login)
+ && this->check_failed_login)
{
krbs->next_state = KRB_STATE_REQBODY_SEQ;
}
krb_service_detector = s;
}
- bool failed_login = false;
+ void set_failed_login(bool failed_login)
+ {
+ check_failed_login = failed_login;
+ }
+
+ bool check_failed_login = false;
private:
int krb_walk_client_packet(KRBState*, const uint8_t*, const uint8_t*,