HTTP: Scan ban should only be triggered by HTTP parse errors

This commit is contained in:
mdecimus 2025-08-23 19:49:58 +02:00
parent 062863eb4c
commit 0529645790

View file

@ -813,33 +813,36 @@ async fn handle_session<T: SessionStream>(inner: Arc<Inner>, session: SessionDat
.with_upgrades()
.await
{
match inner
.build_server()
.is_scanner_fail2banned(session.remote_ip)
.await
{
Ok(true) => {
trc::event!(
Security(SecurityEvent::ScanBan),
SpanId = session.session_id,
RemoteIp = session.remote_ip,
Reason = http_err.to_string(),
);
}
Ok(false) => {
trc::event!(
Http(trc::HttpEvent::Error),
SpanId = session.session_id,
Reason = http_err.to_string(),
);
}
Err(err) => {
trc::error!(
err.span_id(session.session_id)
.details("Failed to check for fail2ban")
);
if http_err.is_parse() {
match inner
.build_server()
.is_scanner_fail2banned(session.remote_ip)
.await
{
Ok(true) => {
trc::event!(
Security(SecurityEvent::ScanBan),
SpanId = session.session_id,
RemoteIp = session.remote_ip,
Reason = http_err.to_string(),
);
return;
}
Ok(false) => {}
Err(err) => {
trc::error!(
err.span_id(session.session_id)
.details("Failed to check for fail2ban")
);
}
}
}
trc::event!(
Http(trc::HttpEvent::Error),
SpanId = session.session_id,
Reason = http_err.to_string(),
);
}
}