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 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 оставляют очень сильный привкус лапши на ушах.

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

айпи они тоже гасят, не беспокойтесь. но если атака распределенная - то компов много. и возможно например они написали такой вирус как обычно, которые заражает обычные компы и они начинают бомбить тоже. так в теории число компов бомбящих постоянно увеличивается у хакеров (и поэтому гасить по айпи не эффективно), но допереть вставить %72%75%5F%6E%62%70 тоже уже не просто - вирус распростораняется как есть и хакерам не просто зайти постфактум на все зараженные компы и его поменять.

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

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

[identity profile] polytheme.livejournal.com 2007-06-05 07:04 am (UTC)(link)
извиняюсь, а как ты резать будешь, дорогой ? увидев букву "d", закричишь караул и надавишь на reset ?

[identity profile] kitya.livejournal.com 2007-06-05 12:53 pm (UTC)(link)
что за детский сад? алгоритмов поиска подстроки мало?

[identity profile] polytheme.livejournal.com 2007-06-05 01:35 pm (UTC)(link)
вот я о чём и говорю. КМП тратит на букву не меньше, чем конечный автомат (меньше нельзя - это две ассемблерные команды). поэтому не гони (есть ещё алгоритм Рабина, но я не верю, что он даст выигрыш на слове dpni, а проигрыш он даст)

[identity profile] kitya.livejournal.com 2007-06-05 02:42 pm (UTC)(link)
конкретно слово dpni - это образец без повторений, так что это конечный автомат с четырьмя состояниями просто. никаких даже КМП и Рабиных в этом случае вообще говоря не надо, но это так мелочи. а вот разбор пакетов по нетривиальным регулярным выражениям - это не просто.

[identity profile] polytheme.livejournal.com 2007-06-05 02:58 pm (UTC)(link)
с пятью. но не суть. суть в том, что по любому рег. выражению строится конечный автомат. если только оно не настолько сложное, что автомат не влезет в память. но это явно не случай \ *GET\ *[/a-zA-Z]*dpni или чего-то подобного. тут число состояний исчерпывается десятками, и место в памяти они занимают только один раз

[identity profile] kitya.livejournal.com 2007-06-05 09:32 pm (UTC)(link)
ну как мимимум 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 - ничего не изменится. да если бы это делалось на законных пользователей ничего бы не изменилось. но когда их бомбят запросами - каждое состояние автомата на счету %)

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

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