Вопрос: Относительно простой способ блокировать весь трафик из определенной страны?


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

У меня неплохие фильтры и проверки безопасности, поэтому они на самом деле не нанесут большого ущерба, но, тем не менее, я действительно устаю от этого. Они используют пропускную способность, заполняют мою базу данных, журналы нарушений и журналы безопасности с дерьмом, тратят время на учетные записи и т. Д.

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

(Я знаю, что они могут подделать их IP-адрес, но, по крайней мере, я могу заставить их работать для этого немного.)

Я знаю, что есть несколько сервисов geoip. Кто-нибудь знает о бесплатных или недорогих услугах? Или любой другой способ отфильтровать трафик из конкретной страны?

Я запускаю PHP на Apache 2, если это имеет значение.


10


Источник


Действительный вопрос. - crashmstr
crashmstr: Я бы так подумал. Принятие такого рода действий, чтобы попытаться заблокировать целые страны, приведет только к тому, что вы отключите больше потенциальных пользователей, чем отключите потенциальных спамеров. И когда спамеры начинают приходить из областей, которые вы не хотите блокировать (например, ваша собственная страна), вы будете в глубоком doodoo, потому что все ваши предыдущие методы будут пустой тратой. - TheTXI
Наверное, ничего - моя текущая безопасность отлично справляется. Пожалуйста, прочитайте вопрос, прежде чем отвечать.
<p> Итак, что вы будете делать, когда спамеры начнут приходить из других стран (или еще лучше начать маршрутизацию своего трафика через США?) </ p> - TheTXI
Филиппины - одна из крупнейших англоязычных стран мира, рядом с США, Великобританией, Канадой и Австралией. Я бы настоятельно рекомендовал не запрещать их, больше, чем вы бы запретили Австралию. Если, конечно, ваш сайт не зависит от конкретной страны. Но если это так, у него должен быть определенный домен для конкретной страны, а не точка-ком, тогда люди будут знать, что вы не имеете дело с ними, и можете пойти на similarname.com, что и есть. - Lee B


Ответы:


Вы можете сделать это на основе IP-адреса, используя бесплатный IP-интерфейс Locatin API, например IPInfoDB http://ipinfodb.com/index.php.


7





В отличие от большинства других плакатов здесь я не собираюсь говорить вам, что это плохая идея, что вы не должны этого делать, чтобы она не решила вашу проблему или что вы должны сделать что-то еще. Вот что случилось с нами:

Люди из Китая и Кореи (или, в любом случае, с помощью доверенных лиц в Китае и Корее) раздражали нас. Portscanning, сканирование наших веб-сайтов, ищущих уязвимости, попытки входа в систему и т. Д. Я попытался их игнорировать (обычно они работают с 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, но я думаю, что это может быть менее эффективно, если вы получаете много трафика.


21



То, что я хочу сделать, заключается в том, что идея блокирования такой страны, как Китай или Корея или где-либо в этом отношении, не просто блокирует группу людей, которые говорят на другом языке, чем вы. Я гражданин Соединенных Штатов, и если бы я хотел купить что-то из вашей компании, вы потеряли меня как клиента, потому что я работаю в Южной Корее. Так что да, там является там законный трафик. - GNUix
Правильно, за исключением того, что, поскольку мы не отправляемся в Южную Корею, мы ничего не можем продать вам, так что на вашем сайте нет никакого смысла. Мы никогда никого из Китая и Кореи ничего не покупали и не отправляли в США, поэтому количество потерянных продаж, возможно, достигнет десяти в год на основе нашего анализа. - Dan Udey


Как исправить ошибку в коде?

Вот так?

ошибка: Добавить (2,2) возвращает 0, следует вернуть 4.

Фиксированный код:

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

Очевидно нет. Вы не просто создаете изменчивое чудовище особых случаев, это чрезвычайно хрупкое и рецепт катастрофы. Вы также не просто исправляете симптом СЕГОДНЯ основной проблемы.

Вместо этого выясните основную причину и исправьте это. Это гораздо надежнее, чем любой хакерский патч для особых случаев, который вы могли бы реализовать.

Почему ваш веб-приложение уязвим для спама? Какие характеристики делают его уязвимым? Какие характеристики делают его ценной целью? Есть ли способы изменить эти характеристики, чтобы сделать ваше приложение более устойчивым к спаму и менее привлекательной цели? Почти наверняка ответ на эти вопросы - да. Добавьте цепочки проверки в свои формы, разумно используйте captcha, рандомизируйте URL-адреса и / или имена параметров, чтобы сделать их недружественными для ботов. Есть миллионы способов приблизиться к этой проблеме, извините, что вы выбрали один из наименее ценных, наименее полезных и самых хрупких решений.


2



У меня есть все, спасибо. Вы действительно прочитали сообщение перед тем, как сформулировать свой ответ? - Eli
@ Эли, очевидно, у вас есть. Вот почему вы возвращаетесь к радикальным мерам. Потому что ваши предыдущие усилия были настолько эффективными. - Wedge


Во-первых, я бы настоятельно предложил не делать этого.

Поскольку другие гораздо более красноречиво ставят, блокирование конкретной страны не устраняет проблему, она просто немного ее откладывает. Кроме того, когда пользователи из этой страны видят, что вы заблокировали их в частности, это будет только мотивировать их к тому, чтобы вызвать вас Больше проблемы.

Тем не менее, если вы действительно хочу сделать это, IPinfoDB предоставить бесплатную базу данных геолокации IP,

Во-первых, нужно было бы найти 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

1





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


0



Как я уже сказал в сообщении, какого вида никто не читал, у меня есть прекрасная система блокировки и предотвращения спама. Я хочу облегчить рабочую нагрузку, которую он должен сделать, и время, которое я должен потратить на мониторинг. - Eli
Вот почему я предложил fail2ban. Он автоматически запрещает IP-адреса проблем для вас без принудительной блокировки больших блоков IP. - Kevin Kuphal


Несколько решений:

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

Эти решения довольно легко и быстро внедряются и бесплатны.

Долгосрочным решением будет обнаружение спама из вашего веб-приложения, регистрация IP и передача ваших iptables для их автоматической блокировки.


0





Считаете ли вы, что найти, кто работает с сетями, на которых вы подвергаетесь нападению? Найдите контакт «злоупотребления», используя whois и сообщите им. Конечно, это может происходить из нескольких сетей, но это также может стоить того, если вы увидите некоторые повторяющиеся адреса / сетевые блоки.


0



Если вы когда-либо пытались иметь дело с интернет-провайдерами в Азии (особенно в Китае, Корее и т. Д.), Вы обнаружите, что одна вещь, которую они никогда не делают, - это забота о том, что некоторые иностранцы жалуются на что-то. Это не стоит того, чтобы делать все правильно, чтобы они этого не делали. Сообщение о злоупотреблениях становится пустой тратой времени. - Dan Udey
Я нахожусь в Корее, и у меня не было ничего, кроме приятного опыта работы с корейскими интернет-провайдерами. - GNUix


У тебя есть каждый право блокировать IP-адреса по любой причине, которую вы можете оправдать для себя. Это вы предоставляете услугу, и именно вы решаете, кто ее может или нет. Возможно, это сомнительно, если это морально, но это то, что вы можете решить только для себя.

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

То, что я делал в прошлом, заключается в том, что искатель просматривает мои самые последние журналы и основывается на этом запрете на отдельные IP-адреса, которые раздражают в течение 24 часов. Если этот конкретный IP-адрес неверно работает, он запрещается на 2 дня, затем на 3 дня и т. Д. И т. Д. Вы получаете дрейф.

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


0





Я бы выбрал решение Snort + OSSEC, которое могло бы поддерживать что-то подобное динамически.


0



Для этого необходимы безопасные VPN. - Andrew Ensley