Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Kroll
Зарегистрирован: 28.11.2001 Сообщения: 2
|
Добавлено: Ср Ноя 28 2001 18:44 Заголовок сообщения: Apache - как автоматически фильтровать IP адреса |
|
|
Господа,
Столкнулся с небольшой проблемой - может кто сможет помочь ?
На днях один "умный" грек, сидящий на очень хорошем канале решил полностью слить себе наш сайт. Не знаю, что он там запустил - скорее всего wget или что-нибудь подобное, но запросы на выдачу записей из нашей базы данных поступали в количестве около 20 в секунду. В базе у нас око 1500000 записей, так что обработка одного запроса в обычной ситуации занимает около 1 секунды.
Итог действий этого грека очевиден - сервер ложился через две минуты после перезапуска.
Мы зафильтровали IP адрес этого грека в httpd.conf - помогло. Но через пару часов ситуация повторилась - но IPшник был уже из другой сетки. Его сейчас тоже зафильтровали, но нет никакой гарантии, что он не зайдет с третьего, четвертого и еще сколько у него их там есть адреса.
Хотелось бы решить проблему принципиально раз и навсегда.
Может кто подскажет - есть ли в Apache (1.3.20) возможность автоматической фильтрации IP адресов, с которых идет флуд с конфигурацией правил, по которым производится фильтрация ?
Например, чтобы после того как клиент сделал 100 запросов, следующую сотню он смог бы сделать только через час (цифры условные)
Буду благодарен за люой совет.
Вит. |
|
Вернуться к началу |
|
|
Dmitry.Karpov Гость
|
Добавлено: Ср Ноя 28 2001 23:13 Заголовок сообщения: Squid-ускоритель |
|
|
В Apache - вряд ли, а вот Squid попробовать стОит. Squid умеет работать в двух режимах - кэш на стороне клиента и ускоритель (тоже кэш) на стороне сервера. И еще он умеет ограничивать полосу пропускания. Сейчас мне лень лазать по squid.conf, но что-то такое я там видел... |
|
Вернуться к началу |
|
|
Kroll
Зарегистрирован: 28.11.2001 Сообщения: 2
|
Добавлено: Ср Ноя 28 2001 23:48 Заголовок сообщения: Не поможет - узкое место не Apache, а сервер баз данных |
|
|
Это не поможет - в нашей ситуации узким местом становится сервер баз данных - на стороне Apache отрабатывается PHP скрипт, который шлет запрос на выборку к базе данных.
Как я уже писал, нормальное время отработки запроса к базе - около секунды. Когда поступает 10-20 запросов в секунду, получается просто лавинный эффект пожирания ресурсов - база данных держится почти 2 минуты и помирает, съедая все ресурсы CPU.
Так как Apache и сервер базы данных крутятся физически на одной машине - умирает все.
Можно, конечно, в скрипт встроить проверку числа обращений с каждого IPшника, но тут есть два неудобства:
1. Скриптов много, и защиту придется в каждый встраивать.
2. Наверняка такое решение уже кем-то реализовано и не хочется изобретать велосипед.
В любом случае - спасибо за ответ. может, еще какие мысли возникнут ? |
|
Вернуться к началу |
|
|
Dmitry.Karpov Гость
|
Добавлено: Пт Ноя 30 2001 13:31 Заголовок сообщения: Re: Не поможет - узкое место не Apache, а сервер баз данных |
|
|
Повторяю для тех, кто в танке:
Режим работы называется "ускоритель", потому что именно этот режим (так он называется) используется при работе на стороне сервера.
Функция, которая нам нужна - ограничение доступа по интенсивности. Эта функция там реализована.
Наша задача - запустить функцию ограничения доступа в режиме ускорителя. |
|
Вернуться к началу |
|
|
|