Proteja o Apache contra ataques de força bruta ou DDoS usando módulos mod_security e mod_evasive

Proteja o Apache contra ataques de força bruta ou DDoS usando módulos mod_security e mod_evasive

Para aqueles de vocês no negócio de hospedagem, ou se você estiver hospedando seus próprios servidores e expondo -os à Internet, protegendo seus sistemas contra atacantes devem ser uma alta prioridade.

mod_security (Detecção de intrusões e mecanismo de prevenção de intrusões de código aberto para aplicativos da Web que se integra perfeitamente ao servidor da web) e mod_evasive são duas ferramentas muito importantes que podem ser usadas para proteger um servidor da web contra força bruta ou (d) ataques do DOS.

Artigo relacionado: Como instalar o malware Linux Detectar com o mecanismo clamav como antivírus

mod_evasive, Como o seu nome sugere, fornece recursos evasivos durante o ataque, agindo como um guarda -chuva que protege os servidores da Web de tais ameaças.

Instale mod_security e mod_evasive para proteger o Apache

Neste artigo, discutiremos como instalar, configurar e colocá -los em jogo junto com o Apache no RHEL/CENTOS 8 e 7 assim como Fedora. Além disso, simularemos ataques para verificar se o servidor reage de acordo.

Isso pressupõe que você tenha um servidor de lâmpadas instalado em seu sistema. Caso contrário, verifique este artigo antes de prosseguir.

  • Como instalar o Lamp Server no CentOS 8
  • Como instalar a pilha de lâmpadas no RHEL/CENTOS 7

Você também precisará configurar iptables como o front-end do firewall padrão em vez de firewalld, se você estiver correndo RHEL/CENTOS 8/7 ou Fedora. Fazemos isso para usar a mesma ferramenta em ambos RHEL/CENTOS 8/7 e Fedora.

Etapa 1: Instalando o Firewall iptables no RHEL/CENTOS 8/7 e Fedora

Para começar, parar e desativar Firewalld:

# SystemCtl Stop firewalld # SystemCtl Desativar firewalld 
Desative o serviço firewalld

Em seguida, instale o iptables services pacote antes de ativar iptables:

# yum update && yum install iptables-services # SystemCtl Ativar iptables # SystemCtl Iniciar iptables # Systemctl status iptables 
Instale o firewall iptables

Etapa 2: Instalando mod_security e mod_evasive

Além de já ter uma configuração de lâmpada, você também terá que permitir o repositório EPEL em RHEL/CENTOS 8/7 Para instalar os dois pacotes. Os usuários do Fedora não precisam ativar nenhum repositório, porque o EPEL já faz parte do projeto Fedora.

# yum update && yum install mod_security mod_evasive ---------------.Dyn.su/el8/base/x86_64/Raven-Release-1.0-1.EL8.Noarch.rpm # dnf --enableRepo = Raven-extras install mod_evasive 

Quando a instalação estiver concluída, você encontrará os arquivos de configuração das duas ferramentas em /etc/httpd/conf.d.

# ls -l/etc/httpd/conf.d 
mod_security + mod_evasive configurações

Agora, a fim de integrar esses dois módulos com Apache e peça para carregá-los quando começar, verifique se as seguintes linhas aparecem na seção de nível superior de mod_evasive.conf e mod_security.conf, respectivamente:

LoadModule evasive20_module módulos/mod_evasive24.Então LoadModule Security2_module Módulos/mod_security2.então 

Observe que Módulos/mod_security2.então e Módulos/mod_evasive24.então são os caminhos relativos, do /etc/httpd diretório para o arquivo de origem do módulo. Você pode verificar isso (e alterá -lo, se necessário) listando o conteúdo do /etc/httpd/módulos diretório:

# cd/etc/httpd/módulos # pwd # ls -l | grep -ei '(evasivo | segurança)' 
Verifique os módulos mod_security + mod_evasive

Em seguida, reinicie o Apache e verifique se ele carrega mod_evasive e mod_security:

# SystemCtl Reiniciar httpd 

Despejar uma lista de módulos estáticos e compartilhados carregados.

# httpd -m | grep -ei '(evasivo | segurança)' 
Verifique Mod_Security + Mod_evasive Módulos carregados

Etapa 3: Instalando um conjunto de regras do núcleo e configuração mod_security

Em poucas palavras, um Conjunto de regras central (também conhecido como Crs) fornece ao servidor da web instruções sobre como se comportar sob determinadas condições. A empresa de desenvolvedores de mod_security fornece um grátis Crs chamado OWASP (Open Web Application Security Project) ModSecurity CRS que pode ser baixado e instalado da seguinte forma.

1. Faça o download do OWASP CRS para um diretório criado para esse fim.

# mkdir/etc/httpd/crs-tecmint # cd/etc/httpd/crs-tecmint # wget -c https: // github.com/spiderlabs/owasp-modsecurity-Crs/Archive/V3.2.0.alcatrão.GZ -O Mestre 
Download Mod_Security Core Regras

2. U até o Crs Arquive e altere o nome do diretório para uma de nossa conveniência.

# tar xzf mestre # mv owasp-modsecurity-crs-3.2.0 OWASP-Modsecurity-Crs 

3. Agora é hora de configurar mod_security. Copie o arquivo de amostra com regras (OWASP-Modsecurity-CRS/ModSecurity_CRS_10_Setup.conf.exemplo) em outro arquivo sem o .exemplo extensão:

# CD OWASP-Modsecurity-CRS/ # CP CRS-SETUP.conf.Exemplo CRS-setup.conf 

e diga Apache Para usar este arquivo junto com o módulo inserindo as seguintes linhas no arquivo de configuração principal do servidor da Web /etc/httpd/conf/httpd.conf arquivo. Se você optar por descompactar o tarball em outro diretório, precisará editar os caminhos após as diretivas de inclusão:

 Inclua CRS-Tecmint/Owasp-Modsecurity-CRS/CRS-SETUP.Conf incluem CRS-Tecmint/OWASP-Modsecurity-Crs/Regras/*.conf  

Finalmente, é recomendável que criemos nosso próprio arquivo de configuração dentro do /etc/httpd/modsecurity.d diretório onde colocaremos nossas diretivas personalizadas (nós o nomearemos Tecmint.conf no exemplo seguinte) em vez de modificar o Crs arquivos diretamente. Fazer isso permitirá uma atualização mais fácil do CRSS, à medida que novas versões são lançadas.

 SecruleenGine on SecrequestbodyAccess em SecremponseBodyAccess em SecremponseBodyMimetype Text/TEXTO DE PLAY/HTML TEXTO/XML APLICAÇÃO/OCTT-FREAM SECDATADIR/TMP  

Você pode se referir ao repositório de GitHub do Spiderlabs para um guia explicativo completo de mod_security Diretivas de configuração.

Etapa 4: Configurando mod_evasive

mod_evasive é configurado usando diretrizes em /etc/httpd/conf.d/mod_evasive.conf. Como não há regras a serem atualizadas durante uma atualização do pacote, não precisamos de um arquivo separado para adicionar diretivas personalizadas, em oposição a mod_security.

O padrão mod_evasive.conf O arquivo possui as seguintes diretivas ativadas (observe que este arquivo é fortemente comentado, por isso despojamos os comentários para destacar as diretivas de configuração abaixo):

 DoshashTablesize 3097 DospageCount 2 DossiteCount 50 DospageInterval 1 DossiteInterval 1 DosblockingPeriod 10  

Explicação das diretivas:

  • DoshashTablesize: Esta diretiva especifica o tamanho da tabela de hash que é usada para acompanhar a atividade com base no endereço IP. Aumentar esse número fornecerá uma pesquisa mais rápida dos sites que o cliente visitou no passado, mas poderá afetar o desempenho geral se estiver muito alto.
  • DospageCount: Número legítimo de solicitações idênticas a um URI específico (por exemplo, qualquer arquivo que esteja sendo servido pelo Apache) que pode ser feito por um visitante sobre o intervalo DospageInterval.
  • DossiteCount: Semelhante ao DospageCount, mas refere -se a quantas solicitações gerais podem ser feitas em todo o site sobre o intervalo do DossiteInterval.
  • DosblockingPeriod: Se um visitante exceder os limites estabelecidos por DosspageCount ou DossiteCount, seu endereço IP de origem estará na lista negra durante o período de tempo do DosblockingPeriod. Durante o DosblockingPeriod, quaisquer solicitações provenientes desse endereço IP encontrarão um erro 403 proibido.

Sinta -se à vontade para experimentar esses valores, para que seu servidor da web possa lidar com a quantidade necessária e o tipo de tráfego.

Apenas uma pequena ressalva: Se esses valores não forem definidos corretamente, você corre o risco de acabar bloqueando visitantes legítimos.

Você também pode considerar outras diretivas úteis:

Dosemailnotify

Se você tiver um servidor de correio em funcionamento, pode enviar mensagens de aviso via Apache. Observe que você precisará conceder a permissão do usuário do Apache Selinux para enviar e -mails se o Selinux estiver definido para fazer cumprir. Você pode fazer isso correndo

# setsebool -p httpd_can_sendmail 1 

Em seguida, adicione esta diretiva no mod_evasive.conf Arquivo com o restante das outras diretrizes:

Dosemailnotify [Email Protected] 

Se esse valor estiver definido e seu servidor de email estiver funcionando corretamente, um email será enviado para o endereço especificado sempre que um endereço IP estiver na lista negra.

DossystemCommand

Isso precisa de um comando do sistema válido como argumento,

DossystemCommand  

Esta diretiva especifica um comando a ser executado sempre que um endereço IP se torna na lista negra. É frequentemente usado em conjunto com um script de shell que adiciona uma regra de firewall para bloquear outras conexões provenientes desse endereço IP.

Escreva um script de shell que lida com a lista negra de IP no nível do firewall

Quando um endereço IP se torna na lista negra, precisamos bloquear conexões futuras vindo dele. Usaremos o seguinte script de shell que executa este trabalho. Crie um diretório nomeado Scripts-Tecmint (ou qualquer nome de sua escolha) em /usr/local/bin e um arquivo chamado ban_ip.sh nesse diretório.

#!/bin/sh # ip que será bloqueado, conforme detectado por mod_evasive ip = $ 1 # caminho completo para iptables iptables = "/sbin/iptables" # mod_evasive Lock Directory mod_evasive_logdir =/var/log/mod_evasive # Adicione a seguinte regra do firewall ( Bloqueie todo o tráfego proveniente de $ ip) $ iptables -i entrada -s $ ip -j drop # Remover arquivo de bloqueio para cheques futuros rm -f "$ mod_evasive_logdir"/DOS -"$ ip" 

Nosso DossystemCommand A diretiva deve ler o seguinte:

DossystemCommand "sudo/usr/local/bin/scripts-tecmint/ban_ip.sh %s " 

Na linha acima, %s representa o IP ofensivo, conforme detectado por mod_evasive.

Adicione o usuário do Apache ao arquivo sudoers

Observe que tudo isso simplesmente não funcionará, a menos que você dê permissões ao usuário apache Para executar nosso script (e apenas esse script!) sem um terminal e senha. Como sempre, você pode apenas digitar Visudo como raiz para acessar o /etc/sudoers Arquive e adicione as 2 linhas a seguir, conforme mostrado na imagem abaixo:

Apache all = nopoasswd:/usr/local/bin/scripts-tecmint/ban_ip.Padrões de SH: Apache !requertty 
Adicione o usuário do Apache aos sudoers

IMPORTANTE: Como uma política de segurança padrão, você só pode executar sudo em um terminal. Como neste caso, precisamos usar sudo sem a tty, Temos que comentar a linha destacada na imagem a seguir:

#Defaults Requetty 
Desative o TTY para sudo

Finalmente, reinicie o servidor da web:

# SystemCtl Reiniciar httpd 

Etapa 4: Simulando um DDoS ataques ao Apache

Existem várias ferramentas que você pode usar para simular um ataque externo em seu servidor. Você pode apenas pesquisar no Google para “Ferramentas para simular ataques de DDOs”Para encontrar vários deles.

Observe que você e somente você será responsabilizado pelos resultados de sua simulação. Nem pense em lançar um ataque simulado a um servidor que você não está hospedando em sua própria rede.

Se você quiser fazer o mesmo com um VPS hospedado por outra pessoa, você precisa avisar adequadamente seu provedor de hospedagem ou pedir permissão para que essa inundação de tráfego passasse por suas redes. Tecmint.com Não é, de forma alguma, responsável por seus atos!

Além disso, o lançamento de um ataque de DOS simulado de apenas um host não representa um ataque da vida real. Para simular isso, você precisaria segmentar seu servidor de vários clientes ao mesmo tempo.

Nosso ambiente de teste é composto de um CENTOS 7 servidor [IP 192.168.0.17] e um host do Windows do qual lançaremos o ataque [IP 192.168.0.103]:

Confirme o host ipaddress

Reproduza o vídeo abaixo e siga as etapas descritas na ordem indicada para simular um ataque simples do DOS:

Em seguida, o IP ofensivo é bloqueado por iptables:

IP do atacante bloqueado

Conclusão

Com mod_security e mod_evasive ativado, o ataque simulado causa o CPU e BATER Para experimentar um pico de uso temporário por apenas alguns segundos antes que a fonte IPS esteja na lista negra e bloqueada pelo firewall. Sem essas ferramentas, a simulação certamente derrubará o servidor muito rápido e a tornará inutilizável durante a duração do ataque.

Gostaríamos muito de saber se você está planejando usar (ou já usado no passado) essas ferramentas. Sempre esperamos ouvir de você, então não hesite em deixar seus comentários e perguntas, se houver, usando o formulário abaixo.

Links de referência

https: // www.ModSecurity.org/