- Advertisement -
VPS House Servers
VPS House Servers
VPS House Servers

Most Linux servers offer an SSH login via Port 22 for remote administration purposes. This port is a well-known port, therefore, it is often attacked by brute force attacks. Fail2ban is a software that scans log files for brute force login attempts in real-time and bans the attackers with firewalld or iptables. Fail2ban recognizes unwanted access or security breach efforts to the server within the administrator set time frame and blocks the IP addresses which show signs of brute force attacks or dictionary attacks. This program works in the background and continuously scans the log files for unusual login patterns and security breach attempts.

This tutorial shows the installation and configuration of Fail2Ban with firewalld on CentOS 7.

Installing Fail2Ban

To install Fail2Ban on CentOS 7, we will have to install EPEL (Extra Packages for Enterprise Linux) repository first. EPEL contains additional packages for all CentOS versions, one of these additional packages is Fail2Ban.

The following commands must be executed after switching to the root user.

If you have SELinux installed, then update the SELinux policies:

- Advertisement -
VPS House Cloud Servers
VPS House Cloud Servers
VPS House Cloud Servers


Configure settings for Fail2Ban

Once installed, we will have to configure and customize the software with a jail.local configuration file. The jail.local file overrides the jail.conf file and is used to make your custom configuration update safe.

Make a copy of the jail.conf file and save it with the name jail.local:

Open the jail.local file for editing in Nano with the following command.

The file code may consist of many lines of codes which execute to prevent a ban on one or many IP addresses, set bantime duration, etc. A typical jail configuration file contains the following lines.

Ignoreip is used to set the list of IPs which will not be banned. The list of IP addresses should be given with a space separator. This parameter is used to set your personal IP address (if you access the server from a fixed IP).

Bantime parameter is used to set the duration of seconds for which a host needs to be banned.

Findtime is the parameter which is used to check if a host must be banned or not. When the host generates maxrety in its last findtime, it is banned.

Maxretry is the parameter used to set the limit for the number of retry’s by a host, upon exceeding this limit, the host is banned.


Add a jail file to protect SSH

Create a new file with the Nano editor

To the above file, add the following lines of code.

Parameter enabled is set to true, in order to provide protection, to deactivate protection, it is set to false. The filter parameter checks the sshd configuration file, located in the path /etc/fail2ban/filter.d/sshd.conf.

The parameter action is used to derive the IP address which needs to be banned using the filter available from /etc/fail2ban/action.d/firewallcmd-ipset.conf.

Port parameter may be changed to a new value such as port=1212, as is the case. When using port 22, there is no need to change this parameter.

Logpath provides the path where the log file is stored. This log file is scanned by Fail2Ban.

Maxretry is used to set the maximum limit for failed login entries.

Bantime parameter is used to set the duration of seconds for which a host needs to be banned.


Running Fail2Ban service

When you are not running the CentOS Firewall yet, then start it:

Execute the following lines of command to run the protective Fail2Ban software on the server.


Tracking Failed login entries

The following command is used to check whether there had been failed attempts to login to sever via ssh port.

Executing above command will get a list of failed root password attempts from different IP addresses. The format of results will be similar to the one showed below:


Checking the banned IPs by Fail2Ban

The following command is used to get a list of banned IP addresses which were recognized as brute force threats.


Check the Fal2Ban Status

Use the following command to check the status of the Fail2Ban jails:

The result should be similar to this:

[root@htf ]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd


Unbanning an IP address

In order to remove an IP address from the banned list, parameter IPADDRESS is set to appropriate IP which needs unbanning. The name “sshd” is the name of the jail, in this case the “sshd” jail that we configured above. The following command does the job.

- Advertisement -

There are no comments yet

  • Hello, guest