taki_net: (Default)
taki_net ([personal profile] taki_net) wrote2007-06-04 01:41 am

И что нам скажут сетевые гуру?

Итак, жужжалка не принимает постинги, в которых встречаются слова ру_нбп, ру_политикс и дпни (написанные латиницей).

Как я понимаю, это означает одно из двух:

1. На стороне сервера (ЖЖ) стоит фильтр контента.

2. На стороне провайдера стоит фильтр контента.

Априори п. 2 кажется наиболее вероятным, но - увы. Глюки, кажется, происходят и у тех, чей провайдет находится вне зоны "суверенной демократии".

Ну и?

[identity profile] kitya.livejournal.com 2007-06-04 12:51 am (UTC)(link)
Провайдер тут непричём. Фильтра контента тоже нет. И даже злого умысла нет. Просто какие-то хакеры (все равно откуда) организовали DDoS атаку на сервера livejournal и конкретно на сообщества ru_nbp и иже с ним. DDoS атака - это такой процесс когда огромное количество компьютеров одновременно пытается вломиться на сервер ЖЖ и например запросить у него страницу комьюнити ru_nbp, при этом запросов генерится столько что сервер уже просто не успевает отвечать (в том числе нормальным людям на другие запросы). к сожалению, не поймав хакеров, остановить такую атаку если она распределенная и все время приходит с разных машин так просто нельзя. Например нельзя просто отключить штатными средствами ru_nbp - то есть чтобы сервер получал запрос посмотреть содержание ru_nbp, расшифровывал его, проверял что ru_nbp задизейблено и генерировал сообщение об ошибке и отвечал им. На эти действия просто уйдет процессорного и сетевого ресурса не сильно менее чем на саму генерацию страницы ru_nbp и сервер будет вместо того чтобы вечно отвечать на запросы дай страницу ru_nbp страницей ru_nbp заниматься отвечая "нет страницы ru_nbp" с той же занятостью.

как же тогда выстоять перед DDoS атакой? необходимо придумать способ угадать запрос могущий быть частью атаки как можно раньше потратив минимум процессорных ресурсов и просто на него ничего не отвечать, а сразу, не думая, рвать соединение. чем меньше процессорных милисикунд у нас уйдет на это определение и разрыв связи - тем больше шансов что сервер окажется устойчивее чем нападающие компьютеры и сможет еще что-то продолжать отвечать по делу нормальным пользователям. админы жж приняли такое решение - как только, на самом нижнем уровне, еще до расшифорвки запроса по полям (что там адрес, что параметры GET/POST и т.д.) в запросе находится слово ru_nbp и ище с ним - сервер сразу прерывает содениение. Это легко проверить например если передать твоему посту дополнительный параметр GET со значением taki_da
http://taki-net.livejournal.com/268236.html?param=taki_da - все работает, но -
http://taki-net.livejournal.com/268236.html?param=ru_nbp;
сразу бросает соединение. Это позволяет серверу выдержать атаку на сообщество [livejournal.com profile] ru_nbp но к сожалению одновременно блокирует любые написания комментов или постов с этим словом. конечно если бы сервер был умнее и проверил что слово встречается только в адресе - мы бы в теории смогли писать посты со словом ru_nbp и дальше, но если бы оказалось так что пока сервер бы разбирался где адрес а где текст поста на каждое сообщение пришедшее с DDoS атакой, скорее всего мы никто не смогли бы писать никаких постов вообще %(

Если очень хочется написать таки ru_nbp - пиши в кодах ru_nbp. В таком случае сервер не сообразит что это тоже слово и пропустит.

[identity profile] kot-ivanovich.livejournal.com 2007-06-04 02:26 am (UTC)(link)
пока сервер бы разбирался где адрес а где текст поста на каждое сообщение пришедшее с DDoS атакой, скорее всего мы никто не смогли бы писать никаких постов вообще %(


Не слишком убедительно – если бы они не поленились искать и ru_nbp и конец заголовка, то сам поиск, конечно, работал бы немного дольше, но строчку-то пришлось бы сканировать гораздо более короткую...

[identity profile] idealblog.livejournal.com 2007-06-04 03:25 am (UTC)(link)
Да нет, вполне убедительно ИМХО.

Во-первых, кто знает, как были организованы DDoS-атаки? Во-вторых, кто знает, как выглядит код ЖЖ, может там какие-то жуткие неоптимальные куски именно на разборе полей поста? Или разбор полей не сделан отдельной процедурой, а перемешан с чем-то там ещё, что портить не хочется... Ну и потом бывает, что у программиста руки не оттуда растут: ну вот как написал, так и написал.

[identity profile] kot-ivanovich.livejournal.com 2007-06-04 03:45 am (UTC)(link)
Ну и потом бывает, что у программиста руки не оттуда растут: ну вот как написал, так и написал.

О, это я знаю – лет шесть software manager проработал ;-) Всё равно странно – эффект ru_nbp был впервые замечен числа двадцать четвёртого и быстро пропал. А позавчера восстановился. Так вот, мне кажется вполне вероятным, что заметив DDoS, дежурный программист в LJ воткнул regexp куда руки дотянулись. То, что они его потом сняли, свидетельствует, что они понимали что решение не очень. И что, через неделю у них нет решения лучше??? И что это за хакеры тупые такие: сайт положить можно бомбя всё, что угодно, чего они всё в одно давно закрытое community ломятся???

Disclaimer: я не намекаю, что я знаю как всё обстоит на самом деле или что это работа каких-то тёмных сид – я искренне удивляюсь.

[identity profile] idealblog.livejournal.com 2007-06-04 04:04 am (UTC)(link)
Ой, я и программер, я и менеджер... И метод костылей и заплаток применять приходилось. И уж конечно "нет ничего более постоянного чем временное"...

Исчезновение эффекта "ру_нбп" могло быть связано с прекращением атак, например. Ведь были моменты, когда даже и коммьюнити они размораживали. А в последние 3 дня атаки на LJ возобновились (это было сильно заметно, LJ просто лежал) -- вот они и включили фильтр опять.

[identity profile] kitya.livejournal.com 2007-06-04 04:54 am (UTC)(link)
не слишком убедительно, но не потому, что вы думаете %) я просто опустил некие подробности чтобы показать общую идею - отерзать надо на как можно более низком уровне чтобы остановить DDoS отаку. Чем более большое количество процессорного времени потрачено чтобы дойти до уровня остановки, тем хуже, верно?

теперь подумайте как это все работает на самом деле. На самом деле пока до сервера дойдет проходит много этапов. Сначала посылаются TCP-IP пакеты, устанавливаются соединения. это уровень ядра ОС сервера. Потом от туда веб сервер получает строки. Потом вебсервер разбирает строки где какая часть запроса где заголовок, где адрес страницы и т.д., потом передает их программе живого журнала на сервере и та уже разбирает где какие параметры и т.д.

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

[identity profile] kot-ivanovich.livejournal.com 2007-06-04 06:06 am (UTC)(link)
OK. Я не специалист в конфигурировании Linux, но подозреваю что для такого дела не надо ядро перекомпилировать – скорее всего, достаточно пару строк в какой-нибудь текстовой файл вставить. Но Вы мне сами дали эту фору: допустим я, программист Кот Иванович, сажусь писать такую функцию на чистом C, чтобы её потом вставить в TCP stack. С чего я начинаю? Прошу дать мне образцы пакетов, которыми бомбят сайт. Чем они выделяются? Наличием "ru_nbp" в определённом контексте. Моя задача – написать функцию которая работает быстро. Быстро – значит я должен сконцентрироваться на том, как мне выйти из этой функции как можно быстрее на типичном пакете, т.е. всё-таки пакете нормального пользователя, а не от DDoS манкурта. Скорее всего, ответ будет состоять в том, что я могу смотреть только на довольно узкий диапазон смещений от начала пакета, или что я могу прекращать поиск если встретил, скажем, строчку "HTML".

И потом, всё равно остается вопрос, почему просто не гасить пакеты с определённых IP. И что это за дебилы такие, которые этот DDoS организовали – их пакеты отрезают на уровне ядра уже две недели, а они всё не допрут вставить "%72%75%5F%6E%62%70" вместо "ru_nbp"?

Повторюсь, у меня нет ни малейшей идеи, что там на самом деле происходит. Но ответы 6Appart оставляют очень сильный привкус лапши на ушах.

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-04 06:32 (UTC) - Expand

[identity profile] polytheme.livejournal.com 2007-06-04 11:04 am (UTC)(link)
китя, ты гонишь. шаг конечного автомата занимает фиксированное количество тактов независимо от того, какой длины слово ты ищешь. поэтому вполне разумно было бы убедиться, что слово находится в header, слегка усложнив регулярное выражение. дополнительного процессорного времени это бы не отожрало.

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-04 11:25 (UTC) - Expand

(no subject)

[identity profile] polytheme.livejournal.com - 2007-06-05 07:04 (UTC) - Expand

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-05 12:53 (UTC) - Expand

(no subject)

[identity profile] polytheme.livejournal.com - 2007-06-05 13:35 (UTC) - Expand

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-05 14:42 (UTC) - Expand

(no subject)

[identity profile] polytheme.livejournal.com - 2007-06-05 14:58 (UTC) - Expand

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-05 21:32 (UTC) - Expand

(no subject)

[identity profile] polytheme.livejournal.com - 2007-06-06 09:15 (UTC) - Expand

[identity profile] igors.livejournal.com 2007-06-04 12:03 pm (UTC)(link)
Там на входе не линукс, а балансеры F5 BigIP, и банят скорее всего теми средствами, какие F5 вшил в своё железо.

[identity profile] geish-a.livejournal.com 2007-06-04 02:44 am (UTC)(link)
А почему же эти слова проходят через Семажик?

[identity profile] kitya.livejournal.com 2007-06-04 04:57 am (UTC)(link)
я не проверял сам, но это тоже вполне логично. семаджик не постит посты через веб форму на том же сервере что отдает. он соединиятеся по специальному протоколу с отдельным сервером только расчитанным на прием постов и т.д. так как этот отдельный сервер отдачей данных не занимается, то и атаковать его не надо, а раз его не атаковали, то и защиты на нем ставить не потребовалось.
(deleted comment)

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-04 06:09 (UTC) - Expand

[identity profile] geish-a.livejournal.com 2007-06-04 03:26 pm (UTC)(link)
Togda pochemu semagic propuskajet vse, krome dpni?

(no subject)

[identity profile] geish-a.livejournal.com - 2007-06-04 15:27 (UTC) - Expand

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-04 20:54 (UTC) - Expand

[identity profile] vaysburd.livejournal.com 2007-06-04 07:51 am (UTC)(link)
А нельзя ли вычислить, кто это делает и устроить ответную DDoS атаку?

[identity profile] kitya.livejournal.com 2007-06-04 09:17 am (UTC)(link)
в теории все можно. и это будет ответным преступлением. вам это надо %)

[identity profile] vaysburd.livejournal.com 2007-06-05 07:41 am (UTC)(link)
Надо. Если на Вас ночью напали и отобрали кошелек, отобрать его обратно ИМХО вполне нормально.

(no subject)

[identity profile] kitya.livejournal.com - 2007-06-05 12:54 (UTC) - Expand

(no subject)

[identity profile] vaysburd.livejournal.com - 2007-06-05 13:32 (UTC) - Expand
southwest: (Default)

[personal profile] southwest 2007-06-04 08:16 am (UTC)(link)
чушь собачья: от ДДОС-атаки невозможно надежно защититься путем блокировки контента по маленькому списку ключевых слов

[identity profile] kitya.livejournal.com 2007-06-04 09:16 am (UTC)(link)
можно, если блокируется на контент а пакеты. на самом низком уровне который возможно. что и происходит.

[identity profile] crux-.livejournal.com 2007-06-04 11:05 am (UTC)(link)
Можно.
Если они для защиты используют что-то опенсорсное - то это скорее всего mod_security.

[identity profile] danwinter.livejournal.com 2007-06-04 12:01 pm (UTC)(link)
какой вы умный

[identity profile] ex-dmitri83798.livejournal.com 2007-06-04 02:25 pm (UTC)(link)
интересно, а что мешает атакующим генерировать просто случайные запросы? Например, www.livejournal.com/<нужный скрипт, без которого невозможно пользоваться ЖЖ>/<случайный мусор>.

[identity profile] ex-dmitri83798.livejournal.com 2007-06-04 02:26 pm (UTC)(link)
то есть не слэш, а "?"

[identity profile] kitya.livejournal.com 2007-06-04 08:52 pm (UTC)(link)
ничего не мешает

[identity profile] ex-dmitri83798.livejournal.com 2007-06-04 02:31 pm (UTC)(link)
вообще, какой-то странный выбор "цели" атаки. DDoS положит весь сервер, а не отдельное сообщество, выбор ру_нбп в качестве атакуемой страницы это что, просто такой способ заявить "мы не любим НБП"?

[identity profile] kitya.livejournal.com 2007-06-04 08:53 pm (UTC)(link)
атакующие - всегда хулиганы. уж зачем они так сделали - вопрос вторичный. вообще может это "наши" какие-то. они озабочены нелюбовью к чему-то больше чем здравым смыслом как известно. но это уже только голые предположения.