DDoS с неожиданного направления или «стоит ли боятся ботов ПС?»

от автора

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

Преамбула. У меня имеется выделенный сервер, на котором крутится порядка нескольких десятков сайтов. Проблем не было никогда, машинка бодрая, новая. Несколько дней назад поступил репорт, что всё «зависло». Пришлось делать удаленную перезагрузку. Позже заметил, что нагрузка на ЦП выросла до 60% с 10% и стала держаться на этом уровне. Я, конечно, насторожился, но мало ли.

И вот вчера всё виснет напрочь. Перезагружаю — прогруз и снова полный штиль. Все сайты уходят вне доступа. После мониторинга процессов увидел загрузку mysql в 99.9%. Удивился, пошел искать сайт, с которого такая загрузка идёт. Нашел, отсеял другие запросы и увидел, что кто-то настойчиво долбит в 40к запросов в секунду, перегружая бедную БД по «самое не могу». Начинаю копать логи и вижу подсети, с которых идут эти запросы. Подключаюсь к серверу, прописываю DROP в iptables по маске /24, и всё нормализуется.

Обратил внимание, что ддосер посылает идентификацию Яндекс-бота. Слегка это удивило, но мало ли. Решил проверить, и оказалось, что две подсети, которые мне пришлось забанить принадлежат как раз-таки паучкам Яндекса.

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

На данный момент фильтр закрыт от индексации через htaccess, боты разбанены, а я жду ответа от поддержки Яндекса.

Небольшой кусок логов

[29/Oct/2015:13:57:10 ] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=50&page=7&page=5&show=10&page=4&page=6 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.29 — — [29/Oct/2015:13:57:10 ] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=50&page=7&page=5&show=10&page=4&page=1 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.16 — — [29/Oct/2015:13:57:10 ] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=50&page=7&page=5&show=10&page=4&page=2 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.140 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=111&show=50&page=1&page=23&show=30&page=37 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.16 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=111&show=50&page=1&page=23&show=30&page=26 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.140 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=111&show=50&page=1&page=23&show=30&page=25 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.139 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=111&show=50&page=1&page=23&show=30&page=24 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.29 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=111&show=50&page=1&page=23&show=30&page=20 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.16 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=111&show=50&page=1&page=23&show=30&page=21 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.140 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=5&show=10&page=3&show=50&page=1&page=3&page=6&page=23 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.139 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=1&page=3&show=30&page=1&page=3&page=37 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.29 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=5&page=4&page=1&page=2&page=111 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.76.13.189 — — [29/Oct/2015:13:57:10] «GET / HTTP/1.1» 200 102 "-" «Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36»
87.250.244.16 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=8&page=7&page=8&page=6&page=4&page=5 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.140 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=8&page=7&page=8&page=6&page=4&page=7 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.139 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=8&page=7&page=8&page=6&page=4&page=6 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.29 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=8&page=7&page=8&page=6&page=4&page=1 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.16 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=8&page=7&page=8&page=6&page=4&page=2 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.138 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=4&show=50&show=10&show=30&page=37 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.143 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=1&show=50&page=4&show=30&page=37 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.137 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=30&page=1&page=3&page=2&page=3&page=1 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
141.8.141.132 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=30&page=1&page=3&page=2&page=3&page=6 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.15 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=30&page=1&page=3&page=2&page=3&page=4 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.38 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&show=30&page=1&page=3&page=2&page=3&page=5 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
87.250.244.14 — — [29/Oct/2015:13:57:10] «GET /catalogue/kotli/?176&filter=1&fldX=0&page=8&page=6&show=10&page=7&page=9&show=30&page=11&show=50 HTTP/1.1» 200 102 "-" «Mozilla/5.0 (compatible; YandexBot/3.0;

И я понимаю, будь я предусмотрительней — подобных проблем не было бы. Но всё же.

Спасибо.

ссылка на оригинал статьи http://habrahabr.ru/post/270297/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *