Skip to main content

Secure SSH server under Linux with Fail2ban

Fail2ban protects your SSH server from unauthorized access attempts. It will monitor the log files and block any IP addresses that show signs of malicious activity, helping to keep your server secure.

Installation​

Update Server​

Make sure that your system is up to date by running the following command:

sudo apt update && sudo apt upgrade -y

Install Fail2ban​

sudo apt install fail2ban

Configuration​

Copy Configuration file​

Copy the default Fail2ban configuration file to a new file so that you can edit:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edit Conffigurtaion file​

sudo nano /etc/fail2ban/jail.local

Scroll down to the [sshd] section and modify the enabled setting to true:

[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 23.34.45.56

Save the configuration file with CTRL + X followed by Y close with RETURN.

Restart Fail2ban Service​

sudo systemctl restart fail2ban

Start Fail2ban​

To ensure that Fail2ban starts automatically when the system boots up, run the following command:

sudo systemctl enable fail2ban

Check Fail2ban status​

This will show you the status of all the jail services that are enabled, including the sshd jail.

sudo systemctl status fail2ban

Response should look like this:

user@datenschmutz:~# sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
Drop-In: /usr/lib/systemd/system/fail2ban.service.d
└─50-ensure-log.conf
Active: active (running) since Wed 2022-09-28 12:23:48 CEST; 2 months 23 d>
Docs: man:fail2ban(1)
Main PID: 1331502 (fail2ban-server)
Tasks: 25 (limit: 9485)
Memory: 47.0M
CGroup: /system.slice/fail2ban.service
└─1331502 /usr/bin/python2 /usr/bin/fail2ban-server -xf start

List banned IPs​

To see a list of IP addresses that have been banned by Fail2ban, run the following command:

sudo fail2ban-client statussshd

This will show you a list of IP addresses that have been banned due to failed login attempts.

That's it! You should now have Fail2ban configured to protect your SSH server from unauthorized access attempts.​