Categories: UbuntuUbuntu Feed

How to Install and Configure Fail2ban on Ubuntu 20.04

Fail2ban is an tool used to improve server security from cyber attacks. It allows you to block remote ip addresses temporary or permanently based on defined settings. It helps you to secure your server and data from attackers.

This tutorial help you to install Fail2ban on a Ubuntu 20.04 LTS Linux systems. Also provides you initial configuration with protect SSL using fail2ban.

Prerequisites

You must have shell access to Ubuntu 20.04 system with sudo privileged account.

Step 1 – Installing Fail2ban

Fail2ban Debian packages are available under the default apt repositories. You just need to update Apt cache and install fail2ban debian package on your system.

Open a terminal and type:

sudo apt update 
sudo apt install fail2ban -y 

After successful installation, make sure service is started.

sudo systemctl status fail2ban 

Make sure service is active and running.

Step 2 – Initial Fail2ban Configuration

Fail2ban keeps configuration files under /etc/fail2ban directory. The jail.conf file contains a basic configuration that you can use to create a new configuration. Fail2ban uses a separate jail.local file as configuration to avoid updates of jail.conf during packages updates.

So create a copy of the configuration file with name jail.local:

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

Next edit jail.local configuration file in a text editor.

sudo vim /etc/fail2ban/jail.local 

Update the initial settings under the [DEFAULT] section.

  • ignoreip – A list of ip address to ignore from ban by the Fail2ban.
    [DEFAULT]
    
    ignoreip = 127.0.0.1/8 192.168.1.0/24
  • bantime – is the number of seconds that a host is banned.
    bantime = 60m
  • findtime – A host is banned if it has generated “maxretry” during the last “findtime” seconds.
    findtime = 5m
  • maxretry – is the number of failures before a host get banned.
    maxretry = 5

In the next section, you can secure the system services to

Step 3 – Protect SSH/SFTP

After completing default configuration, go down in the same file jail.local and update [ssh-iptables] section as below.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=22, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=info@example.com, sendername="Fail2Ban"]
logpath  = /var/log/secure
maxretry = 3

Step 4 – Protect FTP

Let’s protect your FTP (vsFTPd) server, Find the below entry of [vsftpd-iptables] section and make changes as below. If you are not using vsFTPd, you can skip this section.

[vsftpd-iptables]

enabled  = true
filter   = vsftpd
action   = iptables[name=VSFTPD, port=21, protocol=tcp]
           sendmail-whois[name=VSFTPD, dest=you@example.com]
logpath  = /var/log/vsftpd.log
maxretry = 5
bantime  = 1800

Step 5 – Manage Fail2ban Service

After making all the changes save your file and restart Fail2ban service using the following command.

sudo systemctl restart fail2ban.service 
sudo systemctl enable fail2ban.service 

For testing purposes, I have tried SSH with the wrong credentials from a different machine. After three wrong attempts, Fail2ban blocked that IP via iptables with reject ICMP. You can see the rules in iptables after blocking the IP address as below. For SSH only systems, make sure to have SSH access from another IP before making these tests.

Conclusion

This tutorial helped you to install and configure Fail2ban on Ubuntu 20.04 LTS system. Additioally provided you the configuration details to secure specific services like SSH, SFTP and FTP.

The post How to Install and Configure Fail2ban on Ubuntu 20.04 appeared first on TecAdmin.

Ubuntu Server Admin

Recent Posts

🚀 Deploy Elastic Stack on Ubuntu VPS (5 Minute Quick-Start Guide)

Here’s the guide to deploy Elastic Stack on Ubuntu VPS, with secure access, HTTPS proxying,…

4 days ago

🚀 Deploy Nagios on Ubuntu VPS

This guide walks through deploying Nagios Core on an Ubuntu VPS, from system prep to…

5 days ago

Shoryuken Has a New Maintainer, and v7.0.0 Is Almost There

After a decade under Pablo Cantero's stewardship, Shoryuken has a new maintainer - me. I'm…

1 week ago

A better way to provision NVIDIA BlueField DPUs at scale with MAAS

MAAS 3.7 has been officially released and it includes a bunch of cool new features.…

2 weeks ago

Ruby Floats: When 2.6x Faster Is Actually Slower (and Then Faster Again)

Update: This article originally concluded that Eisel-Lemire wasn't worth it for Ruby. I was wrong.…

2 weeks ago

MicroCeph: why it’s the superior MinIO alternative (and how to use it)

Recently, the team at MinIO moved the open source project into maintenance mode and will…

2 weeks ago