bash.im ithappens.me zadolba.li
8366

Очередь в парадный вход

27 января 2012, 10:00

Работал я над cайтом. В одно предрабочее утро пишет мне другой программист, работающий над этим же проектом, только удалённо. Говорит, что сайт не работает. Пытаюсь зайти сам — ошибка подключения к MySQL. Ну, думаю сервер упал или перезагружают.

Приехал на работу, позвонил сисадмину: «Перезагрузи MySQL-сервер». — «Смысла нет, наc DDoS’ят». Начинаем разбираться. Cтранное дело: атаки идут с внешнего IP компании. Получается, валим мы сами себя. Ну, подумали, ботнет пробрался в сеть. А по логам ничего не видно, кроме IP. Запрашивается корень, строка UserAgent пустая.

Искали мы вирус два дня. Уже думали отключать по одной подсети, чтобы таким методом сузить круг подозреваемых. Решили распарсить логи — может, там что-нибудь видно будет. Заметили, что количество запросов в секунду всегда равно 63. И у меня в памяти копошится то же число: что-то где-то на сайте было равно 63.

Решил проверить последний модуль, который правил — скроллер товаров. Зашёл в его настройки — и точно, установлено 63 товара на отображение. Полез в исходники. Там проверяются размеры картинок товаров, чтобы они одинаково выглядили в скроллере, а картинки-то загружаются по HTTP! Вместо того чтобы заглянуть в соседнюю папку и узнать размеры там, скрипт тянул картинки через сервер, тем самым напрочь забивая канал.