Сказ о том, как я боролся со спамерами, а Роскомнадзор боролся со мной

Захожу вчера на сайт, вижу на первом месте в блоке «Самое популярное» статью «Подростки умирают от собачьего кайфа», размещенную 5 лет назад. Как, опять умирают?!

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

Атака

Расследование показало, что несколько дней назад каккер из Америки вручную зарегистрировался, вписал каптчу и намусорил на Либератуме. Защита на сайте установлена, но ведь это защита от «нормальных спамеров», которые используют ботов, а не от отморозков, которым совсем заняться нечем, готовых вручную разгадывать картинки.

Спам был в течении нескольких минут удален, но тот козел, окрыленный успехом, разместил на своем сайте ссылку на Либератум и подписал, что спам проходит. Ссылка была на статью по собачий кайф. Убогие коллеги этого жалкого гражданина натравили по ссылке спам-ботов.

Многоуровневая защита от автоматической рассылки спама отфильтровала все 100% спамных комментариев. В принципе, можно было бы ничего и не предпринимать, но лишние загрузки страниц порождают паразитный трафик, несколько замедляют генерацию страниц для нормальных юзеров и могут привести к перерасходу предоплаченного трафика на хостинге. К тому же, вызов брошен, мне оставалось только его принять.

Защита

Чтобы защитить сайт от спамеров, нужно добавить в shitlist фаейрвола плохие IP и не допустить попадания хороших. Это всё. Но сложность в нюансах. Как отделить засранцев от честных граждан?

Тут надо подумать, чем спамер отличается от неспамера? Наверное, точкой входа на сайт и отсутствием (или поддельным) реферером. Я сделал SQL-запрос к базе и получил свыше сотни IP. Запрашивал данные из таблицы accesslog, где Drupal хранит журнал доступа, по условию нулевого реферера и запрошенной странице (про кайфующих подростков). Сложность в том, что с нулевым реферером на сайт заходят и честные пользователи. Их мало (честных без рефереров, а не честных вообще), но попасть под бан невиновные люди не должны. Продолжаем развивать мысль.

Чем бот еще отличается от небота? Боты не используют cookie. Пробегаемся по списку и для каждого IP делаем проверку по таблице sessions, где Drupal хранит информацию о сессиях. Эффект тут основан на том, что для нормального юзера с нормальным браузером сайт отправляет куку, браузер ее устанавливает, отсылает сайту и все перемещения привязываются к одной сессии. Спамер заходит не браузером, а специализированным софтом. Чаще всего это самопальный скрипт (или говнософт типа Хрумера, обожаемый пионерией), который ищет открытые формы и потом на автомате гадит через них спамом. Так вот, паук обычно примитивен и не работает с куками. Под каждую загрузку страницы Drupal требует куку, куки нет, создается новая сессия. Остается выбрать записи, в которых одинаковые IP, но разные идентификаторы сессии.

Получаем список, остается исключить поисковых ботов и можно делать iptables -j REJECT (или DROP — это отдельный вопрос для горячих дебатов).

Но забанить просто по IP мало. Ведь из списка можно вытащить гораздо больше ценной информации. Например, известно, что лучше превентивно банить все хостинги, потому как реальных посетителей с хостинговых IP по понятным причинам быть не может, зато могут быть попытки взлома и рассылки спама. Общее правило такое: нашел подсеть хостинг-провайдера — забань ее сразу.

Пробегаемся по IP, вызываем для каждого хуйиз и пропускаем через grep по ключевым словам "hosting", "vps", "vds", "colocation" и так далее. Если слово встречается, выдираем все тем же грепом поле CIDR, а если его нет, то inetnum. В последнем случае придется вручную воспользоваться цидрокалькулятором. Далее баним целыми подсетями. Мне, например, попались, помимо прочего, три подсети /16 (65 тыс узлов). Несколько из забаненных хостингов входило в «рекомендуемый» список Роскомнадзора.

Запускаем iptables -I INPUT -s адрес-спамера -j REJECT и малолетние каккеры заканчивают спамить и идут делать уроки.

Контрнаступление

Отразить атаку — лишь половина дела. Надо еще и настучать хостеру. Для этого в каждом хуйизе указывается email для жалоб. На него и надо отправлять письма негодования. Жалоба пишется на двух языках, в письме указывается причина недовольства, IP-адрес, точное время, адрес атакуемого сайта, контактная информация. Стилистика — деловая. Никакого жаргона или ругательств.

Понятно, что для рассылки спама используется чужой хостинг через взломанные сайты. Но сообщая о проблеме хостеру, вы:
а) помогаете владельцу сайта у знать о проблеме и вернуть контроль над сайтом;
б) лишаете спамера ресурсов, помогаете снизить объемы спама;
в) восстанавливаете в интернете справедливость.

Стук во имя добра — что может быть прекрасней?

Кто-то скажет, что хостер вряд ли будет заниматься расследованием, ибо это не отражается напрямую на прибыли, а иногда и вовсе отпугивает клиента. С одной стороны, это так. Есть т.н. абузоустойчивые хостинги, которые изначально создавались с единственной целью — гадить. Но есть и нормальные хостинги. Например, в Digital Ocean, где сейчас хостится Либератум, каждая жалоба внимательно изучается. Я говорю это не просто так. Когда Роскомнадзор зацензурил на Либератуме статью о полицейских-подстрекателях, помимо письма мне еще была отправлена жалоба в Digital Ocean.

Хороша картина, да? Чиновники рассказывают нам по ТВ о плохих американцах, а за спиной пишут прошения американским коммерсам зацензурить сайты россиян. Мол, помогите, пожалуйста, задушить сайт по соображениям цензуры, а то у нас руки не дотягиваются.

Ну так вот, Роскомнадзор написал мне, я выполнил требования, но стук в Digital Ocean запустил расследование. Хостер со мной связался и поинтересовался, почему я проказничаю. Я в ответ поинтересовался у хостера, кто платит бабки: я или Роскомнадзор? Если я, то почему Digital Ocean — американская компания — считает нужным исполнять законы чужого государства и цензурировать мой сайт? Может тогда Digital Ocean будет получать бабки с Роскомнадзора, а я найду менее ссыкотного провайдера? Тем более, что конкуренция на рынке хостинга очень серьезная? Ребята в DO быстро поняли, что душить сайты за бесплатно не хотят, а хотят деньги и сняли свои претензии. Мол, я неправильно их понял, они лишь заботливо информируют, что на меня поступил донос. Это я к тому, что многие хостеры очень серьезно относятся к жалобам, проводят расследования и если с аккаунта рассылается спам, то аккаунт заморозят, пока владелец не выгонит спамеров и не залатает дыры. Стучите и достучитесь.

Эпилог

Спамеры. Это паразиты. Глисты в теле интернета. Если у вас есть сайт и вы за ним не следите, вы подкармливаете паразитов и когда-нибудь они сожрут ваш сайт вместе с админом. Обращайте внимание на необычное поведение, изучайте журналы доступа, работайте с iptables.

Роскомнадзор. Объясните мне, почему российская госструктура пишет жалобы американским коммерсантам на российских граждан, на чьи налоги эта контора существует? Где тут смысл, в чем логика? В Роскомнадзоре не в курсе, что российские законы не действуют в Штатах? К чему пустая трата времени?

Оценка: 
5
Средняя: 5 (4 оценки)

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.