zexis, ну. а я, что, возражаю? это лишь подтверждает, что со временем логика проверок усложняется и потребуется нормальный удобный для быстрой разработки язык программирования.
Boris A Dolgov
1 - это реально дебилом нужно быть, чтобы добровольно терять информацию об IP и заниматься блокировкой ботов. Так не бывает.
2 - понимаю, но это не отменяет всех ужасов C/C++.
T.R.O.N, писать на новом непонятном нишевом ASP или немного настроить mysql и написать на давно знакомом php . что проще для типичного вебмастера ?
myhand, проще блокировать. Думаю, мало кто этим заморачивается. Генерировать капчу это немало ресурсов нужно.
в конце концов, ради того чтобы не погружаться в C, можно опять же файрволом сделать редирект на специальный сайт со специальным обработчиком. Результат проверки тоже из логов достать.
А еще такой скрипт может легко взаимодействовать с текущими сессиями пользователей, которые хранятся в произвольном месте и заносить их в белый список. Тут вон на форуме полно жалоб на временную блокировку аккаунтов по причине агрессивного срабатывания защиты. И ведь свести на нет такие случаи легко.Интеграция разных систем - сильная сторона perl.
И С-джедай долбанется изучать библиотеки взаимодействия и обязательно что-нибудь не освободит. А, что хуже всего, может неаккуратным программированием завалить процесс вебсервера и тогда вообще все перестанет работать.
Буду. Чего именно существенного нету в CustomLog http://httpd.apache.org/docs/2.0/mod/mod_log_config.html#formats ?
alexkv, все правильно понял.
настолько секурно, насколько ты серьезно будешь относиться к своевременному обновлению mysql, правильной раздаче прав доступа и выбору длинного пароля в mysql.
5meoDIPT, может тебе еще и экспертное заключение на спину намазать?
Boris A Dolgov, а зачем писать прослойку, когда можно не писать? еще одна причина - тут не нужна обратная связь с nginx. программа отдает команды файрволу.
И не понятно с чего это парсинг лога - куцый ? в лог довольно много можно информации записывать.
myhand, чтобы не писать свои модулу для nginx на С, на котором только курсовые пишут и линуксоиды.
Так можно придумать больше гибкости и потенциальных эвристик.
myhand, ну так не ведь perl не только для костылей. Не обязательно по крону запускать.
Можно нормального демона сделать и читающего access.log и с быстрым временем реакции.
Boris A Dolgov, почему бы нет для среднего кода на C и среднего же кода на PERL ?
perl компилируется в байт-код. Реализация хешей вылизана. Регулярные выражения предкомпилируемые и вылизаны в первую очередь.
Если не придираться к реализации,что действительно плохо в этой затее - запуск программы раз в минуту и анализ по моментальным счетчикам. Во-первых это означает высокую инерцию. Теоретически если атака стартует с новыми волнами ровно в первую секунду каждой минуты, она может задрючить сайт за оставшиеся 59 секунд. В идеале будет вполне достаточно N быстрых ботов для ddos продолжительностью N минут. Это совсем немного.
А во-вторых,в этом случае невозможно сформулировать четкие рамки для пользователей сайта типа "если запросов больше 10 в секунду - вас заблокируют", а только "ой, мы не знаем точно, но где то в районе 10, а может 30 запросов в секунду делать не надо".