Credential guessing against an exposed service.
What gives it awayBans clustering by jail and by target account. The ban itself is routine; a matching successful authentication before the threshold was reached is the finding.
ATT&CK T1110.001Nothing matches that yet. Tell us what you were looking for and it goes on the list.
fail2ban · Event NOTICE [jail] Ban
fail2ban read enough failed attempts from one address in its time window and inserted a firewall rule to drop it. The ban is temporary by design, and the log line tells you which jail decided — which is more informative than the address itself.
Also written as fail2ban Ban noticefail2ban.actions Banfail2ban banned ip logNOTICE [sshd] Ban
Your server blocked an address that was repeatedly failing to log in. This is exactly what fail2ban is for, and on any machine reachable from the internet it will happen many times a day. It does not mean anyone got in — it means they were stopped before they could keep trying.
Treat the ban stream as a scanner census, not as alerts. Two things are worth wiring up: an alert when the banned address is inside your own ranges, because that is either a misconfigured service or a compromised internal host, and an alert on repeated bans of the same address across many hosts, which is one actor rather than background noise. Also remember bans do not survive a restart unless persistence is configured, so a rebooted host starts from an empty table.
Sanitised. Addresses come from the RFC 5737 documentation ranges.
2026-09-07 14:07:19,231 fail2ban.actions [1180]: NOTICE [sshd] Ban 198.51.100.77
2026-09-07 14:17:20,884 fail2ban.actions [1180]: NOTICE [sshd] Unban 198.51.100.77 Everything else in the log line is context.
[sshd]Failed SSH authentication. The overwhelming majority on any internet-facing host. [recidive]The address has already been banned by other jails repeatedly. Recidive bans are much longer and mean a persistent actor rather than a passing scan. [nginx-http-auth] / [apache-auth]Web authentication failures, which are more likely to be aimed at you specifically than SSH noise is. [postfix-sasl]Mail authentication attempts, usually credential stuffing against mailboxes. Most of the time it is one of these.
What gives it awayBans clustering by jail and by target account. The ban itself is routine; a matching successful authentication before the threshold was reached is the finding.
ATT&CK T1110.001What gives it awayVery few bans despite heavy authentication failure volume, and many distinct source addresses each making one or two attempts. Spraying is designed to avoid producing this event, so an absence of bans alongside high failure counts is itself the signal.
ATT&CK T1110.003What gives it awayA ban for an address inside your own network. There is no benign version of this that does not also need fixing.
ATT&CK T1021.004grep 'Ban' /var/log/fail2ban.log | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20 fail2ban-client status && fail2ban-client status sshd grep 'Ban' /var/log/fail2ban.log | grep -oP '\[\K[^\]]+' | sort | uniq -c | sort -rn grep -E 'Ban (10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.)' /var/log/fail2ban.log In the sense that somebody was making repeated failed login attempts, yes. In the sense that you were targeted, almost never. Every publicly reachable SSH port receives continuous automated guessing from compromised machines worldwide, and bans are simply the tool doing its job. What matters is whether anything succeeded — check the service log for that address, not the ban count.
As long as the jail's bantime, which defaults to ten minutes in a stock configuration and is very often raised. The ban is temporary on purpose: permanent bans grow a firewall table without bound and eventually cost more than they save. If you want repeat offenders held longer, enable the recidive jail, which watches the ban log itself and applies much longer bans to addresses that keep coming back.
From a console or another machine that is not banned, run `fail2ban-client set <jail> unbanip <your address>` — for example `fail2ban-client set sshd unbanip 198.51.100.5`. Then fix the cause rather than the symptom: it is almost always a saved password on a phone, a backup job, or a script still offering an old credential. Adding your management range to `ignoreip` prevents a repeat.
Because bans expire. When the bantime runs out the firewall rule is removed, and if the source is still scanning it will trip the threshold again within minutes. That is normal and not a failure of the tool. If it bothers you, the recidive jail exists exactly for this — it bans addresses that have already been banned several times, for far longer.
Last reviewed 7 September 2026