Stosunkowo łatwy sposób na zablokowanie całego ruchu z określonego kraju?

16

Mam aplikację internetową, która nie ma użytkowników na Filipinach, ale jest ciągle bombardowana przez spamerów, testerów kart i inne niepożądane działania z tego miejsca. Widzę w dziennikach, że mają adresy IP na Filipinach i początkowo znajdują moją stronę za pośrednictwem google.ph lub innych .phstron.

Mam dość dobre filtry i kontrole bezpieczeństwa, więc tak naprawdę nie powodują dużych szkód, ale mimo to naprawdę mam tego dość. Wykorzystują przepustowość, wypełniają moją bazę danych, logi nadużyć i logi bezpieczeństwa bzdurami, marnują czas na kontach itp.

Podczas gdy zdecydowana większość obywateli Filipin nie jest spamerem i nie mogę po prostu zablokować każdego kraju, który mnie denerwuje, w tym momencie uważam, że rozwiązaniem jest po prostu zablokowanie całego ruchu z Filipin do mojej aplikacji internetowej. (Wiem, że blokowanie blokowania adresów IP całych krajów nie jest świetną praktyką i ma wiele problemów, ale dla tego kraju chcę zrobić wyjątek.)

(Wiem, że mogą sfałszować swój adres IP, ale przynajmniej mogę sprawić, że trochę nad tym popracują).

Wiem, że jest tam kilka usług geoip. Czy ktoś wie o jakichkolwiek bezpłatnych lub niedrogich usługach? Lub w jakikolwiek inny sposób odfiltrować ruch z określonego kraju?

Używam PHP na Apache 2, jeśli to ma znaczenie.

anon
źródło
2
Ważne pytanie
crashmstr
crashmstr: Tak mi się wydaje. Podjęcie tego rodzaju działań w celu zablokowania całych krajów spowoduje tylko odcięcie większej liczby potencjalnych użytkowników niż potencjalnych spamerów. A kiedy spamerzy zaczną przychodzić z obszarów, których nie chcesz blokować (takich jak twój własny kraj), będziesz się głęboko zastanawiać, ponieważ wszystkie twoje poprzednie metody byłyby marnotrawstwem.
TheTXI
Prawdopodobnie nic - moje obecne zabezpieczenia dobrze sobie radzą. Proszę przeczytać pytanie przed udzieleniem odpowiedzi.
<p> Co więc zrobisz, gdy spamerzy zaczną przychodzić z innych krajów (a jeszcze lepiej zaczną przekierowywać swój ruch przez USA?) </p>
TheTXI
1
Filipiny to jeden z głównych krajów anglojęzycznych na świecie, obok USA, Wielkiej Brytanii, Kanady i Australii. Zdecydowanie odradzam ich banowanie, tak samo jak zakazałbyś Australii. Chyba że Twoja witryna jest przeznaczona dla danego kraju. Ale jeśli tak, powinien mieć TLD dla danego kraju, a nie dot-com, wtedy ludzie będą wiedzieli, że nie radzisz sobie z nimi, i mogliby przejść na stronę namesname.com.
Lee B,

Odpowiedzi:

8

Możesz to zrobić na podstawie adresu IP przy użyciu darmowego interfejsu API Locatin IP, takiego jak IPInfoDB http://ipinfodb.com/index.php.

Zachary
źródło
28

W przeciwieństwie do większości innych plakatów tutaj, nie powiem ci, że to zły pomysł, że nie powinieneś tego robić, że to nie rozwiąże twojego problemu lub że powinieneś zrobić coś innego. Oto co nam się przydarzyło:

Drażniły nas osoby z Chin i Korei (lub korzystające z serwerów proxy w Chinach i Korei). Skanowanie portów, przeszukiwanie naszych stron internetowych w poszukiwaniu luk, próby logowania itp. Próbowałem je zignorować (fail2ban zwykle się nimi zajmuje), ale w niektórych momentach uderzali nas tak mocno, że skutecznie zamieniali się w atak DoS. Kiedy masz setki połączeń naraz od osób, które próbują użyć twojego serwera jako serwera proxy, próbują połączyć się z SSH na twoim komputerze, próbują losowych nazw użytkowników i haseł, ma to tendencję do ważenia na stronie. W końcu miałem dość.

Nie otrzymujemy żadnego legalnego ruchu z Chin ani Korei; nasza firma tam nie sprzedaje (jesteśmy e-commerce), więc nie było ryzyka utraty legalnego ruchu, więc pomyślałem, że łatwiej było je zablokować z wyprzedzeniem, niż czekać na nich.

  1. Odwiedziłem http://ip.ludost.net/ i pobrałem bazę danych krajów <-> IP.
  2. Wyodrębniono wszystkie zakresy adresów IP w Chinach i Korei.
  3. Zainstalowano moduł ipset dla netfilter
  4. Zbudowane zrzuty ipset dla Chin i Korei (patrz poniżej)
  5. Dodano reguły do ​​iptables, aby po cichu usunąć wszelki ruch z tych zestawów.

I to wszystko. Nasi problemowi użytkownicy odeszli, obciążenie sieci i serwer został zmniejszony, a my bez trudu przetrwaliśmy okres świąteczny.

Uwaga 1 : możesz to zrobić za pomocą zwykłych iptables (tj. Bez ipset), ale jest to bardziej kosztowne obliczeniowo niż używanie ipset.

Uwaga 2 : Tak wyglądają zrzuty (ipset wygeneruje je, jeśli chcesz):

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

Uwaga 3 : Używamy nethash, ponieważ wszystkie nasze zakresy są przechowywane jako bloki CIDR. Jeśli nie chcesz przekonwertować ich na CIDR, możesz zamiast tego użyć iptreemap, ale wyobrażam sobie, że może to być mniej wydajne, jeśli masz duży ruch.

Dan Udey
źródło
2
Chodzi mi o to, że pomysł zablokowania kraju takiego jak Chiny, Korea czy gdziekolwiek indziej w tym zakresie nie polega tylko na blokowaniu grupy ludzi mówiących innym językiem niż ty. Jestem obywatelem Stanów Zjednoczonych i jeśli chciałem coś kupić od swojej firmy, straciłeś mnie jako klienta, ponieważ służę w Korei Południowej. Więc tak, jest tam legalny ruch.
GNUix
16
Racja, poza tym, że ponieważ nie wysyłamy towarów do Korei Południowej, i tak nie możemy ci nic sprzedać, więc nie ma sensu wchodzić na naszą stronę internetową. Nigdy nie mieliśmy nikogo z Chin lub Korei, który by coś kupił i wysłał do USA, więc na podstawie naszych analiz liczba utraconych sprzedaży może być nawet dziesięciokrotnie w ciągu roku.
Dan Udey
2

Jak naprawić błąd w kodzie?

Podoba ci się?

Błąd: Dodaj (2,2) zwraca 0, powinien zwrócić 4.

Naprawiono kod:

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

Oczywiście, że nie. Nie tylko tworzysz drżącą potworność specjalnych przypadków, która jest niezwykle delikatna i stanowi przepis na katastrofę. Nie tylko załatujesz DZISIAJ symptomy leżące u podstaw problemu.

Zamiast tego ustal pierwotną przyczynę i napraw ją. Jest to o wiele bardziej niezawodne niż jakakolwiek zhackowana łatka do specjalnych przypadków, którą można wdrożyć.

Dlaczego twoja aplikacja internetowa jest podatna na spam? Jakie cechy sprawiają, że jest wrażliwy? Jakie cechy sprawiają, że jest to cenny cel? Czy istnieją sposoby na zmianę tych cech, aby uczynić swoją aplikację bardziej odporną na spam i mniej kuszącym celem? Prawie na pewno odpowiedź na te pytania brzmi „tak”. Dodaj łańcuchy sprawdzania poprawności do formularzy, inteligentnie użyj captcha, losowo urluj adresy URL i / lub nazwy parametrów, aby uczynić je nieprzyjaznymi dla botów. Istnieją miliony sposobów rozwiązania tego problemu, przykro mi powiedzieć, że wybrałeś jedno z najmniej wartościowych, najmniej użytecznych i najbardziej delikatnych rozwiązań.

Klin
źródło
15
Mam je wszystkie, dzięki. Czy rzeczywiście przeczytałeś post przed sformułowaniem odpowiedzi?
Eli
1
@Eli, oczywiście że masz. Dlatego wracasz do radykalnych środków. Ponieważ twoje poprzednie wysiłki były tak skuteczne.
Wedge
1

Po pierwsze, zdecydowanie zalecam nie robienie tego.

Jak twierdzą inni, bardziej elokwentnie, blokowanie określonego kraju nie rozwiązuje problemu, tylko go nieco opóźnia. Ponadto, gdy użytkownicy z tego kraju zobaczą, że ich specjalnie zablokowałeś , będzie to tylko motywowało ich do powodowania dalszych problemów.

To powiedziawszy, jeśli naprawdę chcesz to zrobić, IPinfoDB zapewnia bezpłatną bazę danych geolokalizacji IP,

Po pierwsze, byłoby zlokalizować adres IP po prostu według kraju.

Wyszukiwałbyś w ten sposób:

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

Lub

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

Po drugie, możesz chcieć uzyskać adres IP określonego kraju, aby wygenerować listę bloków z plikiem iptable, htaccess lub czymkolwiek innym. Można to zrobić w następujący sposób:

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

co dałoby ci:

63.243.149.0/24
67.212.160.0/24
dbr
źródło
0

Powinieneś używać produktów takich jak fail2ban, aby wykluczyć błędy, które zgłaszasz w swojej aplikacji internetowej wskazujące na próbę spamowania. Spowoduje to zablokowanie adresu IP na pewien czas, dzięki czemu witryna będzie odporna, ale nie będzie blokować całego bloku adresów IP.

Kevin Kuphal
źródło
3
Jak powiedziałem w poście, którego wyglądu nikt nie czyta, mam doskonale doskonały system blokowania i zapobiegania spamowi. Chcę zmniejszyć obciążenie pracą i czas, który muszę poświęcić na monitorowanie.
Eli,
Dlatego zaproponowałem fail2ban. Automatycznie blokuje problematyczne adresy IP bez brutalnej siły blokującej duże bloki adresów IP.
Kevin Kuphal,
0

Kilka rozwiązań:

Rozwiązania te są dość łatwe i szybkie do wdrożenia oraz bezpłatne.

Długofalowym rozwiązaniem byłoby wykrycie spamu z aplikacji internetowej, zalogowanie adresu IP i nakarmienie iptables, aby je automatycznie zablokować.

Julien
źródło
0

Czy zastanawiałeś się nad tym, kto obsługuje sieci, z których jesteś atakowany? Znajdź kontakt „nadużycie” za pomocą whois i zgłoś się do nich. Oczywiście może pochodzić z kilku sieci, ale warto też, jeśli widzisz powtarzające się adresy / bloki sieciowe.

MatthieuP
źródło
4
Jeśli kiedykolwiek próbowałeś poradzić sobie z dostawcami usług internetowych w Azji (szczególnie w Chinach, Korei itp.), Przekonasz się, że jedyną rzeczą, której nigdy nie robią, jest obawa, że ​​niektórzy cudzoziemcy na coś narzekają. Nie warto poświęcać czasu na robienie rzeczy właściwie, więc nie robią tego. Zgłaszanie nadużyć staje się stratą czasu.
Dan Udey,
Mam siedzibę w Korei i nie miałem nic poza przyjemnym doświadczeniem z koreańskimi dostawcami usług internetowych.
GNUix
0

Masz pełne prawo do blokowania adresów IP z dowolnego powodu, który sam możesz uzasadnić. To Ty świadczysz usługę i to Ty decydujesz, kto może ją mieć, czy nie. Być może jest to wątpliwe, czy jest to moralne, ale jest to coś, o czym możesz sam decydować.

Jednak blokowanie segmentu IP, ponieważ ma on pewne aspekty geograficzne, brzmi dla mnie mniej więcej jak podejście paniczne.

To, co zrobiłem w przeszłości, to przeszukiwacz przeglądający moje ostatnie dzienniki i oparty na tym zakazie pojedyncze adresy IP, które są denerwujące przez okres 24 godzin. Jeśli ten konkretny adres IP znowu źle funkcjonuje, zostaje zablokowany na 2 dni, a następnie 3 dni itd. Itd., Otrzymujesz dryf.

Adresy IP, które są zakazane przez ponad tydzień, zostaną wysłane do mnie, a ja wysyłam wiadomości o nadużyciach do tego usługodawcy (który wie, że może nawet pomóc).

Martin P. Hellwig
źródło
0

Wybrałbym rozwiązanie Snort + OSSEC, które mogłoby dynamicznie utrzymywać coś takiego.

GNUix
źródło
Po to są bezpieczne sieci VPN.
Andrew Ensley,