What to know
- Confirm the log backend and actual SSH port.
- Validate configuration and matching failures before relying on a jail.
- Keep a secondary recovery route and a targeted unban procedure.
Check who already manages login protection
This walkthrough assumes a systemd-based Linux server with a distribution-supported Fail2ban package. Verify the installed version and existing jails first. On a managed cPanel or hosting system, check the existing protection owner before adding another banning service. Keep an open administrator session and a tested provider console. Our goal is a reviewable SSH policy rather than several overlapping tools blocking the same user.
Create a local jail configuration
The jail configuration reference describes local overrides and parameters. Put the following example in /etc/fail2ban/jail.d/sshd.local after adapting the port. Here 2222 is only a placeholder for the SSH port you verified; it is not a port-change instruction.
[sshd]
enabled = true
port = 2222
backend = systemd
maxretry = 5
findtime = 10m
bantime = 15mUse backend systemd only when this installation reads the system journal. A file-log backend needs the correct log path instead. Preserve the distribution’s supported ban action and review existing defaults such as ignoreip before enabling the jail.
Validate the configuration and log matches
Inspect the packaged SSH filter; do not replace it with an unreviewed expression. The client reference documents these configuration and status checks:
sudo fail2ban-client -t
sudo fail2ban-client status
sudo fail2ban-client status sshdFor a running service, reload only after validation succeeds. If it is not running, start the distribution service after reviewing the configuration. Confirm the jail sees genuine SSH authentication failures. A running daemon with no matching log input provides little evidence of protection.
Test from a controlled secondary address
Use a test account and secondary address you control, with the recovery route ready. Check that the intended failures create a ban, that the ban applies to the correct port and that it expires. Avoid testing from the only administrator connection or a shared office address. Record the chosen thresholds and why they fit your users.
Prepare a targeted recovery command
sudo fail2ban-client set sshd unbanip 203.0.113.10Replace the documentation address with the specific wrongly blocked address. Investigate the cause before broad allowlisting or turning protection off. Fail2ban complements key authentication; it does not replace patching or correct SSH policy. Keep a copy of the local override and the successful recovery check with the maintenance record.
Sources & further reading
Primary sources supporting this article. The practical recommendations are Kiava’s general guidance and should be adapted to your project.
