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

fail2ban если брут, а так ..., не уверен что это панацея

ну зайдет к вам такой умник из под популярного VPN, мобильного оператора и т.п., ну заблочите вы IP, и потеряете потенциальных посетителей
первое, это нужно на уровне iptables дропать по юзерагенту
потом по GEO (очень много из китая прет)
далее уже nginx разруливать, и отдавать лучше не 403, а 404, так как 403 ошибка подразумевает что адрес есть, но доступ запрещен
Ну у меня скорее обратная ситуация сейчас. Хотелось бы вообще все страны забанить кроме пары стран и пары-тройки айпишников для администрирования.
 
Ну у меня скорее обратная ситуация сейчас. Хотелось бы вообще все страны забанить кроме пары стран и пары-тройки айпишников для администрирования.
iptables -I INPUT ! -i lo -m geoip ! --src-cc RU,UA -j DROP
ну и добавить свои IP для доступа
 
Не всё так просто, парни!
У себя решил комплексно.
Для начала в 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
Работает как часы!
 
Последнее редактирование:
смысл дропа по UA на уровне iptables в том, чтобы не пускать дальше и не напрягать систему
и речь шла о самых примитивных ботах у которых в самом UA видно что это бот
таких просто дропаем, чтобы системе даже не приходилось анализировать на уровне приложения/службы

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

не вижу смысла банить IP и использовать fail2ban, так как бот пришел, чекнул URL, если он не нашел искомое, он уйдет дальше сканить, другие домены
а мы предлагаете банить IP, с которого приходил бот, который уже свалил и не вернется (вы ему больше не интересны, так как он не нашел у вас что искал)
а вот если он нашел что искал и начинает брутить, вот тогда уже и нужен fail2ban
 
если боты по умнее, и подделывают UA на более-менее актуальный, то на уровне nginx можно чекать кукисы
цель же стоит не забанить IP, а просто дропать ботов которые сканируют в поисках админки
не вижу смысла банить IP и использовать fail2ban, так как бот пришел, чекнул URL, если он не нашел искомое, он уйдет дальше сканить, другие домены
а мы предлагаете банить IP, с которого приходил бот, который уже свалил и не вернется (вы ему больше не интересны, так как он не нашел у вас что искал)
а вот если он нашел что искал и начинает брутить, вот тогда уже и нужен fail2ban
Сразу видно, что вам не приходилось сталкиваться с такими ботами, которые на порядок продвинутее, описанных вами: и в печеньки умеют, и парсят одну и ту же страницу с разными UA и разных IP.
Вот картинко за сегодняшний день
1550924374995.jpg
К вечеру кол-во хитов по отдельным url-ам доходит до 50+
И это всё - блокируемые, от хирожопых ботов (ботА?..).
Как показала практика, в конкретном, данном моём случае - эффективен комплексный, более гибкий подход.
 
))
вы первый пост читали?
речь не шла о парсинге,
думаю вы согласитесь что боты на чек УРЛ и парсинг это совершенно разные вещи
и ботам которые чекают УРЛ не нужны печеньки и JS, их задача - зафиксировать наличие искомого УРЛ
думаю очевидно, что дернуть УРЛ курлом и дернуть поделкой которая JS выполняет, это немного разные накладные расходы
 
Если равно - true bot.
Обходится на раз, потому что PTR в 90% случаев у хостеров не проверяется и туда можно вписать все что угодно. До недавнего времени более-менее точно валидировать можно было по владельцу ASN, это практически невозможно подделать, но ныне у поисковых гигантов часть подсетей отдана на нужды всяких новомодных облачных vds и т.д., т.е. с подсети гугла, микрософта или яндекса может работать обычный парсер, маскируясь под поискового бота.

вот тогда уже и нужен fail2ban
Как бы сказать. Часто fail2ban достаточно громоздкий, это расплата за его универсальность.
 
Обходится на раз, потому что PTR в 90% случаев у хостеров не проверяется и туда можно вписать все что угодно. До недавнего времени более-менее точно валидировать можно было по владельцу ASN, это практически невозможно подделать, но ныне у поисковых гигантов часть подсетей отдана на нужды всяких новомодных облачных vds и т.д., т.е. с подсети гугла, микрософта или яндекса может работать обычный парсер, маскируясь под поискового бота.
ну так гугл/яндекс боты ходят не с рандомных IP всего пула адресов, и на vps они думаю выделаю тоже определенные подсети свои
если я не ошибаюсь, у гугла где-то в справке даже были подсети с которых работают боты
 
ну так гугл/яндекс боты ходят не с рандомных IP всего пула адресов, и на vps они думаю выделаю тоже определенные подсети свои
Совершенно верно, поэтому дополнительно нужно проверять блок. Собственно говоря, речь о чем - я обратил внимание что проверка PTR ни о чем, проверяйте владельца блока ip.

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

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

вы первый пост читали?
Как вариант - Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху