Перебор IP-адресов на хостинге — и как с этим бороться

Перебор IP-адресов на хостинге — и как с этим бороться - 1

Хочу рассказать вам историю об одной хронической проблеме у каждого хостинга.

Заходит к вам пользователь, создаёт сервер. И дальше 10 секунд его держит, потом отпускает и создаёт новый сервер. И так тысячи раз. Делается это ради одной-единственной цели: при пересоздании сервера выдаётся новый IPv4-адрес.

Задача этих людей — найти в нашем пуле тот самый адрес, который их устраивает. Красивость адреса определяется по тому, где, кем и как он блокируется. Например, с какого-то в 1998 году рассылали спам, и письма с него доходят чуть хуже. С какого-то парсили Нетфликс или Пикабу, и они в чёрных списках этих ресурсов (им показывают бесконечную капчу). Кто-то болезненно засветился в Cloudflare, кто-то заблокирован в конкретном островном государстве за отзыв на местную кафешку и так далее.

Интернет настолько старый и настолько фрагментированный, что почти не осталось IPv4-адресов без истории. А учитывая, что у них ещё есть и прошлая известная геопринадлежность, международные санкции и блокировки могут быть очень запутанными.

Мы, разумеется, очищаем все свои IPv4 при закупке (а покупаем мы оптом, сразу подсетями), но мы уведомляем только основные базы вроде Спамхауса. А известных баз сотни и тысячи, и ещё есть блокировки конкретных сайтов, госструктур и плавающие показатели репутации айпишника и т. п.

Так вот, есть люди, которые перебирают адреса. Казалось бы, проблемы нет: при посекундной тарификации сколько потребил, столько и заплатил. Но они блокируют эти адреса для нормальных клиентов хостинга и потом их ещё и портят.

Бороться с этим было сложно, и 3 года мы это откладывали как могли.

Механика перебора

Учитывая, что у нас, как и у всех топов, есть мощное API и посекундная тарификация, создание новой виртуалки стоит буквально копейки. Эти товарищи, соответственно, закидывают на баланс по 50 рублей, ну максимум до 100—200 рублей. Берут у нас самый дешёвый тариф, условно за 159 рублей в месяц.

С помощью API поднимают виртуальную машину, несколько секунд держат её, проверяют выданный адрес и удаляют. За эти полминуты списываются какие-то доли копейки, а остальное тут же возвращается на баланс. Если деньги всё-таки прокрутились и не хватает — докидывают ещё 50 рублей.

Причём они заморачиваются настолько, что привязывают карты, используют все возможные услуги кэшбэка, участвуют во всех акциях — короче, стараются сделать процесс прямо максимально бесплатным.

Фармят адреса как могут.

А зачем они это делают?

Мы до конца не знаем всех их мотивов, это наши предположения, но некоторые из них железобетонно проверены.

  1. Банально спамить. Есть IP-адреса с плохой историей, есть с хорошей репутацией (когда с них отправляли что-то по делу и массово). Крупные почтовые сервисы типа Gmail, Mail.ru, Yandex и т. п. чаще и быстрее блокируют письма, если они приходят с айпишника с плохой репутацией. Соответственно, маркетологи постоянно перебирают серверы, чтобы найти тот самый чистый айпишник, с которого рассылка гарантированно дойдёт до папки «Входящие», а не улетит в спам. Иногда это банальное непонимание ситуации, и перебор идёт просто потому, что они и так отправили спам.

  2. Обходить локальные блокировки и капчу. Если прошлый владелец IP-шника занимался спамом, то крупные сайты (Google, Cloudflare, даже из наших типа Avito) начинают этот адрес блокировать. Обычный пользователь, когда пытается зайти на сайт, видит бесконечные проверки и капчу. Перебор идёт тупо для обхода этой капчи, чтобы софт по парсингу мог работать. На какие-то IP капча может вообще не показываться, на какие-то показываться всегда и т. п. Многие сайты жёстко защищаются от ботов.

  3. Обход геоограничений. Крупные европейские медиасервисы и стриминги ведут постоянный мониторинг всяких прокси. Если айпишник хостинга помечен системой безопасности как прокси — сервис часто просто не пускает пользователя.

Сейчас эта сфера напоминает международную политику. Знаете, раньше лучшими юристами были специалисты по морскому праву, а сейчас, думаю, понадобятся специалисты по санкциям.

Под такие ограничения попадают и обычные люди. У нас один из клиентов несколько раз менял зарубежные айпишники. Но не тысячами в минуту.

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

А вот уже когда они находят свой желанный айпишник, начинается эксплуатация. Точнее, они продолжают искать, но на отдельной машине начинается развёртывание сервера. Например, за час они там рассылают миллион писем, роняют репутацию айпишника в ноль и дальше удаляют сервак. Айпишник достанется кому-то ещё потом, а нам разбираться со спам-листами. Адрес выжжен.

Но самое смешное, что, когда у порядочного человека что-то не работает, знаете, что он делает? Правильно, тоже начинает заниматься перебором! Удаляет старый сервер, создаёт новый, удаляет, создаёт. Вручную, не через API.

Но фишка в том, что какому-нибудь бухгалтеру Марье Ивановне вообще пофигу, будет ли её виртуалка пинговать Netflix. Ей нужна 1С. В целом переборщиков IP не очень много, и они соревнуются именно за чистые адреса под конкретные задачи.

Недавно наткнулся на шикарный тред на Реддите. Человек пытался поднять себе VPN на DigitalOcean. Написал баш-скрипт, который создаёт виртуалки и проверяет их по базе Spamhaus. Типичный переборщик! За два часа он перебрал несколько сотен IP-шников. И когда наконец пользователь находит нужный чистый адрес, он может обнаружить, что на его только что созданный сервер, буквально через 40 секунд, уже ломится какой-то китайский бот, пытаясь подобрать пароль SSH брутфорсом.

Почему это вредит хостингу и почему нельзя просто банить аккаунты?

Казалось бы, хостеру должно быть по барабану. Ну взяли на несколько секунд, деньги-то платят.

Во-первых, при активном переборе у нас могут тупо временно заканчиваться свободные адреса. Легитимный пользователь хочет купить сервер, а свободных IP нет — их все крутят переборщики.

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

Так почему нельзя просто вычислять их и банить аккаунты? Потому что это бесполезно. Они работают с автоматизацией. Забанишь аккаунт — через пять минут скрипт зарегистрирует новый на левую почту с новой виртуальной картой. Это бесконечная борьба с ветряными мельницами.

Подходы

Самое очевидное — давать всем IPv6 вместо IPv4. Но это не решает проблему для клиента. Большинство сервисов, сайтов и спам-баз в мире всё ещё завязаны на IPv4. IPv6 отлично развивается в Индии, в других странах нужна совместимость. Боту нужен именно IPv4, чтобы стучаться в устаревшие системы. Так что этот вариант отпадает.

Делать карантин IP-адресов. Когда IP освобождается, автоматика не сразу возвращает его в общий пул, а создаёт буфер-отстойник от нескольких дней до нескольких недель. За это время мы проверяем его по базам. Но для массового провайдера вроде нас это тоже плохо. Нам тогда было бы нужно чуть ли не в два раза больше адресов (а они в дефиците и стоят дорого), потому что половина из них тупо находилась бы в карантине, а мы бы платили за их простой.

Вводить лимиты на API. Поскольку они действуют через API, казалось бы, логично нанести жёсткие лимиты на запросы: например, не чаще 3—5 раз в час для одного аккаунта. Но нам этот путь не нравится! Мы только что сделали новое крутое API по стандарту OpenAPI, одно из лучших в Европе. Всё автоматизировано. Вводя лимиты, мы убиваем саму логику работы с автоматизацией. А если нормальному DevOps-инженеру нужно развернуть пул из 50 виртуальных машин, накатить туда докеры, туда-сюда? Ему что, руками это делать? Не подходит.

Липкие адреса. На одного пользователя выделяется небольшой пул адресов, перебирает он между которыми. Грубо говоря, как создаст 5-й сервер — снова получит освобождённый айпишник от первого созданного и удалённого. Не работает, требует очень большой внутренней логики — и люди просто будут создавать больше рутовых аккаунтов.

Троллинг разного типа. Например, одни наши коллеги, когда видят подозрительный SSH, при подключении вместо приглашения ввести пароль транслируют текстовую версию 4-го эпизода «Звёздных войн». Тоже не вариант, так можно заспамить нормальных пользователей.

Ну и наше решение — бить рублём

В итоге самая нормальная мера, которую мы выбрали, — вводить фиксированный платёж (точнее, лимит при создании виртуалки). Инсталляционный платёж, который условно равен 100 рублям и не возвращается при удалении. Теперь стоимость одного перебора равна 100 рублям. Хочешь перебрать сотню адресов? Заплати 10 000 рублей.

Если что, в Яндексе реализованы неудаляемые (невозвратные) услуги. Как они это сделали — непонятно, по закону так нельзя. Я не знаю, как Яндекс разруливает это с Обществом защиты прав потребителей. Скорее всего, к ним обращаются единицы за 10 лет. Но нас юристы сразу предупредили, что это плохая идея: «Услуга не оказана, имею право на возврат». Поэтому тут платёж небольшой, он используется как минимальный квант оплаты и даже не покрывает расходы на IP-адрес. Но тем не менее ставит отличный барьер для перебора.

Итоговая цена не увеличивается. Просто если вы создали сервер и тут же удалили, 100 рублей с каждым IP не вернутся. Как показала практика, это отличный стимул, который бьёт прямо по карману спамерам, но при этом не очень затрагивает пользователей.

Вот примерно так мы сейчас и решили этот вопрос.

Автор: ntsaplin

Источник

Оставить комментарий