Maneira relativamente fácil de bloquear todo o tráfego de um país específico?

16

Eu tenho um aplicativo Web que não tem usuários nas Filipinas, mas é constantemente bombardeado por spammers, cartões de teste de cardadores e outras atividades indesejáveis ​​a partir daí. Eu posso ver nos logs que eles têm IPs nas Filipinas e estão encontrando meu site inicialmente via google.ph ou outros .phsites.

Eu tenho filtros e verificações de segurança muito bons, para que eles realmente não causem muitos danos, mas, no entanto, eu estou realmente me cansando disso. Eles usam largura de banda, preenchem meu banco de dados, registram abusos e registros de segurança com porcaria, perdem meu tempo denominando contas, etc.

Enquanto a grande maioria dos cidadãos filipinos não é spammer e não posso bloquear todos os países que me incomodam, neste momento, acho que as soluções são simplesmente bloquear todo o tráfego das Filipinas para o meu aplicativo da web. (Eu sei que bloquear blocos de IP de países inteiros não é uma boa prática e tem muitos problemas, mas para este país, quero abrir uma exceção.)

(Eu sei que eles poderiam falsificar seu endereço IP, mas pelo menos eu posso fazê-los trabalhar um pouco.)

Eu sei que existem alguns serviços geoip por aí. Alguém conhece algum serviço gratuito ou barato? Ou alguma outra maneira de filtrar o tráfego de um país específico?

Estou executando o PHP no Apache 2, se isso importa.

anon
fonte
2
Pergunta válida.
Crashmstr #
crashmstr: Eu acho que sim. Tomar esse tipo de ação para tentar bloquear países inteiros só fará com que você corte mais usuários em potencial do que em spam. E quando os remetentes de spam começarem a vir de áreas que você não deseja bloquear (como o seu próprio país), você estará profundamente envolvido, porque todos os seus métodos anteriores serão um desperdício.
TheTXI
Provavelmente nada - minha segurança atual lida muito bem. Por favor, leia a pergunta antes de responder.
<p> Então, o que você vai fazer quando os spammers começam a vir de outros países (? ou melhor ainda começar encaminhamento seu tráfego através os EUA) </ p>
TheTXI
11
As Filipinas são um dos principais países de língua inglesa do mundo, ao lado dos EUA, Reino Unido, Canadá e Austrália. Eu sugiro fortemente não bani-los, assim como você proibiria a Austrália. A menos, é claro, que seu site seja específico do país. Mas, se for, deve ter um TLD específico do país, e não um ponto.com, então as pessoas saberão que você não lida com eles e poderão acessar o similarname.com, o que é verdade.
Lee B

Respostas:

8

Você pode fazer isso com base no endereço IP usando uma API gratuita do IP Locatin como IPInfoDB http://ipinfodb.com/index.php.

Zachary
fonte
28

Ao contrário da maioria dos outros pôsteres aqui, não vou lhe dizer que é uma má idéia, que você não deve fazê-lo, que não resolverá o seu problema ou que você deve fazer outra coisa. Aqui está o que aconteceu conosco:

Indivíduos da China e da Coréia (ou usando proxies na China e na Coréia, de qualquer maneira) continuavam nos irritando. Portscanning, rastreando nossos sites procurando por vulnerabilidades, fazendo tentativas de login, etc. Tentei ignorá-los (o fail2ban cuida deles normalmente), mas em alguns momentos eles estavam nos atingindo com tanta força que efetivamente se transformou em um ataque de DoS. Quando você tem centenas de conexões ao mesmo tempo de pessoas tentando usar seu servidor da Web como proxy, tentando fazer o SSH em sua máquina, tentando nomes de usuário e senhas aleatórios, isso tende a pesar no site. Eu finalmente me cansei.

Não recebemos nenhum tráfego legítimo da China ou da Coréia; nossa empresa não vende lá (somos comércio eletrônico), portanto não havia risco de perder tráfego legítimo, então achei que era mais fácil bloqueá-los antes do tempo, em vez de esperar que eles fossem idiotas.

  1. Visitei http://ip.ludost.net/ e baixou o banco de dados de IP <-> do país.
  2. Extraíram todos os intervalos de endereços IP chinês e coreano.
  3. Instalou o módulo ipset para netfilter
  4. Dipsets ipset construídos para China e Coréia (veja abaixo)
  5. Adicionadas regras ao iptables para eliminar silenciosamente qualquer tráfego desses conjuntos.

E é isso. Nossos usuários problemáticos foram embora, a carga na rede e o servidor diminuíram e passamos o Natal sem dificuldade.

Nota 1 : você pode fazer isso com iptables regulares (ou seja, sem ipset), mas é mais caro do que usar o ipset.

Nota 2 : É assim que os dumps são exibidos (o ipset os gerará para você, se você quiser):

# Generated by ipset 2.3.3 on Sat Oct  4 18:02:57 2008
-N china nethash --hashsize 5184 --probes 4 --resize 50
-A china 203.207.128.0/17
-A china 221.176.0.0/13
-A china 58.154.0.0/15
-A china 114.54.0.0/15
...etc...

Nota 3 : Usamos um nethash porque todos os nossos intervalos são armazenados como blocos CIDR. Se você não deseja convertê-los para CIDR, pode usar um iptreemap, mas imagino que possa ser menos eficiente se você estiver recebendo muito tráfego.

Dan Udey
fonte
2
O que quero dizer é que a idéia de bloquear um país como China ou Coréia ou qualquer outro lugar não está apenas bloqueando um monte de pessoas que falam um idioma diferente do seu. Sou cidadão dos Estados Unidos e, se quisesse comprar algo da sua empresa, você me perdeu como cliente porque estou servindo na Coréia do Sul. Então, sim, há é o tráfego legítimo lá.
GNUix 10/06/09
16
Certo, exceto que, como não enviamos para a Coréia do Sul, não podemos vender nada para você, então não faz sentido você ir ao nosso site. Nunca tivemos ninguém da China ou Coréia comprando nada e enviando-o para os EUA. Portanto, o número de vendas perdidas pode chegar a dez em um ano com base em nossa análise.
21911 Dan Udey
2

Como você corrige um bug no código?

Igual a?

Bug: Add (2,2) retorna 0, deve retornar 4.

Código fixo:

int Add(int x, int y)
{
   if (x == 2 && y == 2)
      { return 4; }
   return 0;
}

Obviamente não. Você não cria apenas uma monstruosidade oscilante de casos especiais, que é extremamente frágil e uma receita para o desastre. Você também não corrige apenas o sintoma de HOJE do problema subjacente.

Em vez disso, descubra a causa raiz e corrija isso. Isso é muito mais robusto do que qualquer patch de caso especial hacky que você possa implementar.

Por que seu aplicativo Web é vulnerável a spam? Quais características o tornam vulnerável? Quais características o tornam um alvo valioso? Existem maneiras de alterar essas características para tornar seu aplicativo mais robusto contra spam e menos um alvo tentador? Quase certamente a resposta para essas perguntas é sim. Adicione cadeias de validação aos seus formulários, use um captcha de maneira inteligente, randomize URLs e / ou nomes de parâmetros para torná-los hostis aos bots. Existem milhões de maneiras de abordar esse problema. Lamento dizer que você escolheu uma das soluções menos valiosas, menos úteis e mais frágeis por aí.

Cunha
fonte
15
Eu tenho todos esses, obrigado. Você realmente leu o post antes de formular sua resposta?
Eli
11
@ Eli, obviamente você tem. É por isso que você está voltando a medidas radicais. Porque seus esforços anteriores foram muito eficazes.
Wedge
1

Primeiro, eu sugeriria fortemente não fazer isso.

Como outros colocaram de maneira mais eloquente, bloquear um país específico não resolve o problema, apenas o adia um pouco. Além disso, quando os usuários daquele país ver que você bloqueou -los especificamente, ele só irá motivá-los a causar-lhe mais problemas.

Dito isto, se você realmente deseja fazer isso, o IPinfoDB fornece um banco de dados de geolocalização IP gratuito,

Primeiro, seria localizar um IP simplesmente por país.

Você pesquisaria desta maneira:

SELECT * FROM `ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;

Ou

SELECT * FROM `ip_group_country` where `ip_start` <= 1249717504 order by ip_start desc limit 1;

Segundo, você pode querer obter o IP de um país específico para gerar uma lista de bloqueio com iptable, arquivo htaccess ou o que você usar. Isso seria feito assim:

SELECT `ip_cidr` FROM `ip_group_country` WHERE `country_code` = 'AF' order by ip_start;

o que daria a você:

63.243.149.0/24
67.212.160.0/24
dbr
fonte
0

Você deve usar produtos como fail2ban para desativar os erros lançados em seu aplicativo da web, indicando que uma tentativa de spam está em andamento. Isso bloqueará o IP por um período de tempo, tornando seu site resistente, mas não bloqueando bloqueios inteiros de IP.

Kevin Kuphal
fonte
3
Como eu disse no post, cuja aparência ninguém lê, eu tenho um sistema perfeitamente bom de bloquear e impedir spam. Eu estou olhando para aliviar a carga de trabalho que ele tem que fazer e o tempo que tenho para monitorar.
Eli
É por isso que sugeri fail2ban. Ele proíbe automaticamente IPs problemáticos para você, sem força bruta, bloqueando grandes blocos IP.
22630 Kevin Kuphal
0

Algumas soluções:

Essas soluções são muito fáceis, rápidas de implementar e gratuitas.

Uma solução a longo prazo seria detectar o spam do seu aplicativo da web, registrar o IP e alimentar suas tabelas de ip para bloqueá-las automaticamente.

Julien
fonte
0

Você pensou em descobrir quem está operando as redes das quais você está sendo atacado? Encontre o contato "abuso" usando whois e relate a eles. É claro que pode vir de várias redes, mas também vale a pena se você vir alguns endereços / blocos de rede recorrentes.

MatthieuP
fonte
4
Se você já tentou lidar com ISPs na Ásia (especialmente China, Coréia, etc), verá que a única coisa que eles nunca fazem é se importar com alguns estrangeiros reclamando de alguma coisa. Não vale a pena fazer as coisas corretamente, para que não façam. Denunciar abuso se torna um desperdício de seu tempo.
Dan Udey
Estou na Coréia e tive uma experiência agradável com os provedores coreanos.
GNUix 10/06/09
0

Você tem todo o direito de bloquear endereços IP por qualquer motivo que possa justificar por si mesmo. É você quem presta um serviço e é você quem decide quem pode ou não tê-lo. Talvez seja questionável se isso é moral, mas isso é algo que você só pode decidir por si mesmo.

No entanto, bloquear um segmento IP, porque ele possui alguns aspectos geográficos, parece-me mais ou menos como uma abordagem de pânico.

O que eu fiz no passado foi ter um rastreador passando pelos meus logs mais recentes e com base nessa proibição de IPs individuais que são irritantes por um período de 24 horas. Se esse IP específico estiver se comportando mal novamente, ele será banido por 2 dias, 3 dias, etc., etc.

Os IPs que são banidos por mais de uma semana serão enviados para mim e eu envio um email de abuso para esse provedor de serviços (quem sabe isso pode até ajudar).

Martin P. Hellwig
fonte
0

Eu optaria por uma solução Snort + OSSEC que pudesse manter algo assim dinamicamente.

GNUix
fonte
É para isso que servem as VPNs seguras.
Andrew Ensley