Protect Apache Against Brute Force or DDoS Attacks Using Mod_Security and Mod_evasive Modules
by Gabriel Cánepa | Published: February 7, 2015 | Last Updated: February 12, 2015
For those of you in the hosting business, or if you’re hosting your own servers and exposing them to the Internet, securing your systems against attackers must be a high priority.
mod_security (an open source intrusion detection and prevention engine for web applications that integrates seamlessly with the web server) and mod_evasive are two very important tools that can be used to protect a web server against brute force or (D)DoS attacks.
mod_evasive, as its name suggests, provides evasive capabilities while under attack, acting as an umbrella that shields web servers from such threats.
Install Mod_Security and Mod_Evasive to Protect Apache
In this article we will discuss how to install, configure, and put them into play along with Apache on RHEL/CentOS 6 and 7 as well as Fedora 21-15. In addition, we will simulate attacks in order to verify that the server reacts accordingly.
This assumes that you have a LAMP server installed on your system. If not, please check this article before proceeding further.
You will also need to setup iptables as the default firewall front-end instead of firewalld if you’re running RHEL/CentOS 7 or Fedora 21. We do this in order to use the same tool in both RHEL/CentOS 7/6 and Fedora 21.
Step 1: Installing Iptables Firewall on RHEL/CentOS 7 and Fedora 21
To begin, stop and disable firewalld:
Disable Firewalld Service
Then install the iptables-services package before enabling iptables:
Install Iptables Firewall
Step 2: Installing Mod_Security and Mod_evasive
In addition to having a LAMP setup already in place, you will also have to enable the EPEL repository in RHEL/CentOS 7/6 in order to install both packages. Fedora users don t need to enable any repo, because epel is a already part of Fedora project.
When the installation is complete, you will find the configuration files for both tools in /etc/httpd/conf.d.
mod_security + mod_evasive Configurations
Now, in order to integrate these two modules with Apache and have it load them when it starts, make sure the following lines appear in the top level section of mod_evasive.conf and mod_security.conf, respectively:
Note that modules/mod_security2.so and modules/mod_evasive24.so are the relative paths, from the /etc/httpd directory to the source file of the module. You can verify this (and change it, if needed) by listing the contents of the /etc/httpd/modules directory:
Verify mod_security + mod_evasive Modules
Then restart Apache and verify that it loads mod_evasive and mod_security:
Check mod_security + mod_evasive Modules Loaded