Порівняно простий спосіб заблокувати весь трафік з певної країни?


16

У мене є веб-додаток, який не має користувачів на Філіппінах, але його постійно бомбардують спамери, картки для тестування карток та інша небажана діяльність. Я можу побачити в журналах, що вони мають IP-адреси на Філіппінах і спочатку знаходять мій сайт через google.ph або на інших .phсайтах.

У мене досить хороші фільтри та перевірки безпеки, тому вони насправді не завдають великої шкоди, але, тим не менш, я дуже втомлююся від цього. Вони використовують пропускну здатність, заповнюють мою базу даних, зловживають журналами та журналами безпеки з дерьмом, витрачають час на облік облікових записів тощо

Хоча переважна більшість філіппінських громадян не є спамерами, і я не можу просто заблокувати кожну країну, яка мене дратує, на даний момент я думаю, що рішення полягає в тому, щоб просто заблокувати весь трафік з Філіппін до мого веб-сайту. (Я знаю, що блокування IP-блоків цілих країн не є чудовою практикою, і це багато проблем, але для цієї країни я хочу зробити виняток.)

(Я знаю, що вони можуть підробити свою IP-адресу, але принаймні я можу змусити їх трохи працювати.)

Я знаю, що там є кілька сервісів геоіп. Хтось знає про безкоштовні чи недорогі послуги? Або будь-який інший спосіб відфільтрувати трафік з певної країни?

Я запускаю PHP на Apache 2, якщо це має значення.


2
Дійсне питання.
crashmstr

crashmstr: Я б так думав. Здійснення такого типу дій, щоб спробувати блокувати цілі країни, лише призведе до того, що ви скоротите більше потенційних користувачів, ніж ви знищуєте потенційних спамерів. І коли спамери почнуть надходити з областей, які ви не хочете блокувати (наприклад, з вашої власної країни), ви потрапите в глибоку дуду, тому що всі ваші попередні методи будуть марною тратою.
TheTXI

Напевно, нічого - моє поточне забезпечення безпеки справляється чудово. Будь ласка, прочитайте питання, перш ніж відповісти.

<p> Отже, що ви будете робити, коли спамери почнуть приїжджати з інших країн (а ще краще розпочати маршрутизацію трафіку через США?) </p>
TheTXI

1
Філіппіни - одна з найбільших англомовних країн світу, поряд із США, Великобританією, Канадою та Австралією. Я настійно пропоную не забороняти їх, більше ніж ви заборонили Австралію. Якщо, звичайно, ваш веб-сайт залежить від країни. Але якщо це так, він повинен мати специфічний для країни TLD, а не точковий ком, то люди знають би, що ви не маєте з ними справи, і могли б перейти на similarname.com, що й робить.
Лі Б

Відповіді:


8

Ви можете зробити це на основі IP-адреси за допомогою безкоштовного API Locatin для IP-адрес, наприклад IPInfoDB http://ipinfodb.com/index.php.


28

На відміну від більшості інших плакатів тут, я не збираюся говорити вам, що це погана ідея, що ви не повинні цього робити, що це не вирішить вашу проблему або ви повинні зробити щось інше. Ось що з нами трапилось:

Особи з Китаю та Кореї (або в будь-якому випадку, використовуючи довірених осіб у Китаї та Кореї), нас постійно дратували. Портсканінг, сканування наших веб-сайтів шукає вразливості, робить спроби входу в систему і т. Д. Я намагався їх ігнорувати (fail2ban зазвичай опікується ними), але в певні моменти вони вражали нас так сильно, що це фактично переросло в атаку DoS. Коли у вас є сотні підключень відразу від людей, які намагаються використовувати ваш веб-сервер як проксі, намагаються SSH у вашу машину, намагаються випадкові імена користувачів та паролі, вони мають тенденцію зважувати на сайті. Зрештою я набрид.

Ми не отримуємо законного трафіку з Китаю чи Кореї; наша компанія не продає там (ми - електронна комерція), тому не було ризику втратити законний трафік, тому я подумав, що простіше заблокувати їх достроково, а не чекати, коли вони будуть диками.

  1. Відвідав http://ip.ludost.net/ та завантажив свою базу даних IP <-> країни.
  2. Витягнуто всі діапазони IP-адрес Китаю та Кореї.
  3. Встановлено модуль ipset для netfilter
  4. Вбудовані звалища ipset для Китаю та Кореї (див. Нижче)
  5. Додано правила до iptables, щоб мовчки скинути будь-який трафік із цих наборів.

І це все. Наші проблемні користувачі відійшли, навантаження на мережу та сервер зменшилось, і ми різко пережили різдвяний сезон.

Примітка 1 : це можна зробити за допомогою звичайних iptables (тобто без ipset), але це обчислювально дорожче, ніж використання ipset.

Примітка 2 : Ось так виглядають звалища (ipset генерує їх для вас, якщо хочете):

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

Примітка 3 : Ми використовуємо nethash, оскільки всі наші діапазони зберігаються як блоки CIDR. Якщо ви не хочете конвертувати їх у CIDR, можете замість цього використовувати iptreemap, але я думаю, що це може бути менш ефективно, якщо ви отримуєте багато трафіку.


2
Я хочу сказати, що ідея заблокувати таку країну, як Китай чи Корея, або де-небудь з цього приводу, не є просто блокуванням купу людей, які розмовляють іншою мовою, ніж ви. Я громадянин Сполучених Штатів, і якщо я хотів придбати щось у вашої компанії, ви втратили мене як клієнта, оскільки я працюю в Південній Кореї. Так так, там є легітимний трафік там.
GNUix

16
Правильно, окрім того, оскільки ми не доставляємо до Південної Кореї, ми все одно не можемо вам продати, тому немає сенсу переходити на наш веб-сайт. У нас ніколи не було, щоб хтось із Китаю чи Кореї купував щось і доставляв його до США, тож кількість втрачених продажів, можливо, може скласти десять за рік на основі нашого аналізу.
Ден Удей

2

Як виправити помилку в коді?

Як так?

Помилка: додайте (2,2) повертає 0, має повернути 4.

Фіксований код:

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

Очевидно, що ні. Ви не просто створюєте підліткову жахливість особливих випадків, це надзвичайно крихко і рецепт катастрофи. Ви також не просто виправляєте сьогодні симптом основної проблеми.

Натомість з’ясуйте першопричину та виправте це. Це набагато надійніше, ніж будь-який хакітний патч із спеціальним корпусом, який ви могли реалізувати.

Чому ваш веб-додаток вразливий до спаму? Які характеристики роблять його вразливим? Які характеристики роблять його цінною ціллю? Чи можна змінити ці характеристики, щоб зробити ваш додаток більш надійним щодо спаму та менше спокусливої ​​цілі? Майже напевно відповідь на ці питання - так. Додайте до ваших форм ланцюги перевірки, розумно використовуйте капчу, рандомізуйте URL-адреси та / або імена параметрів, щоб зробити їх непривітними для ботів. Є багато мільйонів способів подолати цю проблему, вибачте, сказавши, що ви вибрали одне з найменш цінних, найменш корисних і найбільш крихких рішень.


15
У мене є все це, дякую. Ви насправді прочитали публікацію, перш ніж сформулювати свою відповідь?
Елі

1
@Eli, очевидно, у тебе є. Ось чому ви повертаєтесь до радикальних заходів. Тому що ваші попередні зусилля були настільки ефективними.
Клин

1

По-перше, я настійно пропоную цього не робити.

Як говорять інші набагато красномовніше, блокування конкретної країни не вирішує проблему, вона лише дещо відкладає її. Крім того, коли користувачі з цієї країни побачать, що ви спеціально їх заблокували , це лише мотивує їх, щоб створити вам більше проблем.

Це означає , що якщо ви дійсно хочете це зробити, IPinfoDB надає безкоштовну базу даних про геолокацію IP,

По-перше, було б знайти ІС просто країною.

Ви б шукали таким чином:

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

Або

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

По-друге, ви можете отримати IP-адресу конкретної країни для створення списку блоків з iptable, htaccess-файлом або будь-яким іншим способом. Це було б зроблено так:

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

що дасть вам:

63.243.149.0/24
67.212.160.0/24

0

Ви повинні використовувати такі продукти, як fail2ban, щоб відмикати помилки, які ви вводите у веб-програмі, що вказує на спробу спаму. Це заблокує IP на певний час, зробить ваш сайт стійким, але не ковдрою блокує цілі IP-блоки.


3
Як я вже говорив у дописі, зовнішність якого ніхто не читав, у мене ідеально прекрасна система блокування та запобігання спаму. Я прагну полегшити навантаження, яку він повинен виконувати, і час, який мені доведеться витратити на його спостереження.
Елі

Ось чому я запропонував fail2ban. Він автоматично забороняє для вас проблемні IP-адреси без грубої сили, що блокує великі блоки IP.
Кевін Куфал

0

Пара рішень:

  • виключити деякі IP-адреси в конфігурації Apache з mod_access
  • використовуйте GeoIp безпосередньо з Apache: http://www.maxmind.com/app/mod_geoip
  • Виключіть деякі IP-адреси з iptables Linux безпосередньо. Це більш ризиковано, якщо у вас є лише віддалений доступ, ви можете заблокувати себе
  • geoip + iptables

Ці рішення досить легко та швидко ввести в дію та безкоштовно.

Більш довгостроковим рішенням буде виявлення спаму від вашого веб-додатку, реєстрація IP-адреси та подавання iptables для автоматичного їх блокування.


0

Чи розглядали ви, хто саме керує мережами, на які ви нападаєте? Знайдіть контакт "зловживань" за допомогою whois та повідомте про них. Звичайно, воно може надходити з декількох мереж, але воно також може того варто, якщо ви побачите деякі повторювані адреси / мережеві блоки.


4
Якщо ви коли-небудь намагалися мати справу з Інтернет-провайдерами в Азії (особливо Китаї, Кореї тощо), ви побачите, що одне, що вони ніколи не роблять, - це турбота про те, щоб іноземці на щось скаржилися. Не варто їх часу робити все правильно, щоб вони цього не зробили. Повідомлення про зловживання стає марною тратою вашого часу.
Ден Удей

Я базуюсь в Кореї, і мені не було нічого, крім приємного досвіду роботи з корейськими провайдерами.
GNUix

0

Ви маєте всі права блокувати IP - адреси , з якої - небудь причини ви можете виправдати для себе. Саме ви надаєте послугу, і саме ви вирішите, хто може її мати чи ні. Можливо, сумнівно, чи це морально, але це те, що ви можете вирішити лише самі.

Однак блокування сегмента IP, оскільки він має певні географічні аспекти, мені здається більш-менш схожим на панічний підхід.

Що я робив у минулому, це те, що сканер переглядає мої останні журнали та базується на цій забороні окремих IP-адрес, які дратують протягом 24 годин. Якщо ця конкретна IP-адреса знову не поводиться, вона забороняється протягом 2 днів, потім 3 дні і т. Д. І т. Д., Ви отримуєте дрейф.

IP-адреси, які заборонені більше тижня, надсилаються мені поштою, і я надсилаю пошту зловживання цьому постачальнику послуг (хто знає, що це може навіть допомогти).


0

Я б вибрав рішення Snort + OSSEC, яке могло б підтримувати щось подібне динамічно.


Це те, для чого захищені VPN.
Ендрю Енслі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.