Limite o número de pedidos para um conjunto específico de URLs por endereço IP

3

Estou trabalhando em um site, que permitirá downloads para usuários, haverá cerca de 2.000.000 de arquivos que podem ser baixados.

Desencorajamos as pessoas a rastrearem e levarem todos esses documentos. Assim, gostaríamos de limitar o número de solicitações em que o servidor continha um padrão de URL ao longo de um determinado limite de tempo. Estamos felizes que o restante do site seja rastreado, por isso não queremos limitar isso.

Estamos colocando uma exclusão no robots.txt para evitar que os rastreadores recebam os arquivos. Estamos mais preocupados com rastreadores mal-intencionados ou mal-comportados.

Gostaríamos de usar o apache para limitar o número de downloads dos documentos a cerca de 1 por minuto por endereço IP.

Existe uma maneira de praticar melhor isso?

estamos usando o Centos com o apache2.2

Existem muitas questões semelhantes, mas a maioria delas parece centrar-se na limitação de largura de banda, o que não é o que eu quero.

    
por Jeremy French 25.03.2011 / 12:14

3 respostas

3

Eu não acho que exista um módulo para limitar as conexões por tempo por IP. Mas você deve jogar um pouco com limitipconn e mod_cband ... provavelmente juntos podem fazer isso. Ou você pode usar o limitipconn com o iptables.

Para fazer isso provavelmente você deve usar o iptables:

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 1/minute -j ACCEPT

Eu não testei esta regra, é apenas uma dica para o que você deve procurar.

Se você usar o iptables, deverá ter 2 ip's e hosts virtuais diferentes para o seu site principal e sua seção de documentos, para limitar apenas o ip (host virtual) para documentos.

Atenciosamente

    
por 25.03.2011 / 13:13
3

Você deve poder usar o mod_evasive, onde você pode limitar quantas solicitações um endereço IP pode fazer para um URI ou site específico em um determinado período de tempo.

Se um endereço IP exceder esse limite, ele será bloqueado por um período de tempo e receberá um erro 403 se o usuário tentar acessar o URI novamente. Você também pode enviar e-mails ou executar script quando um endereço IP excede o limite.

Para mais informações: link

    
por 27.06.2014 / 08:57
0

Você parece querer fazer algo semelhante a sites como o RapidShare. Tanto quanto sei, você não pode fazer isso dentro dos arquivos de configuração do Apache; ele exigirá pelo menos scripts do lado do servidor (provável PHP) com um banco de dados pequeno para rastrear solicitações e atender aos downloads se o usuário atender aos critérios.

Aqui está um exemplo com PHP e MySQL que precisa ser adaptado um pouco para se adequar à sua situação:

O código acima limita o número de conexões a um único download, mas como você pode ver, o conceito pode ser expandido para limitar o número total de downloads.

    
por 25.03.2011 / 13:08