- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
zexis, ну. а я, что, возражаю? это лишь подтверждает, что со временем логика проверок усложняется и потребуется нормальный удобный для быстрой разработки язык программирования.
После кучи бенчмарков выяснилось, что пытаться что-то постфактумно делать - намного сложнее и дороже - надо распарсивать лог (хотя формат я делал несколько более распарсиваемый)
В чем сложность анализировать логи постфактумно раз в минуту?
Может быть есть решение и более быстрые( связанные с написанием модулей для вебсаервера), но и постфактумный анализ логов парсером вполне работает.
Моим анализатором 10 000 строк анализируется около секунды, 80 000 строк около 8 секунд. Анализатор загружает лишь одно ядро процессора. На современном сервере ядер несколько, так что остальные ядра при работе анализатора свободны.
При мощном HTTP-флуде с лог пишется максимум 100 000 – 200 000 запросов в минуту.
При среднем HTTP-флуде не более 10 000-30 000 запросов в минуту.
Анализа 5 000 - 80 000 строк обычно хватает что бы найти большую часть ботов.
К тому же анализатор сам решает, сколько строк считывать и анализировать из лога каждую минуту, в зависимости от количества запросов в минуту. Что бы не делать лишней работы.
myhand, проще блокировать. Думаю, мало кто этим заморачивается. Генерировать капчу это немало ресурсов нужно.
То, что "проще" - никто и не спорит. Во-вторых, и с капчей есть варианты.
А в-третьих, иногда лучше временно просто дать 503 для подозрительных клиентов.
Я, например, для vbulletin могу ид пользователя на форуме определить только из логов. Причем, не важно сохранял ли он пароль в кукисах.
А что мешает это делать на уровне веб-сервера?
Буду. Чего именно существенного нету в CustomLog http://httpd.apache.org/docs/2.0/mod/mod_log_config.html#formats ?
Ну, например, какие еще сейчас запросы вебсервер обрабатывает.
И С-джедай долбанется изучать библиотеки взаимодействия и обязательно что-нибудь не освободит. А, что хуже всего, может неаккуратным программированием завалить процесс вебсервера и тогда вообще все перестанет работать.
Это применимо для расширения вебсервера, написанного на любом языке. Как минимум, в части "завалить".
Собственно, тут уже писали, что не нужно все пихать непосредственно в веб сервер. Можно поставить отдельный обработчик (например, cgi-скрипт), который будет принимать решение о пропуске/отклонении конкретного запроса.
В чем сложность анализировать логи постфактумно раз в минуту?
Медленно. (Да и логи далеко не всегда оправданно вести.)
Вполне годится как костыль. Конечно, "чудо" на C ради этого городить не стоит.
Моим анализатором 10 000 строк анализируется около секунды, 80 000 строк около 8 секунд.
Вам бенчмарк показали. Простейшие утилиты уделывают Ваш "анализатор" чуть ли не на порядок.
А что мешает это делать на уровне веб-сервера?
обычно веб-сервер ничего не знает о php-приложении.
Ну, например, какие еще сейчас запросы вебсервер обрабатывает.
Почти бесполезно. Если обычные запросы не завершаются хотя бы за 5-10 секунд - сайт уже в жопе. Все остальное в логах.
Собственно, тут уже писали, что не нужно все пихать непосредственно в веб сервер. Можно поставить отдельный обработчик (например, cgi-скрипт), который будет принимать решение о пропуске/отклонении конкретного запроса.
Ну и где взять такое решение? опять писать на C ?
Тут вам предлагают одновременно и просто и безопасно.
обычно веб-сервер ничего не знает о php-приложении.
Обычный вебсервер и не досят. Досят конкретные приложения - просто используйте информацию о их работе при защите. Это и есть задача администратора.
Ну и где взять такое решение? опять писать на C ?
Тут вам предлагают одновременно и просто и безопасно.
Да что Вы к C-то привязались? На чем хотите - на том и пишите. Хоть на perl.
Еще раз - то, что Вы предлагаете далеко не так просто. Вспомните хоть, что изменение формата логов потребует reload'а веб-сервера + плюс всего, что парсит эти ваши логи. А тут все просто: на входе запрос - на выходе разрешение/запрет на его дальнейшую обработку. А в промежутке "черный ящик", ваш обработчик, которому всегда доступны параметры запроса - меняйте его логику как и когда удобно.
А в-третьих, иногда лучше временно просто дать 503 для подозрительных клиентов.
Отдать временно ошибку 503 подозрительному клиенту можно настроив limit_zone и limit_req_zone в конфигурации NGINX для каждого типа файлов. Тут и изобретать нечего не надо, лишь вставить 4-6 строк в файл конфигурации NGINX.
Ну, например, какие еще сейчас запросы вебсервер обрабатывает.
Информация какие запросы обрабатываются в одно и то же время как раз есть в логе, так как у каждой строки лога указана дата запроса.
Причем в логе эта информация за длительный период времени, и удачные алгоритмы могут эту информацию использовать для более точного определения ботов.
Во вторых программа анализатор логов получается более универсальной, чем модуль для вебсаервера, так как анализатор логов можно запускать как во время атаки по крону, так и после атаки для анализа HTTP-флуда администратором.
Медленно. (Да и логи далеко не всегда оправданно вести.)
Вам бенчмарк показали. Простейшие утилиты уделывают Ваш "анализатор" чуть ли не на порядок.
Вы показали сравнение со скриптом, находящим топ быстрых IP.
В моем анализаторе рассчитывается больше разных характеристик для каждого IP и может запускаться много разных алгоритмов для нахождения ботов, так что сранивать его скорость с простым скриптом не очень корректоно.
zexis добавил 18.01.2011 в 16:33
А что мешает это делать на уровне веб-сервера?
myhand, вы уже написали модуль для вебсервера, принимающий решения кто бот, а кто нет?
Или это только на словах из серии, что можно написать, если постараться?
Вы бы для начала реализовали это, ведь вещь очень нужная была бы при грамотной реализации, а потом бы уже доказывали его преимущество над моим анализатором логов, который у меня уже написан, протестирован и активно мной используется на практике.
Отдать временно ошибку 503 подозрительному клиенту можно настроив limit_zone и limit_req_zone в конфигурации NGINX для каждого типа файлов. Тут и изобретать нечего не надо, лишь вставить 4-6 строк в файл конфигурации NGINX.
Я бы поостерегся делать это "для каждого типа файлов". И, к сожалению, есть еще клиенты, для которых таки нельзя это делать. Так что логика на порядок сложнее - но вы идете в нужную сторону.
Информация какие запросы обрабатываются в одно и то же время как раз есть в логе, так как у каждой строки лога указана дата запроса.
"Садись, два" (с)
Ну какое это отношение имеет к тому "какие еще сейчас запросы вебсервер обрабатывает"? Сейчас, не "третьево дни".
Во вторых программа анализатор логов получается более универсальной, чем модуль для вебсаервера, так как анализатор логов можно запускать как во время атаки по крону, так и после атаки для анализа HTTP-флуда администратором.
Анализ логов никто не отменял. Но это больше уже для обновления списков IP, формирования статистических критериев и т.п.
Начнем с того, что "взаимодействия" с "клиентом" нету. Как класса. Бан - и все. Или не бан.
Вы показали сравнение со скриптом, находящим топ быстрых IP.
Я показывал сравнение со случаем, когда Ваша программа строит этот самый топ.
myhand, вы уже написали модуль для вебсервера, принимающий решения кто бот, а кто нет?
- но зачем делать очередной велосипед? Есть решения и для nginx, и для апача. Их тут цитировали. Интересно - поучаствуйте в разработке.
анализатором логов, который у меня уже написан, протестирован и активно мной используется на практике.
Вы только не обижайтесь, но таких "анализаторов, которые анализируют" - у каждого администратора есть в заначке. Присутствующие, уверяю, не исключение. Делиться здесь особо нечем - т.к. все подобное пишется/писалось на коленке за полчаса.
Boris A Dolgov
1 - это реально дебилом нужно быть, чтобы добровольно терять информацию об IP и заниматься блокировкой ботов. Так не бывает.
2 - понимаю, но это не отменяет всех ужасов C/C++.
1) Вероятность того, что один из ста пользователь ната - бот в сто раз больше, чем вероятность того, что пользователь, который хотел пойти к нам на сайт и был заблокирован из-за соседа - бот.
В конце концов, никто не отменяет блокировку на FW. Но если, например, за 4 часа пришло 10% ддос-запросов и 90% нормальных, то такой ip нельзя блокировать.
Обычный вебсервер и не досят.
С DDOS по IP не встречался?
С DDOS по IP не встречался?
Если я думаю за http - ip - , то статика разгружает все эти запросы, nginx в этом плане на высоте.
P.s я почти всегда справляюсь без парсеров, штатные средства пока работали, nginx спасает почти в 70% случаях, ну может и есть скрипты не большие, и то они для nginx-ерор-лог что бы лимиты выгребать. хотя атака-атаке рознь.