Problema
É um caminho sem volta a disponibilização de sistemas para acesso a partir internet por diversas empresas e órgãos. Porém a presença de um firewall simples só protege os sistemas de ataques na camada 4 ou inferior do modelo OSI. Diante disso é de suma importância a implementação de um
Web Application Firewall (WAF), que é um software que monitora em tempo real as requisições feitas aos sistemas por ele protegidos, verificando se existem indícios de ataques ocultos nessas requisições, como SQL Injection, cross-site-scripting (XSS), file inclusion e outros. Caso haja indício de que a requisição contém um ataque o acesso é bloqueado. O WAF não protege o ambiente de todos os ataques possíveis, mas desempenha um papel fundamental na segurança da informação.
Solução proposta
Adoção de uma solução de
WAF opensource chamada
mod_security, por ser a mais bem documentada na internet, mundialmente adotada e se integra naturalmente com o servidor web Apache, também muito comum e bem documentado. Além do mod_security foi adotado o
mod_evasive para tratar de ataques como DDoS (Distributed Denial of Service).
Também faz parte do escopo desse projeto o envio das informações geradas pelo mod_security para o servidor de logs
Graylog para tratamento, visto que não é prático a utilização dos logs do mod_security como estão.
A leitura dos logs do mod_security, tratamento e envio para o Graylog será feita pelos softwares
Filebeat e
Logstash, escolhidos por contarem com um projeto (
bitsofinfo/logstash-modsecurity) que é capaz de tratar os logs do mod_security e delimitar seus campos, facilitando a posterior utilização e leitura no Graylog.
Fluxo da informação
De forma resumida, o mod_security é instalado no servidor de proxy reverso, gera logs ao bloquear requisições maliciosas com dados como: tipo de ataque, IP do atacante, sistema atacado e outros. Por sua vez o Filebeat lê periodicamente o arquivo de logs e envia as atualizações dele para o Logstash. O software Logstash, ao receber os dados do Filebeat aplica uma série de regras de tratamento do projeto logstash-modsecurity, concatenando as linhas do log e separando-o em campos pesquisáveis e só depois, envia o log já organizado para o Graylog, que já tem uma entrada de dados configurada para receber essa informação, exibi-la e até gerar alertas por e-mail para os responsáveis caso desejado.
Escopo
Nesse tutorial não iremos instalar nem configurar nenhuma VM, nem configurar o servidor de proxy reverso com apache e o Graylog. Você já deve ter essas etapas concluídas. No tutorial iremos apenas instalar e configurar os pacotes do mod_security, mod_evasive, Filebeat, Logstash, o plugin logstash-modsecurity e a integração com o Graylog.
O mod_security e o mod_evasive foram instalados no servidor de proxy reverso, que atende às requisições de acesso aos sistemas web, portanto, já tem uma instalação do Apache funcionando e configurada como proxy reverso. O Filebeat e o Logstash também serão instalados no servidor de proxy reverso para facilitar a implantação, mas o Filebeat pode enviar os logs para um servidor diferente com o Logstash instalado.
O Graylog já está instalado e configurado em outro servidor e é utilizado para receber logs de várias aplicações do ambiente.
Diagrama do projeto
Diagrama da infra proposta para esse artigo: