
ModSecurity é um mecanismo de firewall de aplicativo web (WAF) de código aberto e multiplataforma para Apache, IIS e Nginx. Possui uma linguagem de programação robusta baseada em eventos que fornece proteção contra uma série de ataques a aplicativos web e permite monitoramento de tráfego HTTP, registro e análise em tempo real.
O Libmodsecurity é um dos componentes do projeto ModSecurity v3. A base de código da biblioteca serve como interface para os Conectores do ModSecurity, recebendo tráfego web e aplicando o processamento tradicional do ModSecurity. Em geral, fornece a capacidade de carregar/interpretar regras escritas no formato SecRules do ModSecurity e aplicá-las ao conteúdo HTTP fornecido pela sua aplicação através dos Conectores.
Se você está procurando o ModSecurity para Apache (também conhecido como ModSecurity v2.x), ele ainda está em manutenção e disponível aqui.
O Libmodsecurity é uma reescrita completa da plataforma ModSecurity. Quando foi concebido inicialmente, o projeto ModSecurity começou apenas como um módulo Apache. Com o tempo, o projeto foi estendido, devido à demanda popular, para suportar outras plataformas, incluindo (mas não se limitando a) Nginx e IIS. Para atender à crescente demanda por suporte a plataformas adicionais, tornou-se necessário remover as dependências do Apache subjacentes a este projeto, tornando-o mais independente de plataforma.
Como resultado deste objetivo, reestruturamos o Libmodsecurity de modo que ele não dependa mais do servidor web Apache (tanto na compilação quanto durante a execução). Um efeito colateral disso é que, em todas as plataformas, os usuários podem esperar um desempenho aumentado. Além disso, aproveitamos esta oportunidade para estabelecer as bases para algumas novas funcionalidades que os usuários há muito desejam. Por exemplo, pretendemos suportar nativamente logs de auditoria no formato JSON, juntamente com uma série de outras funcionalidades em versões futuras.
O ramo 'ModSecurity' já não contém a lógica tradicional de módulo (para Nginx, Apache e IIS) que tradicionalmente era empacotada toda junta. Em vez disso, este ramo contém apenas a parte da biblioteca (libmodsecurity) para este projeto. Esta biblioteca é consumida pelo que chamamos de 'Conectores', que farão a interface com o seu servidor web e fornecerão à biblioteca um formato comum que ela entende. Cada um destes conectores é mantido como um projeto GitHub separado. Por exemplo, o conector Nginx é fornecido pelo projeto ModSecurity-nginx (https://github.com/owasp-modsecurity/ModSecurity-nginx).
Manter esses conectores separados permite que cada projeto tenha ciclos de lançamento, problemas e árvores de desenvolvimento diferentes. Além disso, significa que quando você instala o ModSecurity v3, você obtém exatamente o que precisa, sem extras que não usará.
Antes de iniciar o processo de compilação, certifique-se de que todas as
dependências necessárias estão instaladas.
Consulte as seções Dependências e Submódulos Git para mais informações.
Após a compilação, certifique-se de que não há problemas na sua
construção/plataforma.
Recomendamos fortemente executar os testes unitários e os testes de regressão.
Esses utilitários de teste estão localizados na subpasta tests/.
Como uma biblioteca dinâmica, o libmodsecurity deve ser instalado em um local
onde seu sistema operacional possa encontrar bibliotecas dinâmicas.
Em sistemas do tipo Unix, o projeto usa autotools para o processo de compilação.
Se você está trabalhando com um checkout git, certifique-se de clonar o
repositório recursivamente ou inicializar todos os submódulos antes de
compilar.
Consulte também a seção Submódulos Git.
git clone https://github.com/owasp-modsecurity/ModSecurity ModSecurity
cd ModSecurity
Este repositório usa submódulos git. Após clonar, certifique-se de inicializar e buscar todos os submódulos:
git submodule update --init --recursive
Você pode verificar se todos os submódulos foram inicializados corretamente com:
git submodule status
Submódulos que foram inicializados corretamente mostram um hash de commit.
Um - à esquerda indica que o submódulo não foi inicializado.
Você pode então iniciar o processo de compilação:
./build.sh
./configure
make
sudo make install
Detalhes sobre compilações específicas para distribuições podem ser encontrados em nossa Wiki: Receitas de Compilação
As informações de compilação para Windows podem ser encontradas aqui.
O processamento de expressões regulares nas SecRules é implementado através
do utilitário Regex (src/utils/regex.*).
Por padrão, o ModSecurity usa PCRE2 para manipulação de regex.
Isso é usado por operadores como @rx, @rxGlobal e @verifyCC.
Comportamento em tempo de compilação:
--with-pcre for explicitamente
fornecido (WITH_PCRE).Em outras palavras, as compilações atuais esperam PCRE2 a menos que explicitamente configurado de outra forma.
Todas as outras dependências estão relacionadas a operadores especificados dentro das SecRules ou diretivas de configuração e podem não ser necessárias para a compilação.
libinjection é necessário para os operadores @detectXSS e @detectSQL.curl é necessário para a diretiva SecRemoteRules.Se essas bibliotecas estiverem ausentes, o ModSecurity será compilado sem suporte para os respectivos operadores ou diretivas.
O repositório inclui os seguintes submódulos:
others/libinjection – usado pelos operadores @detectSQLi e @detectXSS.others/mbedtls (subconjunto TF-PSA-Crypto) – usado para funções
criptográficas e auxiliares (ex.: hashing, base64).