Повторяющиеся / непрерывные обращения к страницам, пустой реферер, не злонамеренный
Я задал этот вопрос на прошлой неделе, следовал советам по отладке и теперь имею дополнительную информацию.
У меня странная проблема - на веб-сайте с высоким трафиком (миллионы посетителей в месяц), каждый день мы получаем около 20 или около того ситуаций, когда один хост начинает непрерывно запрашивать одну и ту же страницу снова и снова - несколько раз в секунду, для любой отрезок времени от нескольких минут до целого дня.
Атака, по-видимому, не является вредоносной, поскольку я отследил IP-адрес и сопоставил их с некоторыми из наших зарегистрированных пользователей, с которыми я беседовал. Говорят, что когда это происходит, их компьютер работает медленно, но в остальном его можно использовать. Это происходит не при каждой загрузке страницы, а время от времени.
Хиты журнала имеют следующую характеристику:
- Они начинают "нормально" - загрузка первой страницы фактически получает доступ ко всем ресурсам страницы (изображения и т. Д.), А также к.php
- Затем хост начинает запрашивать просто страницу php без ресурсов, обычно по одной в секунду (но иногда быстрее, а иногда на несколько секунд медленнее)
- Удаленный браузер всегда Firefox 3.x (мы видели, как 3.5.3 и даже 3.0.2)
- Последующие хиты не имеют реферера, хотя в первом запросе страницы был один
- Это продолжается до тех пор, пока посетитель находится на этой конкретной странице, а загрузка следующей страницы часто нормальная
- Пользователь часто не замечает, что происходит: его страница не перезагружается, поэтому все, что происходит, происходит для него в фоновом режиме, и я считаю, что Firefox просто выбрасывает информацию
- Это происходит как на статических (например, контакт), так и на динамических страницах (например, почтовый ящик)
- Распределение IP-адресов затронутых хостов не имеет сходства, которое я могу заметить (например, они не все находятся за корпоративным брандмауэром)
- Мы думали, что плохой javascript на странице может вызвать его, но полное отключение javascript никак не повлияло на проблему.
Мы знаем, что с этим делать. Простой DoS-фильтр не подходит - у нас это есть, и порог его запуска намного выше, чем запрос одной страницы (без связанных изображений, CSS и т. Д.) В секунду. Мы также установили mod_evasive, но это не улавливает их, поскольку у нас есть система с несколькими серверами, которая работает для каждого ребенка.
Стек - LAMP, установка Redhat, PHP 5.2, Apache 2.2.3, с блоком NGINX, работающим в качестве программного балансировщика нагрузки перед несколькими веб-серверами и базами данных.
В отсутствие хороших идей мы прибегли к написанию нашего собственного фиктивного фильтра в memcached, который хранит ключ IP+URI в memcached IFF, пользователь Firefox 3.x, а реферер пустой и увеличивает каждый запрос страницы. Как только он пересекает определенный порог в определенный период времени, мы отправляем 403 дополнительных запроса.
Однако я НЕ думаю, что это подходящее место в сетевом стеке для решения этой проблемы. Надеясь, что кто-то еще видел это и может помочь нам найти образец.
Спасибо за все, что вы можете внести свой вклад!
1 ответ
- Пользователь часто не замечает, что происходит: его страница не перезагружается, поэтому все, что происходит, происходит для него в фоновом режиме, и я считаю, что Firefox просто выбрасывает информацию
Звучит почти как фоновый процесс... расширение, которое сбилось с пути?
- Это продолжается до тех пор, пока посетитель находится на этой конкретной странице, а загрузка следующей страницы часто нормальная
Усиливает случай для ошибки в расширении. Что-то ужасно дает сбой во время "нормальной" обработки, но при перезагрузке оно перезапускает любую обработку, которая зависла, и преуспевает, вместо того, чтобы зацикливаться.
Это или, как упоминал Joe Holloway, что-то, что делает поддержание Joe Holloway, предназначено для других сессий. (комментарий +1 за указание на пример)