¿Una forma relativamente fácil de bloquear todo el tráfico de un país específico?

16

Tengo una aplicación web que no tiene usuarios en Filipinas, pero es constantemente bombardeada por spammers, carders que prueban tarjetas y otras actividades indeseables desde allí. Puedo ver en los registros que tienen IP en Filipinas e inicialmente están buscando mi sitio a través de google.ph u otros .phsitios.

Tengo filtros y controles de seguridad bastante buenos, por lo que en realidad no causan mucho daño, pero de todos modos, realmente me estoy cansando. Usan ancho de banda, llenan mi base de datos, abusan de los registros y registros de seguridad con basura, pierden mi tiempo llamando cuentas, etc.

Si bien la gran mayoría de los ciudadanos filipinos no son spammers, y no puedo simplemente bloquear todos los países que me molestan, en este punto, creo que la solución es simplemente bloquear todo el tráfico de Filipinas a mi aplicación web. (Sé que bloquear los bloqueos de IP de países enteros no es una buena práctica y tiene muchos problemas, pero para este país, quiero hacer una excepción).

(Sé que podrían falsificar su dirección IP, pero al menos puedo hacer que trabajen un poco por eso).

Sé que hay algunos servicios de geoip por ahí. ¿Alguien sabe de algún servicio gratuito o económico? ¿O alguna otra forma de filtrar el tráfico de un país específico?

Estoy ejecutando PHP en Apache 2, si es importante.

anon
fuente
2
Pregunta valida
crashmstr
crashmstr: Creo que sí. Tomar este tipo de acción para tratar de bloquear países enteros solo hará que elimine a más usuarios potenciales de los que está eliminando a los posibles spammers. Y cuando los spammers comiencen a provenir de áreas que no desea bloquear (como su propio país), se encontrará en una situación muy profunda porque todos sus métodos anteriores habrán sido un desperdicio.
TheTXI
Probablemente nada: mi seguridad actual se maneja bien. Por favor lea la pregunta antes de responder.
<p> Entonces, ¿qué harás cuando los spammers comiencen a venir de otros países (o mejor aún, comiencen a enrutar su tráfico a través de los EE. UU.)? </p>
TheTXI
1
Filipinas es uno de los principales países de habla inglesa del mundo, junto a los Estados Unidos, el Reino Unido, Canadá y Australia. Te sugiero no prohibirlos, como tampoco prohibirías a Australia. A menos que, por supuesto, su sitio sea específico del país. Pero si lo es, debería tener un TLD específico de país, en lugar de un punto-com, entonces la gente sabría que no se trata con ellos, y podría ir a similarname.com, que lo hace.
Lee B

Respuestas:

8

Puede hacer esto en función de la dirección IP utilizando una API de localización de IP gratuita como IPInfoDB http://ipinfodb.com/index.php.

Zachary
fuente
28

A diferencia de la mayoría de los otros carteles aquí, no voy a decirle que es una mala idea, que no debe hacerlo, que no resolverá su problema o que debe hacer otra cosa. Esto es lo que nos pasó:

Las personas de China y Corea (o usando poderes en China y Corea, de todos modos) nos seguían molestando. Escaneo de puertos, rastreo de nuestros sitios web en busca de vulnerabilidades, intentos de inicio de sesión, etc. Intenté ignorarlos (fail2ban se encarga de ellos por lo general), pero en algunos momentos nos golpearon tan fuerte que efectivamente se convirtió en un ataque DoS. Cuando tiene cientos de conexiones a la vez de personas que intentan utilizar su servidor web como proxy, que intentan SSH en su máquina, que prueban nombres de usuario y contraseñas al azar, tiende a pesar en el sitio. Finalmente me harté.

No recibimos ningún tráfico legítimo de China o Corea; nuestra empresa no vende allí (somos comercio electrónico), por lo que no había riesgo de perder tráfico legítimo, así que pensé que era más fácil bloquearlos con anticipación en lugar de esperar a que fueran pollas.

  1. Visité http://ip.ludost.net/ y descargué su base de datos de IP <-> país.
  2. Extrajo todos los rangos de direcciones IP chinas y coreanas.
  3. Instalado el módulo de filtro de red para ipset
  4. Construyó vertederos de ipset para China y Corea (ver más abajo)
  5. Se agregaron reglas a iptables para eliminar silenciosamente cualquier tráfico de esos conjuntos.

Y eso es. Nuestros usuarios problemáticos se fueron, cargaron en la red y el servidor se redujo, y resistimos la temporada de Navidad sin dificultad.

Nota 1 : puede hacer esto con iptables regulares (es decir, sin ipset) pero es más costoso desde el punto de vista computacional que usar ipset.

Nota 2 : así es como se ven los volcados (ipset los generará si lo desea):

# 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 un nethash porque todos nuestros rangos se almacenan como bloques CIDR. Si no desea convertirlos a CIDR, puede usar un iptreemap en su lugar, pero imagino que podría ser menos eficiente si está recibiendo mucho tráfico.

Dan Udey
fuente
2
Lo que quiero decir es que la idea de bloquear un país como China o Corea o cualquier otro lugar no es solo bloquear a un grupo de personas que hablan un idioma diferente al tuyo. Soy ciudadano de los Estados Unidos y si quería comprar algo de su empresa, me perdió como cliente porque estoy sirviendo en Corea del Sur. Así que sí, no es el tráfico legítimo allí.
GNUix
16
Correcto, excepto que como no enviamos a Corea del Sur, no podemos venderle nada de todos modos, por lo que no tiene sentido que visite nuestro sitio web. Nunca habíamos tenido a nadie de China o Corea que comprara algo y lo enviara a los Estados Unidos, por lo que la cantidad de ventas perdidas podría llegar a diez en un año según nuestro análisis.
Dan Udey
2

¿Cómo arreglas un error en el código?

¿Al igual que?

Error: Agregar (2,2) devuelve 0, debería devolver 4.

Código fijo:

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

Obviamente no. No solo crea una monstruosidad tambaleante de casos especiales, eso es enormemente frágil y una receta para el desastre. Tampoco solo parches el síntoma de HOY del problema subyacente.

En cambio, descubra la causa raíz y corríjala. Esto es mucho más robusto que cualquier parche de caso especial hacky que podría implementar.

¿Por qué su aplicación web es vulnerable al spam? ¿Qué características lo hacen vulnerable? ¿Qué características lo convierten en un objetivo valioso? ¿Hay formas de cambiar esas características para hacer que su aplicación sea más robusta contra el correo no deseado y menos objetivo tentador? Es casi seguro que la respuesta a estas preguntas es sí. Agregue cadenas de validación a sus formularios, use un captcha de manera inteligente, aleatorice las URL y / o los nombres de los parámetros para que no sean amigables con los bots. Hay millones de formas de abordar este problema, lamento decir que ha elegido una de las soluciones menos valiosas, menos útiles y más frágiles que existen.

Cuña
fuente
15
Tengo todos esos, gracias. ¿Realmente leíste la publicación antes de formular tu respuesta?
Eli
1
@Eli, obviamente lo tienes. Es por eso que recurres a medidas radicales. Porque tus esfuerzos anteriores fueron muy efectivos.
Wedge
1

Primero, sugeriría encarecidamente no hacer esto.

Como otros han dicho de manera mucho más elocuente, bloquear un país específico no soluciona el problema, solo lo difiere ligeramente. Además, cuando los usuarios de ese país ver que has bloqueado ellos en concreto, sólo se les motivará a hacer que usted más problemas.

Dicho esto, si realmente quieres hacer esto, IPinfoDB proporciona una base de datos de geolocalización IP gratuita,

Primero, sería ubicar una IP simplemente por país.

Buscarías de esta manera:

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

O

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

En segundo lugar, es posible que desee obtener la IP de un país específico para generar una lista de bloqueo con iptable, archivo htaccess o lo que sea que use. Se haría así:

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

que te daría:

63.243.149.0/24
67.212.160.0/24
dbr
fuente
0

Debe usar productos como fail2ban para eliminar los errores que arroja en su aplicación web, lo que indica que se está realizando un intento de envío de correo no deseado. Esto bloqueará la IP por un período de tiempo, haciendo que su sitio sea resistente, pero no bloqueando bloqueos de IP completos.

Kevin Kuphal
fuente
3
Como dije en la publicación, cuyo aspecto nadie leyó, tengo un sistema perfectamente perfecto de bloqueo y prevención de spam. Estoy buscando aligerar la carga de trabajo que tiene que hacer, y el tiempo que tengo para pasar monitoreándola.
Eli
Por eso sugerí fail2ban. Prohíbe automáticamente las IP problemáticas sin que la fuerza bruta bloquee grandes bloques de IP.
Kevin Kuphal
0

Un par de soluciones:

Estas soluciones son bastante fáciles y rápidas de implementar, y gratuitas.

Una solución a largo plazo sería detectar el spam de su aplicación web, registrar la IP y alimentar sus iptables para bloquearlas automáticamente.

Julien
fuente
0

¿Consideró encontrar quién está operando las redes desde las que está siendo atacado? Encuentre el contacto de "abuso" usando whois e informe a ellos. Por supuesto, puede provenir de varias redes, pero también puede valer la pena si ve algunas direcciones / bloques de red recurrentes.

MatthieuP
fuente
44
Si alguna vez ha tratado de tratar con ISP en Asia (especialmente en China, Corea, etc.), descubrirá que lo único que nunca hacen es preocuparse por que algunos extranjeros se quejen de algo. No vale la pena su tiempo para hacer las cosas correctamente para que no lo hagan. Informar el abuso se convierte en una pérdida de tiempo.
Dan Udey
Estoy radicado en Corea y no he tenido más que una experiencia agradable con los ISP coreanos.
GNUix
0

Tiene todo el derecho de bloquear las direcciones IP por cualquier motivo que pueda justificar por sí mismo. Eres tú quien proporciona un servicio y eres tú quien decide quién puede tenerlo o no. Tal vez sea cuestionable si esto es moral, pero eso es algo que solo puedes decidir por ti mismo.

Sin embargo, bloquear un segmento de IP porque tiene algunos aspectos geográficos me parece más o menos como un enfoque de pánico.

Lo que he hecho en el pasado es tener un rastreador revisando mis registros más recientes y basado en esa prohibición de IP individuales que son molestos por un período de 24 horas. Si esa IP específica se está comportando mal nuevamente, está prohibido durante 2 días, luego 3 días, etc., etc., obtendrá la deriva.

Las IP que están prohibidas por más de una semana me serán enviadas por correo y le enviaré un correo de abuso a ese proveedor de servicios (quién sabe que incluso podría ayudar).

Martin P. Hellwig
fuente
0

Optaría por una solución Snort + OSSEC que podría mantener algo como esto dinámicamente.

GNUix
fuente
Para eso están las VPN seguras.
Andrew Ensley