AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1160808
Accepted
inersha
inersha
Asked: 2024-06-12 04:38:35 +0800 CST2024-06-12 04:38:35 +0800 CST 2024-06-12 04:38:35 +0800 CST

Qual é o melhor método para implementar a limitação de taxa com o Apache?

  • 772

Estou executando um servidor web Apache e gostaria de adicionar alguns limites de taxa simples por endereço IP individual.

No momento, estou recebendo o que parecem ser muitas solicitações de bot chegando ao site e isso está retardando um pouco as solicitações normais.

Eu gostaria de poder adicionar limitação de taxa para desacelerar os bots, ao mesmo tempo que não impede os rastreamentos do Googlebot quando ele aparece. Suponho que algo em torno de 20.000 solicitações/hora por IP deve bastar, provavelmente menos.

De qualquer forma, qual é o método mais simples para adicionar limitação de taxa ao Apache?

Até agora encontrei algumas opções:

  • mod_security
  • mod_evasive
  • mod_ratelimit
  • mod_limitpconn

Mas não parece haver uma solução clara e óbvia.

Alternativamente, parece que usar o Nginx como proxy reverso (e usar a limitação de taxa incorporada a ele) seria outra opção viável. Parece mais fácil de implementar do que o que descobri até agora também para o Apache. Embora eu prefira usar o Apache apenas se houver uma solução simples que esteja faltando.

Fail2Ban parece ser outra solução simples, mas não tenho certeza se poderia usá-lo para retornar 429códigos de resposta quando um visitante atingir o limite de taxa.

O que você recomendaria?

apache2
  • 1 1 respostas
  • 116 Views

1 respostas

  • Voted
  1. Best Answer
    inersha
    2024-06-13T03:31:27+08:002024-06-13T03:31:27+08:00

    mod_evasive

    Achei mod_evasivea solução mais simples e eficaz para limitação de taxa simples.

    Foi mais fácil de configurar do que eu esperava e é a melhor solução que encontrei entre todas as opções do Apache (em oposição ao esforço de configurar o Nginx como um proxy reverso).

    Este é o repositório do mod:

    https://github.com/jzdziarski/mod_evasive

    Como alternativa, existe um fork um pouco mais recente que permite retornar um código de resposta de 429(em vez 503da versão original). Isso é preferível para permitir que bots como o Google saibam que estão atingindo seu limite de taxa e para ajustar sua taxa de rastreamento de acordo:

    https://github.com/jvdmr/mod_evasive

    Eu optei pela segunda opção.

    Instalar

    O mod pode ser baixado e instalado com:

    wget https://github.com/jvdmr/mod_evasive/releases/download/2.2.0/libapache2-mod-evasive.deb
    sudo dpkg -i libapache2-mod-evasive.deb
    

    Você pode verificar se ele foi instalado usando:

    sudo a2enmod evasive
    

    Configuração

    Use a seguinte configuração em seu arquivo de configuração do host virtual (por exemplo, /etc/apache2/sites-available/000-default.conf) para começar:

    DOSEnabled true
    DOSHashTableSize 1000
    DOSPageCount 10
    DOSPageInterval 1
    DOSSiteCount 50
    DOSSiteInterval 5
    DOSBlockingPeriod 20
    DOSHTTPStatus 429
    

    Isso retornará um código de resposta 429 se alguém solicitar a mesma página 10 vezes em 1 segundo ou fizer 50 solicitações no site em 5 segundos . Ajuste esses números conforme necessário.

    Eles serão então bloqueados por 20 segundos . Você pode definir um período de bloqueio bastante pequeno, pois esse período continuará se estendendo se eles fizerem novas solicitações de limitação de taxa enquanto ainda estiverem bloqueados.

    Este link explica as configurações: https://www.linode.com/docs/guides/modevasive-on-apache/

    Correndo

    Depois de salvar sua configuração, basta reiniciar o Apache:

    sudo service apache2 restart
    

    Você pode então verificar os IPs banidos mais recentemente syslog(não acredito que os IPs banidos do mod_evasive sejam gravados em seus próprios arquivos):

    cat /var/log/syslog | grep mod_evasive
    

    Até agora está funcionando bem e, pelo que descobri, é o melhor mod de todas as opções disponíveis para limitação simples de taxa por IP no Apache.

    • 0

relate perguntas

  • Acessando o servidor web do servidor na rede local com seu endereço IP local

  • Como posso encaminhar solicitações do meu servidor web?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve