January 2019

M T W T F S S
 123456
78 910111213
14 151617181920
21222324252627
28293031   

За стиль благодарить

Развернуть метки

No cut tags
Monday, June 4th, 2007 01:41 am
Итак, жужжалка не принимает постинги, в которых встречаются слова ру_нбп, ру_политикс и дпни (написанные латиницей).

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

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

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

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

Ну и?
Monday, June 4th, 2007 02:26 am (UTC)
пока сервер бы разбирался где адрес а где текст поста на каждое сообщение пришедшее с DDoS атакой, скорее всего мы никто не смогли бы писать никаких постов вообще %(


Не слишком убедительно – если бы они не поленились искать и ru_nbp и конец заголовка, то сам поиск, конечно, работал бы немного дольше, но строчку-то пришлось бы сканировать гораздо более короткую...
Monday, June 4th, 2007 03:25 am (UTC)
Да нет, вполне убедительно ИМХО.

Во-первых, кто знает, как были организованы DDoS-атаки? Во-вторых, кто знает, как выглядит код ЖЖ, может там какие-то жуткие неоптимальные куски именно на разборе полей поста? Или разбор полей не сделан отдельной процедурой, а перемешан с чем-то там ещё, что портить не хочется... Ну и потом бывает, что у программиста руки не оттуда растут: ну вот как написал, так и написал.
Monday, June 4th, 2007 03:45 am (UTC)
Ну и потом бывает, что у программиста руки не оттуда растут: ну вот как написал, так и написал.

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

Disclaimer: я не намекаю, что я знаю как всё обстоит на самом деле или что это работа каких-то тёмных сид – я искренне удивляюсь.
Monday, June 4th, 2007 04:04 am (UTC)
Ой, я и программер, я и менеджер... И метод костылей и заплаток применять приходилось. И уж конечно "нет ничего более постоянного чем временное"...

Исчезновение эффекта "ру_нбп" могло быть связано с прекращением атак, например. Ведь были моменты, когда даже и коммьюнити они размораживали. А в последние 3 дня атаки на LJ возобновились (это было сильно заметно, LJ просто лежал) -- вот они и включили фильтр опять.
Monday, June 4th, 2007 04:54 am (UTC)
не слишком убедительно, но не потому, что вы думаете %) я просто опустил некие подробности чтобы показать общую идею - отерзать надо на как можно более низком уровне чтобы остановить DDoS отаку. Чем более большое количество процессорного времени потрачено чтобы дойти до уровня остановки, тем хуже, верно?

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

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

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

Повторюсь, у меня нет ни малейшей идеи, что там на самом деле происходит. Но ответы 6Appart оставляют очень сильный привкус лапши на ушах.
Monday, June 4th, 2007 06:32 am (UTC)
нет, потому что строчка HTML может быть вообще в другом пакете. запомнить что найдена строчка HTML и потом искать строчку ру_нбп это уже значительно больше действий чем тривиально убивать ру_нбп. и главное зачем извращаться? ру_нбп - это не "я" или "а" - такую строку нельзя написать случайно. если ее убить - никто не пострадает. чего же извращаться? сообщество то все равно засуспенжено, чего на него ссылки писать?

айпи они тоже гасят, не беспокойтесь. но если атака распределенная - то компов много. и возможно например они написали такой вирус как обычно, которые заражает обычные компы и они начинают бомбить тоже. так в теории число компов бомбящих постоянно увеличивается у хакеров (и поэтому гасить по айпи не эффективно), но допереть вставить %72%75%5F%6E%62%70 тоже уже не просто - вирус распростораняется как есть и хакерам не просто зайти постфактум на все зараженные компы и его поменять.
Monday, June 4th, 2007 11:04 am (UTC)
китя, ты гонишь. шаг конечного автомата занимает фиксированное количество тактов независимо от того, какой длины слово ты ищешь. поэтому вполне разумно было бы убедиться, что слово находится в header, слегка усложнив регулярное выражение. дополнительного процессорного времени это бы не отожрало.
Monday, June 4th, 2007 11:25 am (UTC)
какое регулярное выражение??????? ни до каких регулярных выражений дело доходить не должно, не смешите мои тапочки
Tuesday, June 5th, 2007 07:04 am (UTC)
извиняюсь, а как ты резать будешь, дорогой ? увидев букву "d", закричишь караул и надавишь на reset ?
Tuesday, June 5th, 2007 01:35 pm (UTC)
вот я о чём и говорю. КМП тратит на букву не меньше, чем конечный автомат (меньше нельзя - это две ассемблерные команды). поэтому не гони (есть ещё алгоритм Рабина, но я не верю, что он даст выигрыш на слове dpni, а проигрыш он даст)
Tuesday, June 5th, 2007 02:42 pm (UTC)
конкретно слово dpni - это образец без повторений, так что это конечный автомат с четырьмя состояниями просто. никаких даже КМП и Рабиных в этом случае вообще говоря не надо, но это так мелочи. а вот разбор пакетов по нетривиальным регулярным выражениям - это не просто.
Tuesday, June 5th, 2007 02:58 pm (UTC)
с пятью. но не суть. суть в том, что по любому рег. выражению строится конечный автомат. если только оно не настолько сложное, что автомат не влезет в память. но это явно не случай \ *GET\ *[/a-zA-Z]*dpni или чего-то подобного. тут число состояний исчерпывается десятками, и место в памяти они занимают только один раз
Tuesday, June 5th, 2007 09:32 pm (UTC)
ну как мимимум http 1.1 может запрашивать
как
GET http://community.livejournal.com/dpni/profile/index.html

так и
GET /profile/index.html
...
Server: http://dpni.livejournal.com/

при этом между GET и Server могут находиться еще строчки и в теории они могут прийти в разных пакетах даже (или не могут, тут не уверен?) и кроме того это надо будет отличить от пост параметра Server=xyz например.

в таком деле нет - разницы заменим 5 шагов автомата на 15 - ничего не изменится. да если бы это делалось на законных пользователей ничего бы не изменилось. но когда их бомбят запросами - каждое состояние автомата на счету %)
Wednesday, June 6th, 2007 09:15 am (UTC)
это почему у них каждое состояние на счету ? таблица состояний-то одна.
ладно, наверное это бесплодная дискуссия, наверняка они проблему решали в условиях цейтнота, и не задумывались о тонкостях.
Monday, June 4th, 2007 12:03 pm (UTC)
Там на входе не линукс, а балансеры F5 BigIP, и банят скорее всего теми средствами, какие F5 вшил в своё железо.