Skip to main content

Configure ModSecurity

Hands-On Lab

 

Photo of

Training Architect

Length

00:45:00

Difficulty

Intermediate

The goal for this lab is to configure ModSecurity for the Apache web server. There are a few things you need to keep in mind before you start the lab. Take into consideration that firewalld is up and running and that ports 61613, 80, and 65535 are open. Port 61613 is your SSH port where you will connect. Apache is running on port 80, and the back end is functioning on port 65535. SELinux is in enforcing mode. The objective of the lab is to install ModSecurity from the repositories, load it, and instruct Apache to use it. Lastly, install ModSecurity to use OWASP rules in order to apply them against traffic.

What are Hands-On Labs?

Hands-On Labs are scenario-based learning environments where learners can practice without consequences. Don't compromise a system or waste money on expensive downloads. Practice real-world skills without the real-world risk, no assembly required.

Configure ModSecurity

Introduction

The goal for this lab is to configure ModSecurity for the Apache web server. There are a few things you need to keep in mind before you start the lab. Take into consideration that firewalld is up and running and that ports 61613, 80, and 65535 are open. Port 61613 is your SSH port where you will connect. Apache is running on port 80, and the back end is functioning on port 65535. SELinux is in enforcing mode. The objective of the lab is to install ModSecurity from the repositories, load it, and instruct Apache to use it. Lastly, install ModSecurity to use OWASP rules in order to apply them against traffic.

Solution

Log in to the lab server via SSH using the credentials provided:

ssh cloud_user@<SERVER_IP_ADDRESS> -p 61613

Install mod_security

  1. Install mod_security from the repositories:

    sudo yum install mod_security

Configure OWASP Core Rule Set (CRS)

  1. Make a crs directory:

    sudo mkdir /etc/httpd/crs
  2. Navigate to the new directory:

    cd /etc/httpd/crs
  3. Install Git:

    sudo yum install git
  4. Clone a Git repository for OWASP CRS:

    sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
  5. Configure the new repository:

    sudo cd /etc/httpd/crs/owasp-modsecurity-crs/
  6. Make a copy of crs-setup.conf.example and rename it to crs-setup.conf:

    sudo cp crs-setup.conf.example crs-setup.conf

Inform Apache of the Changes

  1. Open the configuration file:

    sudo vim /etc/httpd/conf/httpd.conf
  2. Insert at the bottom of the file:

    <IfModule security2_module>
       Include /etc/httpd/crs/owasp-modsecurity-crs/crs-setup.conf
       Include /etc/httpd/crs/owasp-modsecurity-crs/rules/*.conf
    </IfModule>
  3. Save and close:

    ESC
    :wq
    ENTER

Restart Apache and Run a Few Tests to Confirm mod_security Is Working Properly

  1. Restart the Apache service:

    sudo systemctl restart httpd
  2. Run a test (replace <SERVER_IP_ADDRESS> with the server IP address on the lab page):

    curl -i http://<SERVER_IP_ADDRESS>/index.html -A Nessus

    You should receive a 403 Forbidden error.

  3. Enter http://<SERVER_IP_ADDRESS>/index.html into a new browser tab. We should see it's a functional site.

Conclusion

Congratulations on successfully completing this hands-on lab!