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

16

J'ai une application Web qui n'a pas d'utilisateurs aux Philippines, mais qui est constamment bombardée par des spammeurs, des cardeurs testant des cartes et d'autres activités indésirables à partir de là. Je peux voir dans les journaux qu'ils ont des adresses IP aux Philippines et trouvent initialement mon site via google.ph ou d'autres .phsites.

J'ai de très bons filtres et contrôles de sécurité en place, donc ils ne causent pas vraiment beaucoup de dégâts, mais néanmoins, je m'en lasse vraiment. Ils utilisent de la bande passante, remplissent ma base de données, abusent des journaux et des journaux de sécurité avec de la merde, perdent mon temps à nommer des comptes, etc.

Bien que la grande majorité des citoyens philippins ne soient pas des spammeurs, et je ne peux pas simplement bloquer tous les pays qui m'agacent, à ce stade, je pense que la solution consiste simplement à bloquer tout le trafic des Philippines vers ma webapp. (Je sais que bloquer des blocs IP de pays entiers n'est pas une bonne pratique et pose de nombreux problèmes, mais pour ce pays, je veux faire une exception.)

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

Je sais qu'il existe quelques services geoip. Quelqu'un connaît-il des services gratuits ou peu coûteux? Ou tout autre moyen de filtrer le trafic en provenance d'un pays spécifique?

J'utilise PHP sur Apache 2, si cela est important.

anon
la source
2
Question valide.
crashmstr
crashmstr: Je pense que oui. Prendre ce type d'action pour essayer de bloquer des pays entiers ne fera que vous couper plus d'utilisateurs potentiels que vous ne supprimez les spammeurs potentiels. Et lorsque les spammeurs commencent à provenir de zones que vous ne voulez pas bloquer (comme votre propre pays), vous allez être dans un doodoo profond car toutes vos méthodes précédentes auront été un gaspillage.
TheTXI
Probablement rien - ma sécurité actuelle fonctionne très bien. Veuillez lire la question avant de répondre.
<p> Alors, que ferez-vous lorsque les spammeurs commenceront à venir d'autres pays (ou mieux encore commenceront à acheminer leur trafic à travers les États-Unis?) </p>
TheTXI
1
Les Philippines sont l'un des principaux pays anglophones du monde, à côté des États-Unis, du Royaume-Uni, du Canada et de l'Australie. Je suggérerais fortement de ne pas les interdire, pas plus que vous n'interdiriez l'Australie. Sauf si bien sûr, votre site est spécifique au pays. Mais si c'est le cas, il devrait avoir un TLD spécifique au pays, plutôt qu'un point-com, alors les gens sauraient que vous ne les traitez pas et pourraient aller sur similarname.com, ce qui est le cas.
Lee B

Réponses:

8

Vous pouvez le faire en fonction de l'adresse IP en utilisant une API IP Locatin gratuite comme IPInfoDB http://ipinfodb.com/index.php.

Zachary
la source
28

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 ou que vous devriez faire autre chose. Voici ce qui nous est arrivé:

Les personnes en provenance de Chine et de Corée (ou utilisant des procurations en Chine et en Corée, de toute façon) nous ennuyaient toujours. Analyse de port, exploration de nos sites Web à la recherche de vulnérabilités, tentative de connexion, etc. J'ai essayé de les ignorer (fail2ban s'en occupe généralement) mais à certains moments, ils nous frappaient si fort que cela s'est effectivement transformé en une attaque DoS. Lorsque vous avez des centaines de connexions à la fois de personnes essayant d'utiliser votre serveur Web comme proxy, essayant de SSH dans votre machine, essayant des noms d'utilisateur et des mots de passe aléatoires, cela a tendance à peser sur le site. J'ai finalement eu marre.

Nous n'obtenons aucun trafic légitime en provenance de Chine ou de Corée; notre entreprise ne vend pas là-bas (nous sommes du commerce électronique), donc il n'y avait aucun risque de perdre du trafic légitime, alors j'ai pensé 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 de pays IP <->.
  2. Extrait toutes les plages d'adresses IP chinoises et coréennes.
  3. Installation du module ipset pour netfilter
  4. Construit des décharges d'ipsets pour la Chine et la Corée (voir ci-dessous)
  5. Ajout de règles à iptables pour supprimer silencieusement tout trafic provenant de ces ensembles.

Et c'est tout. Nos utilisateurs problématiques sont partis, la charge sur le réseau et le serveur a été diminué, et nous avons survécu à la saison de Noël sans difficulté.

Remarque 1 : vous pouvez le faire avec des iptables standard (c'est-à-dire sans ipset) mais c'est plus cher en calcul que d'utiliser ipset.

Remarque 2 : Voici à quoi ressemblent les vidages (l'ipset les générera 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...

Remarque 3 : Nous utilisons un nethash car toutes nos plages 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 cela pourrait être moins efficace si vous obtenez beaucoup de trafic.

Dan Udey
la source
2
Le point que je veux faire valoir est que l'idée de bloquer un pays comme la Chine ou la Corée ou n'importe où d'ailleurs ne bloque pas seulement un groupe de personnes qui parlent une langue différente de la vôtre. Je suis un citoyen américain et si je voulais acheter quelque chose de votre entreprise, vous m'avez perdu en tant que client parce que je suis en Corée du Sud. Alors oui, il y a du trafic légitime là-bas.
GNUix
16
D'accord, sauf que puisque nous ne livrons pas en Corée du Sud, nous ne pouvons pas vous vendre quoi que ce soit de toute façon, il est donc inutile que vous visitiez notre site Web. Nous n'avions jamais vu quelqu'un de Chine ou de Corée acheter quoi que ce soit et l'expédier aux États-Unis, de sorte que le nombre de ventes perdues pourrait atteindre dix en un an, selon notre analyse.
Dan Udey
2

Comment corrigez-vous un bug dans le code?

Ainsi?

Bug: Add (2,2) renvoie 0, devrait retourner 4.

Code fixe:

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

Évidemment pas. Vous ne vous contentez pas de créer une monstruosité chancelante de cas spéciaux, c'est extrêmement fragile et une recette pour un désastre. De plus, vous ne corrigez pas seulement le symptôme AUJOURD'HUI du problème sous-jacent.

Au lieu de cela, déterminez la cause première et corrigez cela. C'est beaucoup plus robuste que n'importe quel patch de cas spécial hacky que vous pourriez implémenter.

Pourquoi votre application Web est-elle vulnérable au spam? Quelles caractéristiques le rendent vulnérable? Quelles caractéristiques en font un objectif précieux? Existe-t-il des moyens de modifier ces caractéristiques pour rendre votre application plus robuste contre le spam et moins une cible tentante? La réponse à ces questions est presque certainement oui. Ajoutez des chaînes de validation à vos formulaires, utilisez un captcha intelligemment, randomisez les URL et / ou les noms de paramètres pour les rendre hostiles aux bots. Il existe 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 précieuses, les moins utiles et les plus fragiles.

Coin
la source
15
J'ai tout ça, merci. Avez-vous réellement lu le post avant de formuler votre réponse?
Eli
1
@Eli, vous l'avez évidemment. C'est pourquoi vous retombez dans des mesures radicales. Parce que vos efforts précédents ont été si efficaces.
Wedge
1

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

Comme d'autres l'ont dit avec beaucoup plus d'éloquence, bloquer un pays spécifique ne résout pas le problème, il le reporte légèrement. En outre, lorsque les utilisateurs de ce pays que vous voyez avez bloqué les spécifiquement, il ne les motiver à vous causer plus de problèmes.

Cela dit, si vous voulez vraiment le faire, IPinfoDB fournit une base de données de géolocalisation IP gratuite,

Premièrement, ce serait de localiser une adresse IP simplement par pays.

Vous rechercheriez 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 l'IP d'un pays spécifique pour générer une liste de blocage avec un fichier iptable, htaccess 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;

ce qui vous donnerait:

63.243.149.0/24
67.212.160.0/24
dbr
la source
0

Vous devez utiliser des produits comme fail2ban pour supprimer les erreurs que vous lancez dans votre application Web, indiquant qu'une tentative de spam est en cours. Cela bloquera l'IP pendant un certain temps, ce qui rendra votre site résistant, mais ne bloquera pas la totalité des blocs IP.

Kevin Kuphal
la source
3
Comme je l'ai dit dans le post, dont personne n'a lu l'apparence, j'ai un système parfaitement fin de blocage et de prévention du spam. Je cherche à alléger la charge de travail qu'il doit faire et le temps que je dois passer à le surveiller.
Eli
C'est pourquoi j'ai suggéré fail2ban. Il interdit automatiquement les adresses IP problématiques sans que la force brute ne bloque les gros blocs IP.
Kevin Kuphal
0

Quelques solutions:

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

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

Julien
la source
0

Avez-vous envisagé de trouver qui exploite les réseaux dont vous êtes attaqué? Trouvez le contact "abus" à l'aide de whois et signalez-leur. Bien sûr, cela peut provenir de plusieurs réseaux, mais cela peut aussi valoir la peine si vous voyez des adresses / blocs de réseau récurrents.

MatthieuP
la source
4
Si vous avez déjà essayé de traiter avec des FAI en Asie (en particulier en Chine, en Corée, etc.), vous constaterez que la seule chose qu'ils ne font jamais, c'est que certains étrangers se plaignent de quelque chose. Cela ne vaut pas leur temps de faire les choses correctement, alors ils ne le font pas. Signaler un abus devient une perte de temps.
Dan Udey
Je suis basé en Corée et je n'ai eu qu'une expérience agréable avec les FAI coréens.
GNUix
0

Vous avez tout droit de bloquer les adresses IP à partir d'une raison quelconque , vous pouvez justifier par vous - même. C'est vous qui fournissez un service et c'est vous qui décidez qui peut l'avoir ou non. Il est peut-être discutable que ce soit moral, mais c'est quelque chose que vous ne pouvez décider que par vous-même.

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

Ce que j'ai fait par le passé, c'est qu'un robot explore mes journaux les plus récents et se fonde sur cette interdiction des adresses IP individuelles qui sont ennuyeuses pour une période de 24 heures. Si cette adresse IP se comporte mal à nouveau, elle est interdite pendant 2 jours, puis 3 jours, etc., etc. vous obtenez la dérive.

Les IP qui sont interdites pendant plus d'une semaine me seront envoyées et j'envoie un courrier abusif à ce fournisseur de services (qui sait que cela pourrait même aider).

Martin P. Hellwig
la source
0

J'opterais pour une solution Snort + OSSEC qui pourrait maintenir quelque chose comme ça dynamiquement.

GNUix
la source
C'est à cela que servent les VPN sécurisés.
Andrew Ensley