web-dev-qa-db-fra.com

Un moyen relativement facile de bloquer tout le trafic d'un pays spécifique?

J'ai une application Web qui n'a aucun utilisateur aux Philippines, mais est constamment bombardée par des spammeurs, des cartes de test de cardiers et une autre activité indésirable à partir de là. Je peux voir dans les journaux qu'ils ont des IP aux Philippines et trouvent initialement mon site via google.ph ou autre .ph des sites.

J'ai de très bons filtres et contrôles de sécurité en place, ils ne causent donc pas beaucoup de dégâts, mais néanmoins, je suis vraiment fatigué de cela. Ils utilisent la bande passante, remplissent ma base de données, mes journaux abusifs et des journaux de sécurité avec la merde, gaspiller mes comptes de traitement de temps, etc.

Alors que la grande majorité des citoyens philippins ne sont pas des spammeurs et je ne peux pas simplement bloquer tous les pays qui m'énervent, à ce stade, je pense que les solutions ne consistent simplement à bloquer tout le trafic des Philippines à mon webApp. (Je connais bloquer les blocs IP des pays entiers n'est pas une bonne pratique et a de nombreux problèmes, mais pour ce pays, je veux faire une exception.)

(Je sais qu'ils pourraient échapper à leur adresse IP, mais au moins, je peux leur faire fonctionner un peu.)

Je sais qu'il y a quelques services Geoip. Quelqu'un sache de services gratuits ou peu coûteux? Ou tout autre moyen de filtrer le trafic d'un pays spécifique?

Je suis en cours d'exécution PHP sur Apache 2, si cela compte.

16
Eli

Vous pouvez le faire en fonction de l'adresse IP à l'aide d'une API d'emplacement IP gratuit comme IPInfodb http://ipinfodb.com/index.php.

8
Zachary

Contrairement à la plupart des autres affiches ici, je ne vais pas vous dire que c'est une mauvaise idée que vous ne devriez pas le faire, que cela ne résoudra pas votre problème, ni que vous devriez faire autre chose. Voici ce qui nous est arrivé:

Les personnes de la Chine et de la Corée (ou utilisant des mandataires en Chine et en Corée, de toute façon) ont gardé nous ennuyeux. Portscanning, l'exploration de nos sites Web à la recherche des vulnérabilités, des tentatives de connexion, etc. J'ai essayé de les ignorer (fail2ban prend soin d'eux en général), mais à certains endroits, ils nous frappaient si fort que efficacement transformé en une attaque DoS. Lorsque vous avez des centaines de connexions à la fois des personnes qui tentent d'utiliser votre serveur Web en tant que proxy, en essayant de SSH sur votre machine, en essayant au hasard les noms d'utilisateur et mots de passe, il a tendance à peser sur le site. Je l'ai finalement marre.

Nous ne recevons pas de trafic légitime de la Chine ou la Corée; Notre entreprise ne vend pas là-bas (nous sommes en train de commercialiser) il n'y avait donc aucun risque de perte de trafic légitime, alors je pensais qu'il était plus facile de les bloquer à l'avance au lieu d'attendre qu'ils soient des bites.

  1. Visité http://ip.ludost.net/ et téléchargé leur base de données IP <-> Pays.
  2. Extrait toutes les gammes de l'adresse IP chinoise et coréenne.
  3. Installé le module Ipset pour NetFilter
  4. Construit des décharges au plaité pour la Chine et la Corée (voir ci-dessous)
  5. Règles Ajouté à iptables de laisser tomber en silence tout le trafic de ces ensembles.

Et c'est tout. Nos utilisateurs de problèmes sont partis, chargés sur le réseau et le serveur a été diminué et nous avons altéré la saison de Noël sans difficulté.

Note 1 : vous pouvez le faire avec iptables réguliers (par exemple sans ipset), mais il est plus cher que l'utilisation informatiquement ipset.

Remarque 2 : Voici comment les vidanges ont l'air (Ipset les générera pour vous si vous le souhaitez):

# 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...

NOTE 3 : Nous utilisons une Nethash car toutes nos gammes sont stockées sous forme de blocs CIDR. Si vous ne voulez pas les convertir en CIDR, vous pouvez utiliser un iptreemap à la place, mais j'imagine que pourrait être moins efficace si vous obtenez beaucoup de trafic.

28
Dan Udey

Comment réparez-vous un bogue dans le code?

Ainsi?

BOGUE: Ajouter (2,2) Retours 0, devrait renvoyer 4.

Code fixe:

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

Évidemment pas. Vous ne créez pas seulement une monstruosité vacante de cas spéciaux, c'est énormément fragile et une recette pour la catastrophe. Vous ne comprenez pas simplement le symptôme d'aujourd'hui du problème sous-jacent.

Fixez plutôt la cause fondamentale et résolvez cela. Ceci est beaucoup plus robuste que n'importe quel patch Hacky Special-Case que vous pourriez mettre en œuvre.

Pourquoi votre application Web est-elle vulnérable au spam? Quelles caractéristiques le rendent vulnérable? Quelles caractéristiques en font une cible précieuse? Existe-t-il des moyens de modifier ces caractéristiques pour rendre votre application plus robuste contre le spam et moins d'une cible tentante? Presque certainement la réponse à ces questions est oui. Ajoutez des chaînes de validation à vos formulaires, utilisez un CAPTCHA intelligemment, randomise des urls et/ou des paramètres pour les rendre hostiles pour les bots. Il y a des millions de façons d'aborder ce problème, je suis désolé de dire que vous avez choisi l'une des solutions les moins utiles, les moins utiles et les plus fragiles.

2
Wedge

Premièrement, je suggérerais fortement de ne pas le faire.

Comme d'autres ont beaucoup plus éloquemment, le blocage d'un pays spécifique ne résout pas le problème, cela le fait légèrement. En outre, lorsque les utilisateurs de ce pays voient que vous avez bloqué eux spécifiquement, il ne les motivera que de vous causer plus problèmes.

Cela dit, si vous réellement veulent faire cela, ipinfodb Fournissez une base de données GÉNÉRALE GÉNÉRALE GRATUITE,

Tout d'abord, serait de localiser une adresse IP simplement par pays.

Vous ferez chercher de cette façon:

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;

Deuxièmement, vous voudrez peut-être obtenir la propriété intellectuelle d'un pays spécifique afin de générer une liste de blocs avec un fichier iptable, hassess ou tout ce que vous utilisez. Ce serait fait comme ceci:

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

qui vous donnerait:

63.243.149.0/24
67.212.160.0/24
1
dbr

Vous avez tous Droit de bloquer les adresses IP de quelque cause que vous pouvez justifier par vous-même. C'est vous qui fournit un service et c'est vous qui décide qui peut l'avoir ou non. Il est peut-être douteux que cela soit moral mais c'est quelque chose que vous ne pouvez décider que pour vous-même.

Cependant, bloquer un segment IP car il a des aspects géographiques qui me semble plus ou moins comme une approche panique.

Ce que j'ai fait dans le passé, c'est avoir un châleur qui traverse mes journaux les plus récents et sur la base de cette adresse IP individuelle d'interdiction qui agaçait pendant une période de 24 heures. Si cette adresse IP spécifique est à nouveau malboutable, elle est interdite pendant 2 jours, puis 3 jours, etc., etc. Vous obtenez la dérive.

IP qui sont interdites pour plus d'une semaine, une semaine me sera envoyée à moi et j'envoie un courrier abusant à ce fournisseur de services (qui sait que cela pourrait même aider).

0
Martin P. Hellwig

Vous devez utiliser des produits tels que Fail2Ban aux erreurs de clés que vous lancez dans votre application Web indiquant une tentative de spam de spam. Cela bloquera l'IP pendant une période de temps, rendant votre site résistant, mais pas la couverture bloquant des blocs IP entiers.

0
Kevin Kuphal

Quelques solutions:

Ces solutions sont assez faciles et rapides à mettre en place et gratuites.

Une solution à plus long terme consisterait à détecter le spam de votre application Web, à enregistrer l'adresse IP et à nourrir vos iptables pour les bloquer automatiquement.

0
Julien

Je choisirais une solution Snort + Ossec qui pourrait conserver quelque chose comme celui-ci de manière dynamique.

0
GNUix

Avez-vous envisagé de trouver qui exploite les réseaux que vous êtes attaqué? Trouvez le contact "Abus" en utilisant Whois et signalez-leur. Bien sûr, il peut venir de plusieurs réseaux, mais cela peut également la peine si vous voyez des adresses récurrentes/des blocs de réseau.

0
MatthieuP