Como restringir um usuário quando o IP que está sendo atingido pertence à CDN (Content Distribution Network)?

Como restringir um usuário quando o IP que está sendo atingido pertence à CDN (Content Distribution Network)?

Proteger um site WordPress contra ataques, especialmente bots e spam, é uma prioridade para garantir a estabilidade e segurança de sua plataforma. Um dos métodos mais eficientes é combinar o uso de uma CDN (Content Delivery Network) completa, como o Cloudflare, com um proxy de nível 7 do modelo OSI, como o HAProxy. Neste guia, discutiremos como você pode utilizar essas tecnologias para mitigar ataques e evitar que bots maliciosos sobrecarreguem seus servidores.

Filtragem de Solicitações Maliciosas com Proxy OSI Nível 7

Um proxy de camada 7, como o HAProxy, é uma solução eficaz para filtrar tráfego e bloquear solicitações suspeitas ou maliciosas antes que elas atinjam seu servidor. Diferente de proxies de camada 4 (que operam na camada de transporte, focando em protocolos como TCP e UDP), um proxy de camada 7 tem uma visão detalhada das solicitações HTTP, o que permite analisar o conteúdo das requisições e aplicar políticas mais refinadas de segurança.

Ferramentas de Mitigação: DenyHosts, Fail2Ban e Banbylog

Para muitos servidores, ferramentas como DenyHosts e Fail2Ban são bastante usadas para detectar e bloquear IPs maliciosos com base em logs de acesso. O DenyHosts opera adicionando IPs maliciosos ao arquivo /etc/hosts.deny, enquanto o Fail2Ban age no nível do firewall, monitorando os logs e criando regras para bloquear IPs diretamente no firewall com iptables.

No entanto, essas soluções podem se tornar ineficientes em servidores de recursos limitados ou em cenários de tráfego intenso, pois dependem da análise contínua dos logs. Foi por isso que ferramentas como o Banbylog foram desenvolvidas para oferecer um monitoramento de logs mais leve e eficiente, focando em aplicações como SSH e WordPress. No entanto, vale ressaltar que Banbylog ainda é um protótipo e não está pronto para ambientes de produção.

Por Que Essas Soluções Não Funcionam com Cloudflare?

Quando usamos o Cloudflare como uma camada de proteção para o WordPress, ele age como um intermediário entre os usuários e o servidor. Isso significa que todos os pedidos que chegam ao seu servidor parecem vir de IPs do Cloudflare, e não do usuário real que está fazendo a solicitação. Esse comportamento torna ineficazes as soluções tradicionais de bloqueio de IPs baseadas em logs, como o Fail2Ban e o DenyHosts, pois você não está vendo o verdadeiro IP do atacante, mas sim um IP de proxy do Cloudflare.

Solução: Usando o HAProxy para Identificar o IP Original do Usuário

Embora o Cloudflare oculte o IP real do usuário por motivos de segurança e desempenho, ele ainda encaminha o IP original no cabeçalho HTTP CF-Connecting-IP. Para extrair esse IP e usá-lo na filtragem de tráfego, uma solução como o HAProxy pode ser usada. O HAProxy opera na camada 7 do modelo OSI, permitindo que você inspecione cabeçalhos HTTP e tome decisões com base neles.

Assim, em vez de bloquear o IP que você vê diretamente no firewall, você pode configurar o HAProxy para identificar o CF-Connecting-IP e aplicar regras de filtragem com base no IP real do usuário.

Entendendo o Modelo OSI e o Papel de Cada Camada

Para entender como o HAProxy e o Cloudflare interagem, é importante compreender o modelo OSI, que divide as funções da rede em camadas:

  • Camada 7 (Aplicação): Aqui estão protocolos como HTTP e FTP, sendo a camada onde o HAProxy opera para inspecionar e manipular solicitações.
  • Camada 4 (Transporte): Protocolos como TCP e UDP residem nesta camada. Ferramentas como iptables operam aqui, bloqueando tráfego com base no IP ou porta.
  • Camada 3 (Rede): Nesta camada, encontramos o roteamento e a entrega de pacotes entre redes. O protocolo IP funciona aqui.

Com o HAProxy operando na camada 7, ele pode ler o conteúdo das solicitações HTTP, como o cabeçalho CF-Connecting-IP, algo que as soluções de firewall baseadas em camada 4, como iptables, não conseguem fazer diretamente.

Configuração de HAProxy com Cloudflare

A configuração do HAProxy para funcionar com o Cloudflare envolve instruí-lo a buscar o cabeçalho CF-Connecting-IP nas requisições que chegam ao servidor. Isso permite que você aplique regras de segurança com base no IP real do usuário, e não no IP do Cloudflare.

Ao configurar o HAProxy, você pode definir políticas para:

  • Bloquear IPs suspeitos com base em padrões de comportamento malicioso.
  • Redirecionar ou limitar solicitações de usuários que excedem um certo número de requisições em um curto período de tempo (mitigando ataques DDoS ou de força bruta).

Testando Configurações com Docker

Uma maneira rápida de testar o HAProxy é utilizando o Docker, que permite inicializar um ambiente isolado de forma rápida e fácil. Isso possibilita realizar ajustes finos na configuração do proxy antes de aplicá-lo em produção.

Utilizando as Ferramentas de Segurança do Cloudflare

Além da configuração do HAProxy, o Cloudflare oferece uma série de ferramentas próprias que ajudam a proteger seu site WordPress, como:

  • Firewall de Aplicações Web (WAF): O WAF do Cloudflare pode detectar e bloquear padrões de tráfego malicioso automaticamente, evitando que ataques cheguem ao seu servidor.
  • Modo "Desafio de Captcha": Para mitigar bots, o Cloudflare pode exigir que certos usuários passem por um desafio de captcha antes de acessar seu site.
  • Rate Limiting: O Cloudflare pode limitar o número de solicitações que um usuário pode fazer em um determinado período, mitigando ataques de negação de serviço (DDoS).

Conclusão

Proteger um site WordPress de ataques requer uma combinação de ferramentas e abordagens. O uso de uma CDN como o Cloudflare, em conjunto com um proxy de camada 7 como o HAProxy, oferece uma solução robusta para mitigar ataques de bots, DDoS e outras ameaças. Utilizando o CF-Connecting-IP e as ferramentas avançadas de segurança do Cloudflare, você pode garantir que seu servidor continue protegido sem sacrificar o desempenho ou a experiência do usuário.

Conteúdo Relacionado

블로그로 돌아가기

댓글 남기기

댓글 게시 전에는 반드시 승인이 필요합니다.