GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y configurar ModSecurity en Apache

Introducción

ModSecurity es un módulo de complemento para Apache que funciona como un firewall. Funciona a través de conjuntos de reglas, que le permiten personalizar y configurar la seguridad de su servidor.

ModSecurity también puede monitorear el tráfico web en tiempo real y ayudarlo a detectar y responder a las intrusiones. Se puede usar con Apache, Nginx e IIF y es compatible con Debian, Ubuntu y CentOS.

Este tutorial explica cómo instalar y configurar ModSecurity en servidores web Apache.

Requisitos previos

  • La pila LAMP (Linux, Apache, MySQL, PHP) instalada y configurada
  • Acceso a una cuenta de usuario con sudo o raíz privilegios
  • Un administrador de paquetes (APT o YUM), incluido por defecto
  • Una línea de comando/ventana de terminal (Ctrl-Alt-T, Ctrl-Alt-F1)
  • Un editor de texto, como nano

Paso 1:Actualizar repositorios de software

Abra una ventana de terminal e ingrese lo siguiente:

En Debian/Ubuntu

sudo apt update -y

En CentOS

sudo yum update -y

Paso 2:Instalación de ModSecurity en Apache

Instalar ModSecurity en Debian

1. En una ventana de terminal, ingrese lo siguiente:

sudo apt install libapache2-modsecurity

Si se le solicita, presione y y pulsa Intro para permitir que el proceso se complete.

2. Reinicie el servicio de Apache:

sudo systemctl restart apache2

No habrá salida si Apache se reinició con éxito.

3. Verifique la versión del software (debe ser 2.8.0 o posterior):

apt-cache show libapache2-modsecurity

Instala ModSecurity en Ubuntu 18.04

1. En una ventana de terminal, ingrese:

sudo apt install libapache2-mod-security2

Si se le solicita, presione y y pulsa Intro para permitir que el proceso se complete.

2. Reinicie el servicio de Apache:

sudo systemctl restart apache2

No habrá salida si Apache se reinició con éxito.

3. Compruebe la versión del software (debe ser 2.8.0 o posterior):

apt-cache show libapache2-mod-security2

Instalar ModSecurity en CentOS 7

1. Introduzca lo siguiente en una ventana de terminal:

sudo yum install mod_security

Si se le solicita, presione y y pulsa Intro para permitir que el proceso se complete.

2. Reinicie el servicio de Apache:

sudo systemctl restart httpd.service

3. Compruebe la versión del software (debe ser 2.8.0 o posterior):

yum info mod_security

Paso:3 Configurar ModSecurity

Tras la instalación, ModSecurity está configurado para registrar eventos de acuerdo con las reglas predeterminadas. Deberá editar el archivo de configuración para ajustar las reglas para detectar y bloquear el tráfico.

El archivo de configuración predeterminado es /etc/modsecurity/modsecurity.conf-recommended.

1. Copie y cambie el nombre del archivo:

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

2. A continuación, cambie el modo de detección de ModSecurity . Primero, vaya a /etc/modsecurity carpeta:

sudo cd /etc/modsecurity

3. Abra el archivo de configuración en un editor de texto (estaremos usando nano):

sudo nano modsecurity.conf

Cerca de la parte superior, debería ver una entrada etiquetada:

SecRuleEngine DetectionOnly

Cambie esto para que diga lo siguiente:

SecRuleEngine On

4. Usa CTRL+X para salir, luego presione y luego Entrar para guardar los cambios.

5. Salga de la carpeta /etc/modsecurity:

cd

6. Reinicie Apache:

En Debian/Ubuntu

sudo systemctl restart apache2

En CentOS

sudo systemctl restart httpd.service

Esto activará ModSecurity utilizando las reglas básicas predeterminadas. En algunas versiones de Linux, esto incluye el conjunto de reglas básicas de OWASP. Sin embargo, esto puede diferir de la última versión mantenida por los desarrolladores.

Paso 4:Descargue las últimas reglas de OWASP ModSecurity

El conjunto de reglas básicas (CRS) más reciente para ModSecurity se mantiene en GitHub.

1. Instala G eso si aún no está incluido en su sistema.

Instale Git en Debian/Ubuntu:

sudo apt install git

Instale Git en CentOS:

sudo yum install git

2. Descargue una copia del CRS:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Esto coloca una copia del directorio como un subdirectorio de su ubicación de trabajo actual.

3. Abra un nuevo directorio:

cd owasp-modsecurity-crs

4. Mueva el archivo crs-setup:

sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

5. Luego mueva el directorio rules/:

sudo mv rules/ /etc/modsecurity

Si encuentra un error al intentar mover este directorio, ingrese:

sudo mkdir /etc/modsecurity/rules
cd rules 
sudo cp *.* /etc/modsecurity/rules

6. A continuación, compruebe su security2.conf archivo para verificar que está configurado para cargar las reglas de ModSecurity:

sudo nano /etc/apache2/mods-enabled/security2.conf

Verifique que tenga las siguientes líneas incluidas y sin comentar:

IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf

Si no están allí, agréguelos. No los duplique, o corre el riesgo de deshabilitar su servicio Apache.

7. Reinicie el servicio de Apache:

En Debian/Ubuntu

sudo systemctl restart apache2

En CentOS

sudo systemctl restart httpd.service

Paso 5:Pruebe la configuración de Apache

1. Abra el archivo de configuración predeterminado de Apache:

sudo nano /etc/apache2/sites-available/000-default.conf

2. Localice el </VirtualHost> etiqueta en la parte inferior y agregue las siguientes líneas:

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"

Puedes cambiar el msg a lo que prefieras.

Guarde y salga del archivo (CTRL+X> y> Entrar ).

3. Reinicie el servicio Apache:

En Debian/Ubuntu

sudo systemctl restart apache2

En CentOS

sudo systemctl restart httpd.service

4. Luego, ingrese el siguiente comando:

curl localhost/index.html?testparam=test

El sistema responde intentando mostrar la página web predeterminada. En lugar del contenido, genera códigos de error y mensajes dentro de las etiquetas:

5. Puede confirmar que ModSecurity funcionó buscando el código 403 en los registros de errores de Apache con el comando:

sudo tail -f /var/log/apache2/error.log

Una de las entradas en la parte inferior debe ser el código de error de ModSecurity:

Prueba ModSecurity y OWASP CRS con Bash Script

Otro método que puede usar para probar ModSecurity es usar una B ceniza guión.

1. Introduzca el siguiente comando en la terminal:

curl localhost/index.html?exec=/bin/bash

La salida muestra los mismos mensajes de error que la última vez.

2. Vuelva a ver el archivo error.log de Apache y encontrará que la regla se activó:

sudo tail -f /var/log/apache2/error.log

El resultado muestra el mensaje de error ModSecurity relacionado con OWASP.

Paso 6:Crear reglas de ModSecurity

A continuación se muestra un ejemplo de prueba de cómo puede usar ModSecurity para bloquear palabras clave específicas en un formulario PHP.

1. Cree un archivo PHP dentro del directorio html con el comando:

sudo nano /var/www//html/test.php

2. Introduzca el siguiente código en el archivo:

<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>

Guarde el archivo y salga.

3. A continuación, cree un nuevo archivo de reglas personalizadas de ModSecurity:

sudo nano /etc/modsecurity/modsecurity_custom_rules.conf

Agregue las siguientes líneas:

SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"

Por supuesto, cambie las palabras clave de la última línea por las que desee.

Guarde el archivo y salga.

4. Vuelva a cargar el servicio Apache:

En Debian/Ubuntu

sudo systemctl restart apache2

En CentOS

sudo systemctl restart httpd.service

5. Inicie el formulario en un navegador web

localhost/test.php

6. Escriba una de las palabras clave de la regla en el formulario. En este ejemplo:ampliar, nigeriano, o oro .

Debería recibir un mensaje de error 403 Prohibido.

También puede consultar el /var/log/apache2/error.log archivo para verificar la acción de ModSecurity.


Ubuntu
  1. Cómo habilitar y configurar el archivo .htaccess en Apache

  2. Cómo instalar Apache en CentOS 8

  3. Cómo instalar Apache en Ubuntu 18.04

  4. Cómo configurar servidores virtuales Apache en Ubuntu 18.04

  5. Cómo configurar hosts virtuales en Apache

Cómo instalar Apache en Ubuntu 20.04 LTS

Cómo instalar ModSecurity Apache en Ubuntu 20.04 LTS

¿Cómo configurar un servidor Apt-cacher?

¿Cómo instalar y configurar Apache 2?

Cómo instalar ModSecurity Apache en Ubuntu 20.04

Cómo instalar Apache en Ubuntu 22.04