регулярно сканируют сервер. как бороться ?

Тема в разделе "Администрирование серверов", создана пользователем 2cher777, 31 авг 2018.

Модераторы: mefish
  1. 2cher777

    2cher777

    Регистр.:
    10 мар 2018
    Сообщения:
    293
    Симпатии:
    120
    Ну у меня скорее обратная ситуация сейчас. Хотелось бы вообще все страны забанить кроме пары стран и пары-тройки айпишников для администрирования.
     
  2. Gaudi

    Gaudi

    Регистр.:
    11 янв 2007
    Сообщения:
    438
    Симпатии:
    399
    iptables -I INPUT ! -i lo -m geoip ! --src-cc RU,UA -j DROP
    ну и добавить свои IP для доступа
     
    ukraine.in.my.heart и 2cher777 нравится это.
  3. A_L_I_E_N

    A_L_I_E_N Постоялец

    Регистр.:
    1 сен 2008
    Сообщения:
    135
    Симпатии:
    64
    Не всё так просто, парни!
    У себя решил комплексно.
    Для начала в iptables дропнул большую часть азиатских /8 зон.
    Да-да! Паразитный трафик упал в 2 раза.
    Далее fail2ban, как уже говорилось, наше всё.
    Естественно - постоянная слежка за списком и мониторинг IP.
    Ну и самое интересное на закуску: парсят! Парсят нагло и.. тупо!!
    Тут предлагали банить по UA. Отвечаю - совершенно беспонтово!
    У меня ситуация сложилась так: парсят с UA популярных поисковых систем: гугл, яндекс, бинг и т.д.
    Создана была таблица в БД с индексом уникальных IP.
    Написан был просто класс AntiBot. Что делает?
    Поступает запрос на сервер, берём IP и UA, смотрим UA, опа - типа бот.
    Ключевой момент:
    делай раз -
    Код:
    $addr =  gethostbyaddr($_SERVER['HTTP_X_REAL_IP'])
    делай два -
    Код:
    $ip = gethostbyname($addr)
    делай три -
    Код:
    $_SERVER['HTTP_X_REAL_IP'] == $ip
    Если равно - true bot.
    Нет - 404 и чао-какао, попутно запомнив адрес и UA.
    Если повторно пытается с этим же набором параметров открыть страницу: показываем заглушку и предлагаем проверку.
    1550874788543.jpg 1550874799327.jpg
    Прошёл - молодец, обновили при необходимости данные и не тревожим до смены UA.
    Увы, попадают и обычные люди из подсетей, с которых идёт парсинг.
    Причём идёт со всего шарика и база IP собралась 250к+!!
    Бывают конечно сбои по определению по доменному имени и обратно, для этих целей есть статические таблицы диапазонов.
    1550875135688.jpg
    Работает как часы!
     
    Последнее редактирование: 23 фев 2019
    2cher777 нравится это.
  4. Gaudi

    Gaudi

    Регистр.:
    11 янв 2007
    Сообщения:
    438
    Симпатии:
    399
    смысл дропа по UA на уровне iptables в том, чтобы не пускать дальше и не напрягать систему
    и речь шла о самых примитивных ботах у которых в самом UA видно что это бот
    таких просто дропаем, чтобы системе даже не приходилось анализировать на уровне приложения/службы

    если боты по умнее, и подделывают UA на более-менее актуальный, то на уровне nginx можно чекать кукисы
    цель же стоит не забанить IP, а просто дропать ботов которые сканируют в поисках админки

    не вижу смысла банить IP и использовать fail2ban, так как бот пришел, чекнул URL, если он не нашел искомое, он уйдет дальше сканить, другие домены
    а мы предлагаете банить IP, с которого приходил бот, который уже свалил и не вернется (вы ему больше не интересны, так как он не нашел у вас что искал)
    а вот если он нашел что искал и начинает брутить, вот тогда уже и нужен fail2ban
     
    2cher777 нравится это.
  5. A_L_I_E_N

    A_L_I_E_N Постоялец

    Регистр.:
    1 сен 2008
    Сообщения:
    135
    Симпатии:
    64
    Сразу видно, что вам не приходилось сталкиваться с такими ботами, которые на порядок продвинутее, описанных вами: и в печеньки умеют, и парсят одну и ту же страницу с разными UA и разных IP.
    Вот картинко за сегодняшний день
    1550924374995.jpg
    К вечеру кол-во хитов по отдельным url-ам доходит до 50+
    И это всё - блокируемые, от хирожопых ботов (ботА?..).
    Как показала практика, в конкретном, данном моём случае - эффективен комплексный, более гибкий подход.
     
    2cher777 нравится это.
  6. Gaudi

    Gaudi

    Регистр.:
    11 янв 2007
    Сообщения:
    438
    Симпатии:
    399
    ))
    вы первый пост читали?
    речь не шла о парсинге,
    думаю вы согласитесь что боты на чек УРЛ и парсинг это совершенно разные вещи
    и ботам которые чекают УРЛ не нужны печеньки и JS, их задача - зафиксировать наличие искомого УРЛ
    думаю очевидно, что дернуть УРЛ курлом и дернуть поделкой которая JS выполняет, это немного разные накладные расходы
     
  7. Stesh

    Stesh

    Регистр.:
    3 фев 2009
    Сообщения:
    292
    Симпатии:
    120
    Обходится на раз, потому что PTR в 90% случаев у хостеров не проверяется и туда можно вписать все что угодно. До недавнего времени более-менее точно валидировать можно было по владельцу ASN, это практически невозможно подделать, но ныне у поисковых гигантов часть подсетей отдана на нужды всяких новомодных облачных vds и т.д., т.е. с подсети гугла, микрософта или яндекса может работать обычный парсер, маскируясь под поискового бота.

    Как бы сказать. Часто fail2ban достаточно громоздкий, это расплата за его универсальность.
     
    2cher777 и A_L_I_E_N нравится это.
  8. Gaudi

    Gaudi

    Регистр.:
    11 янв 2007
    Сообщения:
    438
    Симпатии:
    399
    ну так гугл/яндекс боты ходят не с рандомных IP всего пула адресов, и на vps они думаю выделаю тоже определенные подсети свои
    если я не ошибаюсь, у гугла где-то в справке даже были подсети с которых работают боты
     
    2cher777 нравится это.
  9. Stesh

    Stesh

    Регистр.:
    3 фев 2009
    Сообщения:
    292
    Симпатии:
    120
    Совершенно верно, поэтому дополнительно нужно проверять блок. Собственно говоря, речь о чем - я обратил внимание что проверка PTR ни о чем, проверяйте владельца блока ip.

    Нигде, это закрытая информация. В паблике только UA публичных ботов, так как тот же гугл бегает с партнерских подсетей под невинными UA (проверка клоакинга и т.д.).

    И финт ушами, раз уж пошла речь за
    К чувствительным данным - авторизация, админки, и прочее можно проверять принадлежность к зоне RIR, закрывая APNIC, AFRINIC, LACNIC. Или лучше ставя отдельные лимиты для этих зон.
     
    Последнее редактирование: 24 фев 2019
    2cher777 и A_L_I_E_N нравится это.
  10. A_L_I_E_N

    A_L_I_E_N Постоялец

    Регистр.:
    1 сен 2008
    Сообщения:
    135
    Симпатии:
    64
    Согласен частично, т.к. необходима некая золотая середина между суперточностью определения и производительностью.
    Т.к. данный АнтиБот находится непосредственно "впереди паровоза" и "на страже отечества" и прямым образом влияет на TTFB, пришлось немного пожертвовать точностью определения (точно?).
    После глубокого анализа именно моей ситуации, было определено, что в основном (99%) используются UA яндекса, гугла, бинга и мейлру.
    Система была настроена именно на них, но также мониторятся и новые варианты, а вдруг.
    Основной и базовый момент - это относительная "тупость" данного бота-парсера: алгоритм не меняется - из Африки, например, делаем запрос с UA гугла, определяем что фейк, в бан, 404; тот же UA, другой IP (например - Китай), а он в бане, предлагаем "я не робот" и так по кругу.
    Точность работы и результаты вполне устраивают, но есть один существенный недостаток: если парсить с незаблокированных IP, с нормальными, не фейковыми UA не ботов, система срабатывать не будет.
    + бывают ложные срабатывания, тогда идёт вторичная проверка по статичным таблицам.
    Анализ ситуации и длительность по времени показали, что данный парсинг идёт "на заказ", целенаправленно и однозначно используется ботнет, т.к. база IP уже 242к+ (на данный момент).
    Пока противодействие оправдывает себя на 100%, паразитный трафик упал в 2 раза, т.к. отдаётся простая заглушка.
    Но пару идей подкинули, можно пошуршать извилинами! Спс, парни! :)

    Как вариант - https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker
     
    2cher777 нравится это.