Игорь, такая трабла... По непонятной причине свалился упс, предположительно в 3 ночи по местному времени... Что интересно, как я писал ранее, даже спрашивал - если работает упс без глюков более 140 дней, нормально ли это :) Естественно я не знал ничего, юзера не беспокоили. Глюки стали наблюдаться когда пришел утром на работу - перестал эксплорер открывать сайты.. Стал грешить на вирусню виндузятины и прочее.. Стал копать где и что.. Тут позвонил юзер и сказал что проблема на диалапе, я насторожился и решил статистику упса поглядеть, ввел "oopsctl stat" и тут мертвая тишина... Висит консоль. Глянул "ps ax"-ом а процессик то висит, даже не свалился, а top-ом не видать(или не заметил)... Погорячился я и прибил его, снова запустил, потом думаю надо было все сведения собрать и сюда выставить.. Ну да ладно, забил я на это, но потом полчаса спустя моча в голову шарахнула, и решил логи посмотреть, отчего и почему он свалился. Вот привожу кусочки логов непонятные моему мозгу. Просьба к вам, расказать что это.
Wed May 26 09:13:22 2004 [0x6a464020]parse_http_request(): Unrecognized method `SEARCH'. Wed May 26 09:13:42 2004 [0x6a4cc028]parse_http_request(): Unrecognized method `SEARCH'. Wed May 26 09:14:05 2004 [0x6a4d8031]parse_http_request(): Unrecognized method `SEARCH'. Wed May 26 09:14:06 2004 [0x6a3bc016]parse_http_request(): Unrecognized method `SEARCH'. ^^^^^^^^^^^^^^^^^^^^^^^^ вообще непонятно. что это? з.ы. я про луп.
Вот это и есть причина такоего поведения oops. Поясняю, зараженная машинка
с вирусом пытается найти других жертв по той же самой уязвимости.
Идет запрос с методом `SEARCH' (скорее всего это какое нибудь очередное расширение
протокола от MS) в качестве URL посылается очень длинная строка 38кб расчитанная
на переполнение буфера. Oops такого метода не знает (его нет в стандарте
протокола http1.1) и почему то от этой строки ему становиться очень плохо.
Сам запрос выглядит так:
SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02
\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02
[Skip 38kb]
\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90
\\x90\\x90HTTP/1.0
Solution: блокировать зараженные машинки, пока не вылечат заразу в сеть не подключать.
Для получения IP адреса этих машин небольшой патчик на run_client.c
Кстати apache 2.0.49 отбрасывает запросы больше 8190 байт, может тоже ввести
такое ограничение и отбрасывать на более ранней стадии такие запросы?
кусок лога apache:
[Wed May 26 11:19:32 2004] [error] [client 217.42.85.27] request failed: URI too long (longer than 8190)
[Wed May 26 18:02:19 2004] [error] [client 217.121.20.121] request failed: URI too long (longer than 8190)
-- 20, Karl Marx Avenue, Phone: +7-3832-462484 Russia, Novosibirsk 630092 E-mail: [EMAIL PROTECTED]
--- run_client.c.orig Thu Apr 29 20:45:18 2004
+++ run_client.c Wed May 26 18:02:20 2004
@@ -1202,7 +1202,9 @@
else if (!strcasecmp(src, "OPTIONS"))
rq->meth = METH_OPTIONS;
else {
- my_xlog(OOPS_LOG_SEVERE, "parse_http_request(): Unrecognized method `%s'.\n",
src);
+ char *s = my_inet_ntoa(&rq->client_sa);
+ my_xlog(OOPS_LOG_SEVERE, "parse_http_request() %s : Unrecognized method
`%s'.\n",s,src);
+ free(s);
*p = ' ';
return (-1);
}
