Pesquisa de site

Como configurar o ModSecurity com Apache no Debian/Ubuntu


O servidor web Apache é altamente personalizável e pode ser configurado de diversas maneiras para atender às suas necessidades. Existem muitos módulos de terceiros que você pode usar para configurar o Apache de acordo com sua preferência.

ModSecurity é um WAF (Web Application Firewall) de código aberto nativo do servidor web Apache. Inicialmente era apenas um módulo Apache, mas cresceu ao longo do ano para se tornar um firewall de aplicativo da web completo. Agora é suportado pelo Nginx e até pelo IIS.

ModSecurity inspeciona as solicitações recebidas no servidor web em relação a um conjunto predefinido de regras. Normalmente, ele fornece um conjunto de regras conhecido como CRS (Core Rule Set) que protege um site de uma série de ataques de aplicativos da web, como injeção de SQL, XSS e ataques de sessão. sequestro entre outras explorações.

O firewall do aplicativo ModSecurity é parte integrante da conformidade com o PCI DSS na proteção de sites contra ataques externos. Quando o módulo é habilitado, ele aciona um ‘403 Erro Proibido’ que simplesmente implica que você não tem permissões suficientes para acessar o recurso no servidor web.

Neste guia, mostraremos como instalar e configurar o ModSecurity para funcionar com o Apache no Debian e no Ubuntu >Linux.

Passo 1: Instale o ModSecurity no Ubuntu

O primeiro passo é instalar o ModSecurity. Começaremos, primeiro, atualizando as listas de pacotes da seguinte forma:

sudo apt update

Em seguida, instale o pacote ModSecurity junto com outras dependências e bibliotecas.

sudo apt install libapache2-mod-security2

Depois, habilite o módulo.

sudo a2enmod security2

Em seguida, reinicie o servidor web Apache para aplicar as alterações.

sudo systemctl restart apache2

Neste ponto, o ModSecurity foi instalado com sucesso. Vamos agora configurá-lo.

Etapa 2: configurar o ModSecurity no Ubuntu

Por padrão, o ModSecurity é configurado apenas para detectar e registrar atividades suspeitas. Precisamos dar um passo a mais e configurá-lo para não apenas detectar, mas também bloquear atividades suspeitas.

Copie o arquivo de configuração ModSecurity padrão – modsecurity.conf-recommended – para um novo arquivo conforme fornecido no comando abaixo.

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

Usando seu editor de texto preferido, abra o arquivo

sudo nano /etc/modsecurity/modsecurity.conf

Localize a linha:

SecRuleEngine DetectionOnly

Defina como:

SecRuleEngine On

Salve as alterações e saia do arquivo.

Para aplicar as alterações no Apache, reinicie o servidor web.

sudo systemctl restart apache2

Etapa 3: Baixe o conjunto de regras principais do OWASP ModSecurity

A próxima etapa é baixar o OWASP ModSecurity Core Rule Set (CRS) mais recente na página do GitHub.

Clone o repositório git OWASP conforme mostrado.

git clone https://github.com/coreruleset/coreruleset.git

Navegue até o diretório.

cd coreruleset/

Certifique-se de mover o arquivo crs-setup.conf.example para o diretório modsecurity e renomeá-lo como crs-setup.conf.

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

Além disso, mova o diretório rules para o diretório modsecurity também.

sudo mv rules/ /etc/modsecurity/

Em seguida, edite o arquivo security2.conf.

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

Certifique-se de que contém as seguintes linhas.

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

Em seguida, reinicie o Apache para que as alterações persistam.

sudo systemctl restart apache2

Vamos agora testar nossa configuração do ModSecurity.

Etapa 4: Testando a configuração do ModSecurity no Ubuntu

Por último, precisamos testar se o ModSecurity pode detectar e bloquear tráfego HTTP suspeito. Para conseguir isso, precisamos editar o arquivo host virtual padrão.

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

A seguir, criaremos uma regra de bloqueio que bloqueará o acesso a uma determinada URL quando acessada por um navegador web.

Anexe essas linhas no final, antes da tag de fechamento ‘Virtualhost’.

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"

Sinta-se à vontade para definir as tags ‘id’ e ‘msg’ com quaisquer valores desejados.

Em seguida, reinicie o servidor web Apache para aplicar as alterações feitas no arquivo de configuração do host virtual.

sudo systemctl restart apache2

No seu navegador, tente visitar o URL mostrado com ?testparam=test no final.

http://server-ip/?testparam=test

Você recebe um '403 Erro proibido' indicando que seu acesso ao recurso foi bloqueado.

Você pode confirmar ainda que o cliente foi bloqueado verificando os logs de erros da seguinte maneira.

cat /var/log/apache2/error.log | grep “Test Successful”

Esta é a confirmação de que configuramos com sucesso o ModSecurity para detectar e bloquear tráfego indesejado. Neste guia, orientamos você no processo de configuração do ModSecurity com o Apache em sistemas Debian/Ubuntu.