
ModSecurity es un motor de cortafuegos de aplicaciones web (WAF) de código abierto y multiplataforma para Apache, IIS y Nginx. Cuenta con un robusto lenguaje de programación basado en eventos que proporciona protección contra una amplia gama de ataques contra aplicaciones web y permite la monitorización del tráfico HTTP, el registro y el análisis en tiempo real.
Libmodsecurity es uno de los componentes del proyecto ModSecurity v3. El código base de la biblioteca sirve como interfaz para los conectores de ModSecurity, que reciben tráfico web y aplican el procesamiento tradicional de ModSecurity. En general, proporciona la capacidad de cargar/interpretar reglas escritas en el formato SecRules de ModSecurity y aplicarlas al contenido HTTP proporcionado por su aplicación a través de Conectores.
Si busca ModSecurity para Apache (también conocido como ModSecurity v2.x), aún está en mantenimiento y disponible: aquí.
Libmodsecurity es una reescritura completa de la plataforma ModSecurity. Cuando se concibió originalmente, el proyecto ModSecurity comenzó como un simple módulo de Apache. Con el tiempo, el proyecto se ha ampliado, debido a la demanda popular, para soportar otras plataformas que incluyen (pero no se limitan a) Nginx e IIS. Para satisfacer la creciente demanda de soporte para plataformas adicionales, se ha vuelto necesario eliminar las dependencias de Apache subyacentes a este proyecto, haciéndolo más independiente de la plataforma.
Como resultado de este objetivo, hemos rediseñado Libmodsecurity de modo que ya no depende del servidor web Apache (tanto en compilación como en tiempo de ejecución). Un efecto secundario de esto es que en todas las plataformas los usuarios pueden esperar un mayor rendimiento. Además, hemos aprovechado esta oportunidad para sentar las bases de algunas nuevas funcionalidades que los usuarios han estado buscando durante mucho tiempo. Por ejemplo, estamos buscando soportar de forma nativa los registros de auditoría en formato JSON, junto con una serie de otras funcionalidades en versiones futuras.
La rama 'ModSecurity' ya no contiene la lógica de módulo tradicional (para Nginx, Apache e IIS) que tradicionalmente se empaquetaba junta. En cambio, esta rama solo contiene la parte de la biblioteca (libmodsecurity) para este proyecto. Esta biblioteca es consumida por lo que hemos denominado 'Conectores'. Estos conectores interactuarán con su servidor web y proporcionarán a la biblioteca un formato común que ella entienda. Cada uno de estos conectores se mantiene como un proyecto separado en GitHub. Por ejemplo, el conector para Nginx es proporcionado por el proyecto ModSecurity-nginx (https://github.com/owasp-modsecurity/ModSecurity-nginx).
Mantener estos conectores separados permite que cada proyecto tenga diferentes ciclos de lanzamiento, problemas y árboles de desarrollo. Además, significa que cuando instale ModSecurity v3, obtendrá exactamente lo que necesita, sin extras que no utilizará.
Antes de iniciar el proceso de compilación, asegúrese de que todas las dependencias requeridas estén instaladas.
Consulte la sección Dependencias y Submódulos de Git para obtener más información.
Después de la compilación, asegúrese de que no haya problemas en su compilación/plataforma.
Recomendamos encarecidamente ejecutar las pruebas unitarias y las pruebas de regresión. Estas utilidades de prueba se encuentran en la subcarpeta tests/.
Como biblioteca dinámica, libmodsecurity debe instalarse en una ubicación donde su sistema operativo pueda encontrar bibliotecas dinámicas.
En sistemas similares a Unix, el proyecto utiliza autotools para el proceso de compilación.
Si está trabajando con un checkout de git, asegúrese de clonar el repositorio de forma recursiva o inicializar todos los submódulos antes de compilar.
Consulte también la sección Submódulos de Git.
git clone https://github.com/owasp-modsecurity/ModSecurity ModSecurity
cd ModSecurity
Este repositorio utiliza submódulos de git. Después de clonar, asegúrese de inicializar y obtener todos los submódulos:
git submodule update --init --recursive
Puede verificar que todos los submódulos estén correctamente inicializados con:
git submodule status
Los submódulos que están inicializados correctamente muestran un hash de commit.
Un - inicial indica que el submódulo no ha sido inicializado.
Luego puede iniciar el proceso de compilación:
./build.sh
./configure
make
sudo make install
Los detalles sobre compilaciones específicas de distribuciones se pueden encontrar en nuestra Wiki: Recetas de compilación
La información de compilación para Windows se puede encontrar aquí.
El procesamiento de expresiones regulares en SecRules se implementa mediante la utilidad Regex (src/utils/regex.*).
Por defecto, ModSecurity utiliza PCRE2 para el manejo de expresiones regulares.
Esto es utilizado por operadores como @rx, @rxGlobal y @verifyCC.
Comportamiento en tiempo de compilación:
--with-pcre (WITH_PCRE).En otras palabras, las compilaciones actuales esperan PCRE2 a menos que se configure explícitamente lo contrario.
Todas las demás dependencias están relacionadas con operadores especificados dentro de SecRules o directivas de configuración y pueden no ser necesarias para la compilación.
libinjection es necesario para los operadores @detectXSS y @detectSQL.curl es necesario para la directiva SecRemoteRules.Si faltan esas bibliotecas, ModSecurity se compilará sin soporte para los operadores o directivas respectivos.
El repositorio incluye los siguientes submódulos:
others/libinjection – utilizado por los operadores @detectSQLi y @detectXSS.