Назад | Перейти на главную страницу

Увеличено количество таймаутов 408 запросов для нулевого значения на веб-сервере.

В моем журнал смотреть записей, их количество постоянно растет:

  408 Request Timeout
      null: 694 Time(s)

На моем веб-сервере.

Вот некоторые из того, что похоже на запросы от /var/log/apache2/access.log журнал доступа:

ip - - date requestsfor"-"? httpcode bytes referrer useragent
75.149.117.146 - - [28/Jan/2013:17:49:47 -0500] "-" 408 0 "-" "-"
65.55.215.247 - - [28/Jan/2013:17:57:40 -0500] "-" 408 0 "-" "-"
205.157.206.75 - - [28/Jan/2013:18:00:21 -0500] "-" 408 0 "-" "-"

Примеры обычных запросов доступа, конечно, содержат гораздо более важную информацию, например:

ip - - date request-for httpcode bytes referrer useragent
66.251.23.171 - - [28/Jan/2013:17:45:41 -0500] "GET /images/al/al-mb0608tn.jpg HTTP/1.1" 200 4085 "http://example.com/brands.php?F=S&BrandCode=AL" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"

См большая выборка моего журнала доступа здесь (с несколькими обычными запросами на получение, которые 408 вместе с остальными)

Я сделал обратный поиск IP-адресов на IP-адресах, и, похоже, они пришли из разных мест в США и Канаде. Я полагаю, это может означать, что здесь задействован прокси? Есть большой блок из:

96.42.74.117 - - [18/Feb/2013:02:55:58 -0500] "-" 408 0 "-" "-"

Это часто повторяется.

Я не решаюсь делать поспешные выводы о том, что это атака, а не сбой, но количество зарегистрированных зондов неуклонно растет примерно в то же время, например журнал также говорит

 A total of 125 sites probed the server
    107.22.9.89
    108.132.76.100
    108.172.60.59
    108.226.133.142
    12.166.56.82
    12.54.94.24

.... и далее со списком различных IP-адресов, которые использовали обнаруженные зонды против сервера. Существует некоторое совпадение перечисления IPS как «зондирования» сервера и IPS, которые попадают в журнал доступа с нулями, так что это может указывать на атаку, но, поскольку сервер должен обслуживать запросы, будет трудно определить законный тайм-аут от атаки тайм-аута запроса DOS, если это то, что здесь происходит.

Как мне отладить эту проблему или, если это атака, справиться с этой атакой?

Из проведенных мною исследований, это некоторые возможности, ведущие к 408 сообщение. Вы можете протестировать каждый, чтобы определить подходящий для вашего случая.

1) Очень низкий Apache TIMEOUT значение - ваш веб-сервер может завершить сеанс до того, как клиент даже получит возможность отправить запрос.

слишком много кодов ошибок 408 в журнале доступа

2) browser predictive optimization - вы можете легко протестировать это в разных браузерах. Просто делай tail -f /var/log/apache2/access.log, используя релевантные ключевые слова, которые приведут ваш сайт на первую страницу поиска, наведите указатель мыши на ссылку, указывающую на ваш сайт, проверьте, отображается ли предварительный просмотр сайта… все это, не нажимая на ссылку, которая открывает ваш сайт.

http://forum.linode.com/viewtopic.php?f=10&t=8048

3) denial of service attack - ддос греет типа slow loris может открыть слишком много подключений к серверу, не отправив ни единого прощания, связывающего все процессы Apache.

http://blog.spiderlabs.com/2011/07/advanced-topic-of-the-week-mitigating-slow-http-dos-attacks.html

Цитата из ссылки выше -

«Хитрость заключается в том, чтобы открыть соединение с сервером, но не отправить ни одного байта. Открытие соединения и ожидание почти не требует ресурсов со стороны злоумышленника, но постоянно заставляет один процесс Apache терпеливо ждать запроса. Apache будет ждать, пока время ожидания истекает, а затем закройте соединение. Начиная с Apache 1.3.31, время ожидания строки запроса регистрируется в журнале доступа (с кодом состояния 408). Сообщения о времени ожидания строки запроса появляются в журнале ошибок с информацией об уровне. Apache 2 не записывает такие сообщения в журнал ошибок, но предпринимаются попытки добавить те же функции, что и в ветви 1.x. "

Большинство ответов сервера кода 408, похоже, связаны с тайм-аутом клиента, а не с ожиданием. Я исключаю отказ в обслуживании в упомянутых случаях, моих серверах и упомянутых рецензиях, потому что количество совпадений невелико. Я пробовал, но не смог воспроизвести какие-либо ошибки 408 через предварительные просмотры в Safari, Chrome или Firefox под OS X. Я также не вижу их в большинстве месяцев на локальном (непубличном) сервере, чего я ожидал бы, если бы они были нормальным поведением браузера. Это могут быть браузеры, которые смотрят вперед, открывая соединения и никогда не используя их для запроса, но я не вижу такого поведения, достаточного для того, чтобы учесть количество 408 на этих общедоступных серверах. Хотя открытие соединения с пустым запросом действительно запускает соединение, имеет смысл заглянуть вперед, чтобы захватить ресурс или использовать ОПЦИИ (которые я также вижу только в редких ситуациях с перекрестными сайтами и пауками).

Я выполнил поиск хоста DNS в списке из 47 IP-адресов, получивших 408 ответов без идентифицированного ресурса, агента или размера запроса в журнале с малоиспользуемого общедоступного сервера. Я проигнорировал дополнительные 67 IP-адресов, которые различались только последним кортежем, и представил их первым в каждом наборе. Итак, это 47 различных клиентских сетей / интернет-провайдеров. Время ожидания Apache по умолчанию составляет 60 секунд. Из 47 произведенных машин 20 наименований. Из этих машин 10 (50%) находились в материковом Китае, 5 - в США (25% и все OH, OK и NH) и 5 ​​- между Бразилией, Великобританией, Италией и Тайванем (ROC). Я также подозреваю, что значительная часть из 27 IP-адресов, которые не привели к названию машины, также находятся в Китае, но не могут этого показать.

Из 67 IP-адресов, проигнорированных, поскольку их блок уже был представлен, 63 были пауками Baidu: baiduspider - *. Crawl.baidu.com (если это кажется чрезмерным, имейте в виду, что теперь он больше, чем Yahoo или Bing по количеству поисковых запросов в месяц - Второй только в Google).

Если бы они были вызваны поведением современного браузера, я бы ожидал, что в США их будет больше. Сервер, на который я вошел, находится в районе залива. Вместо этого я думаю, что это в первую очередь перегрузка сети, из-за которой установка соединений занимает слишком много времени и позволяет отправлять и получать полный запрос до того, как соединение будет разорвано или истечет время ожидания Apache. В частности, чрезмерная загруженность из-за роста спроса, неадекватной трансграничной пропускной способности и национальной инфраструктуры межсетевого экрана в Китае. Это также может быть преднамеренный сброс поддельного соединения, но для этого нет никаких оснований ожидать этого. Остальные - домашние пользователи с плохим подключением или неудачным оборудованием в другом месте.

Я думаю, что проблема в первую очередь связана с подключением на стороне клиента, но вы можете захотеть получить согласительную и не графическую страницу с ошибкой 408. Хотя, судя по размеру 0, указанному в журнале исходящего ответа, Apache не использует страницу с ошибкой.

В моем случае Apache был перегружен. Ответ был выключить KeepAlive и увеличьте MaxClients в apache.conf.

У меня возникла эта проблема, когда я изменил конфигурацию Apache для своего сервера FastCGI.


Увеличение -idle-timeout значение от 60 до 900 дало мне несколько бессонных ночей, поскольку я не мог отследить 408 ошибок до этого небольшого изменения.

Рад, что наконец исправил это, вернув это значение на 60.