Relativ einfache Möglichkeit, den gesamten Verkehr aus einem bestimmten Land zu blockieren?

16

Ich habe eine Web-App, die keine Benutzer auf den Philippinen hat, die aber ständig von Spammern, Cardern, die Karten testen, und anderen unerwünschten Aktivitäten bombardiert wird. Ich kann in den Protokollen sehen, dass sie IPs auf den Philippinen haben und meine Site zunächst über google.ph oder andere .phSites finden.

Ich habe ziemlich gute Filter und Sicherheitskontrollen installiert, so dass sie nicht wirklich viel Schaden anrichten, aber trotzdem werde ich es wirklich leid. Sie verbrauchen Bandbreite, füllen meine Datenbank, Missbrauchsprotokolle und Sicherheitsprotokolle mit Mist, verschwenden meine Zeit mit der Abrechnung von Konten usw.

Während die überwiegende Mehrheit der philippinischen Bürger keine Spammer sind und ich nicht jedes Land blockieren kann, das mich ärgert, besteht die Lösung an dieser Stelle einfach darin, den gesamten Verkehr von den Philippinen zu meiner Webapp zu blockieren. (Ich weiß, dass das Blockieren von IP-Blöcken in ganzen Ländern keine gute Praxis ist und viele Probleme hat, aber für dieses Land möchte ich eine Ausnahme machen.)

(Ich weiß, dass sie ihre IP-Adresse fälschen könnten, aber zumindest kann ich sie dazu bringen, ein bisschen dafür zu arbeiten.)

Ich weiß, dass es da draußen ein paar Geoip-Dienste gibt. Kennt jemand kostenlose oder kostengünstige Dienste? Oder eine andere Möglichkeit, den Verkehr aus einem bestimmten Land herauszufiltern?

Ich verwende PHP auf Apache 2, wenn es darauf ankommt.

anon
quelle
2
Gültige Frage.
crashmstr
crashmstr: Ich denke schon. Wenn Sie mit dieser Art von Aktion versuchen, ganze Länder zu blockieren, werden Sie nur mehr potenzielle Benutzer abschneiden, als Sie potenzielle Spammer abschneiden. Und wenn die Spammer aus Gebieten kommen, die Sie nicht blockieren möchten (wie Ihrem eigenen Land), werden Sie sich in einem tiefen Doodoo befinden, weil all Ihre bisherigen Methoden eine Verschwendung gewesen sein werden.
TheTXI
Wahrscheinlich nichts - meine aktuellen Sicherheitsgriffe sind in Ordnung. Bitte lesen Sie die Frage, bevor Sie antworten.
<p> Also, was werden Sie tun, wenn die Spammer aus anderen Ländern kommen (oder besser noch ihren Verkehr durch die USA
leiten
1
Die Philippinen sind neben den USA, Großbritannien, Kanada und Australien eines der wichtigsten englischsprachigen Länder der Welt. Ich würde dringend empfehlen, sie nicht zu verbieten, genauso wenig wie Sie Australien verbieten würden. Es sei denn natürlich, Ihre Website ist länderspezifisch. Sollte dies jedoch der Fall sein, sollte es eine länderspezifische TLD anstelle einer Dotcom-Domain geben, dann würden die Leute wissen, dass Sie sich nicht mit ihnen befassen, und könnten zu similarname.com gehen, wo dies der Fall ist.
Lee B

Antworten:

8

Sie können dies basierend auf der IP-Adresse mit einer kostenlosen IP Locatin-API wie IPInfoDB http://ipinfodb.com/index.php tun.

Zachary
quelle
28

Im Gegensatz zu den meisten anderen Postern hier werde ich Ihnen nicht sagen, dass dies eine schlechte Idee ist, dass Sie es nicht tun sollten, dass es Ihr Problem nicht lösen wird oder dass Sie etwas anderes tun sollten. Folgendes ist mit uns passiert:

Menschen aus China und Korea (oder die sowieso Proxies in China und Korea benutzen) nervten uns immer wieder. Portscanning, Durchsuchen unserer Websites nach Sicherheitslücken, Durchführen von Anmeldeversuchen usw. Ich habe versucht, diese zu ignorieren (fail2ban kümmert sich normalerweise um sie), aber an einigen Stellen haben sie uns so hart getroffen, dass es effektiv zu einem DoS-Angriff wurde. Wenn Sie Hunderte von Verbindungen gleichzeitig von Personen haben, die versuchen, Ihren Webserver als Proxy zu verwenden, versuchen, SSH auf Ihren Computer zu übertragen, versuchen, zufällige Benutzernamen und Kennwörter zu verwenden, belastet dies in der Regel die Site. Irgendwann hatte ich die Nase voll.

Wir bekommen keinen legitimen Verkehr aus China oder Korea; Unsere Firma verkauft dort nicht (wir sind E-Commerce-Unternehmen), daher bestand kein Risiko, legitimen Datenverkehr zu verlieren. Ich dachte, es wäre einfacher, sie im Voraus zu blockieren, anstatt darauf zu warten, dass sie Schwänze sind.

  1. Besuchen Sie http://ip.ludost.net/ und laden Sie die IP <-> Landesdatenbank herunter.
  2. Extrahiert alle chinesischen und koreanischen IP-Adressbereiche.
  3. Installierte das ipset-Modul für netfilter
  4. Errichtete Ipset-Dumps für China und Korea (siehe unten)
  5. Iptables wurden Regeln hinzugefügt, um den Datenverkehr aus diesen Gruppen stillschweigend zu löschen.

Und das ist es. Unsere Problembenutzer gingen weg, die Netzwerklast und der Server wurden verringert, und wir überstanden die Weihnachtszeit problemlos.

Hinweis 1 : Sie können dies mit regulären iptables (dh ohne ipset) tun, dies ist jedoch rechenintensiver als die Verwendung von ipset.

Hinweis 2 : So sehen die Dumps aus (ipset generiert diese für Sie, wenn Sie möchten):

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

Anmerkung 3 : Wir verwenden ein Nethash, da alle unsere Bereiche als CIDR-Blöcke gespeichert sind. Wenn Sie sie nicht in CIDR konvertieren möchten, können Sie stattdessen eine iptreemap verwenden. Ich stelle mir jedoch vor, dass dies weniger effizient ist, wenn Sie viel Verkehr haben.

Dan Udey
quelle
2
Der Punkt, den ich ansprechen möchte, ist, dass die Idee, ein Land wie China oder Korea oder irgendwo sonst zu blockieren, nicht nur eine Gruppe von Menschen blockiert, die eine andere Sprache sprechen als Sie. Ich bin US-amerikanischer Staatsbürger und wenn ich etwas von Ihrer Firma kaufen wollte, haben Sie mich als Kunden verloren, weil ich in Südkorea diene. Also ja, es gibt dort legitimen Verkehr.
GNUix
16
Richtig, da wir nicht nach Südkorea versenden, können wir Ihnen sowieso nichts verkaufen. Es macht also keinen Sinn, dass Sie unsere Website besuchen. Wir hatten noch nie jemanden aus China oder Korea gezwungen, etwas zu kaufen und in die USA zu versenden, sodass die Zahl der Umsatzverluste nach unserer Analyse möglicherweise zehn in einem Jahr betrug.
Dan Udey
2

Wie behebt man einen Fehler im Code?

Wie so?

Bug: Add (2,2) gibt 0 zurück, sollte 4 zurückgeben.

Fester Code:

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

Offensichtlich nicht. Man schafft nicht nur eine schwankende Monstrosität von Sonderfällen, die enorm zerbrechlich ist und ein Rezept für eine Katastrophe darstellt. Sie patchen auch nicht nur HEUTE das Symptom des zugrunde liegenden Problems.

Finden Sie stattdessen die Ursache heraus und beheben Sie diese. Dies ist weitaus robuster als jeder hackige Spezialfall-Patch, den Sie implementieren könnten.

Warum ist Ihre Web-App anfällig für Spam? Welche Eigenschaften machen es anfällig? Welche Eigenschaften machen es zu einem wertvollen Ziel? Gibt es Möglichkeiten, diese Eigenschaften zu ändern, um Ihre App robuster gegen Spam und weniger verlockend zu machen? Die Antwort auf diese Fragen lautet mit ziemlicher Sicherheit Ja. Fügen Sie Validierungsketten zu Ihren Formularen hinzu, verwenden Sie ein Captcha intelligent, randomisieren Sie URLs und / oder Parameternamen, um sie für Bots unfreundlich zu machen. Es gibt Millionen von Möglichkeiten, um dieses Problem anzugehen. Es tut mir leid, dass Sie sich für eine der am wenigsten wertvollen, am wenigsten nützlichen und anfälligsten Lösungen entschieden haben.

Keil
quelle
15
Ich habe all das, danke. Haben Sie den Beitrag tatsächlich gelesen, bevor Sie Ihre Antwort formuliert haben?
Eli
1
@ Eli, offensichtlich hast du. Deshalb greifen Sie auf radikale Maßnahmen zurück. Weil Ihre bisherigen Bemühungen so effektiv waren.
Wedge
1

Erstens würde ich dringend empfehlen, dies nicht zu tun.

Wie andere weitaus beredter gesagt haben, wird das Problem durch das Blockieren eines bestimmten Landes nicht behoben, sondern nur geringfügig verschoben. Wenn Benutzer aus diesem Land sehen, dass Sie sie speziell blockiert haben , werden sie nur dazu motiviert, Ihnen weitere Probleme zu bereiten .

Wenn Sie dies wirklich tun möchten, stellt IPinfoDB eine kostenlose IP-Geolocation-Datenbank zur Verfügung.

Erstens wäre es, eine IP einfach nach Land zu lokalisieren.

Sie würden so suchen:

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

Oder

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

Zweitens möchten Sie möglicherweise die IP eines bestimmten Landes abrufen, um eine Sperrliste mit iptable, htaccess-Datei oder was auch immer Sie verwenden, zu generieren. Es würde so gemacht werden:

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

was würde dir geben:

63.243.149.0/24
67.212.160.0/24
dbr
quelle
0

Sie sollten Produkte wie fail2ban verwenden, um Fehler, die Sie in Ihrer Webanwendung auslösen und die darauf hinweisen, dass gerade ein Spam-Versuch ausgeführt wird, auszuschließen. Dadurch wird die IP-Adresse für einen bestimmten Zeitraum blockiert, wodurch Ihre Site zwar widerstandsfähig wird, aber nicht vollständig alle IP-Blockierungen blockiert.

Kevin Kuphal
quelle
3
Wie ich in dem Beitrag sagte, welches Erscheinungsbild niemand las, habe ich ein perfektes System zum Blockieren und Verhindern von Spam. Ich möchte den Arbeitsaufwand und die Zeit, die ich für die Überwachung aufwenden muss, verringern.
Eli
Deshalb habe ich fail2ban vorgeschlagen. Problem-IPs werden automatisch für Sie gesperrt, ohne dass große IP-Blöcke gewaltsam blockiert werden.
Kevin Kuphal
0

Einige Lösungen:

Diese Lösungen sind ziemlich einfach und schnell zu installieren und kostenlos.

Eine längerfristige Lösung wäre, den Spam von Ihrer Webanwendung zu erkennen, die IP zu protokollieren und Ihre iptables zu füttern, um sie automatisch zu blockieren.

Julien
quelle
0

Haben Sie darüber nachgedacht, von wem die Netzwerke betrieben werden, von denen aus Sie angegriffen werden? Finden Sie den "Missbrauch" -Kontakt mit whois und melden Sie ihn. Natürlich kann es aus mehreren Netzwerken stammen, aber es kann sich auch lohnen, wenn Sie einige wiederkehrende Adressen / Netzwerkblöcke sehen.

MatthieuP
quelle
4
Wenn Sie jemals versucht haben, mit ISPs in Asien (insbesondere China, Korea usw.) umzugehen, werden Sie feststellen, dass sie sich nie darum kümmern, dass sich einige Ausländer über etwas beschweren. Es lohnt sich nicht, die Dinge richtig zu machen, damit sie es nicht tun. Das Melden von Missbrauch wird zur Zeitverschwendung.
Dan Udey
Ich wohne in Korea und habe nur angenehme Erfahrungen mit koreanischen ISPs gemacht.
GNUix
0

Sie haben jedes Recht IP - Adressen zu blockieren , aus welchem Grund auch immer Sie für sich selbst rechtfertigen kann. Sie sind es, die eine Dienstleistung erbringen, und Sie entscheiden, wer sie haben kann oder nicht. Es ist vielleicht fraglich, ob dies moralisch ist, aber das können Sie nur für sich selbst entscheiden.

Das Blockieren eines IP-Segments, da es einige geografische Aspekte aufweist, klingt für mich mehr oder weniger nach einem panischen Ansatz.

Was ich in der Vergangenheit getan habe, ist, dass ein Crawler meine neuesten Protokolle durchläuft und basierend auf diesem Verbot einzelne IPs, die für einen Zeitraum von 24 Stunden ärgerlich sind. Wenn sich diese bestimmte IP wieder schlecht verhält, ist sie für 2 Tage gesperrt, dann für 3 Tage usw. usw. Sie erhalten die Abweichung.

IPs, die für mehr als eine Woche gesperrt sind, werden an mich gesendet, und ich sende eine Missbrauchsmail an diesen Dienstanbieter (der weiß, dass dies möglicherweise sogar hilft).

Martin P. Hellwig
quelle
0

Ich würde mich für eine Snort + OSSEC-Lösung entscheiden, die so etwas dynamisch aufrechterhalten könnte.

GNUix
quelle
Dafür sind sichere VPNs gedacht.
Andrew Ensley