Я не смог найти ничего, что ограничивало бы количество подключений в день по IP-адресу. Я всю ночь искал, обидно.
Грег
1
Кто-нибудь знает, есть ли способ заставить mod_evasive просматривать заголовок вместо IP-адреса, когда он работает за обратным прокси?
Ставрос Корокитакис
6
Спустя 4 года, остается ли mod_evasive «лучшим»?
Зак Томпсон
6
Подтвердите свое требование. Почему _evasive и _cband лучшие?
Рид,
5
mod_evasiveполучает много онлайн-рекомендаций, но по состоянию на середину 2017 года его, похоже, забросил его автор, Джонатан Здзярски, который странным образом удалил все ссылки на него из своего блога - хотя исходный код все еще доступен для загрузки . Ни один из других проектов не обновлялся за последние 6 лет (или 15 лет в случае mod_limitipconn).
Энтони
20
Как указано в этом сообщении в блоге, кажется возможным использовать mod_security для реализации ограничения скорости в секунду.
Это было идеально для меня с уже запущенным modsec2. Просто нужно было добавить идентификаторы в правила, чтобы соответствовать версии modsec, например: <LocationMatch "^ / somepath"> SecAction initcol: ip =% {REMOTE_ADDR}, pass, nolog, id: 10000001 SecAction "phase: 5, deprecatevar: ip.somepathcounter = 1/1, pass, nolog, id: 10000002 "SecRule IP: SOMEPATHCOUNTER" @gt 60 "" фаза: 2, пауза: 300, deny, status: 509, setenv: RATELIMITED, skip: 1, nolog, id: 10000003 "SecAction" phase: 2, pass, setvar: ip.somepathcounter = + 1, nolog, id: 10000004 "Заголовок всегда устанавливает Retry-After" 10 "env = RATELIMITED </LocationMatch>
Натан Стретч
2
Также обратите внимание, что вы можете изменить количество разрешенных начальных пакетных запросов, отредактировав «@gt 60», а также как быстро он «перезарядит» лимит, отредактировав бит ip.somepathcounter = 1/1. 1/1 разрешает один дополнительный запрос в секунду. 1/2 разрешает один дополнительный запрос каждые 2 секунды и т. Д.
Натан Стретч
3
Apache 2.4 будет жаловаться на 509 в ErrorDocument, опция меняет его на 429 (который, конечно, не поддерживается в Apache 2.2). Кроме того, все SecAction и SecRule-s нуждаются в идентификаторе, начиная с mod_security 2.7.
Mrten 07
1
FYI mod_security- это не проект Apache.
Кристофер Шульц
12
Существует множество способов, включая брандмауэры веб-приложений, но проще всего реализовать их с помощью мода Apache.
Один из таких модов, который я рекомендую, - это mod_qos . Это бесплатный модуль, который очень эффективен против атак типа Certin DOS, Bruteforce и Slowloris. Это немного снизит нагрузку на ваш сервер.
Это очень мощно .
Текущая версия модуля mod_qos реализует механизмы контроля для управления:
Максимальное количество одновременных запросов к местоположению / ресурсу (URL) или виртуальному хосту.
Ограничение пропускной способности, например максимально допустимое количество запросов в секунду к URL-адресу или максимальное / минимальное количество загружаемых килобайт в секунду.
Ограничивает количество событий запроса в секунду (особые условия запроса).
Ограничивает количество событий запроса в течение определенного периода времени.
Он также может обнаруживать очень важных лиц (VIP), которые могут получить доступ к веб-серверу без ограничений или с меньшими ограничениями.
Общая строка запроса и фильтр заголовка для запрета несанкционированных операций.
Ограничение и фильтрация данных тела запроса (требуется mod_parp).
Ограничивает количество событий запроса для отдельных клиентов (IP).
Ограничения на уровне TCP-соединения, например, максимальное количество разрешенных соединений с одного IP-адреса источника или динамический контроль активности.
Предпочитает известные IP-адреса, когда на сервере заканчиваются свободные TCP-соединения.
Это образец конфигурации того, для чего вы можете ее использовать. Существуют сотни возможных конфигураций, соответствующих вашим потребностям. Посетите сайт для получения дополнительной информации об элементах управления.
Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate 120
# limits the connections for this virtual host:
QS_SrvMaxConn 800
# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose 600
# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP 50
# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP 172.18.3.32
QS_SrvMaxConnExcludeIP 192.168.10.
этот работает только в старом apache2.2 не работает в apache2.4 +, не так ли?
infiniteloop
@infiniteloop на странице mod_quos sourceforge говорится, что он отлично работает с apache2.4. Но есть конкретное обсуждение пары функций, которые здесь не работают: stackoverflow.com/a/15726540/1402498
JamesHoux
6
В Apache 2.4 есть новый стандартный модуль под названием mod_ratelimit . Для эмуляции скорости модема вы можете использовать mod_dialup . Хотя я не понимаю, почему вы просто не можете использовать mod_ratelimit для всего.
Обратите внимание, что mod_dialup использует асинхронное SUSPENDEDсостояние, не тратя потоки на ожидание, тогда как mod_ratelimit, на данный момент, строго зависит от количества потоков на соединение. ср. thread.gmane.org/gmane.comp.apache.cvs/20490
ArtemGr
6
К сожалению, mod_evasiveне будет работать должным образом при использовании в конфигурациях без предварительной вилки (недавние настройки apache в основном относятся к MPM)
Зависит от того, почему вы хотите установить ограничение скорости.
Если это необходимо для защиты от перегрузки сервера, на самом деле имеет смысл поставить перед ним NGINX и настроить ограничение скорости. там . Это имеет смысл, потому что NGINX использует гораздо меньше ресурсов, примерно несколько МБ на десять тысяч соединений. Итак, если сервер переполнен, NGINX будет ограничивать скорость (используя незначительное количество ресурсов) и передавать только разрешенный трафик в Apache.
Если все, что вам нужно, это простота, используйте что-нибудь вроде mod_evasive.
Как обычно, если это необходимо для защиты от DDoS- или DoS-атак, используйте такую службу, как Cloudflare, которая также имеет ограничение скорости.
Ответы:
Лучшее
и остальное
источник
mod_evasive
получает много онлайн-рекомендаций, но по состоянию на середину 2017 года его, похоже, забросил его автор, Джонатан Здзярски, который странным образом удалил все ссылки на него из своего блога - хотя исходный код все еще доступен для загрузки . Ни один из других проектов не обновлялся за последние 6 лет (или 15 лет в случаеmod_limitipconn
).Как указано в этом сообщении в блоге, кажется возможным использовать mod_security для реализации ограничения скорости в секунду.
Конфигурация примерно такая:
источник
mod_security
- это не проект Apache.Существует множество способов, включая брандмауэры веб-приложений, но проще всего реализовать их с помощью мода Apache.
Один из таких модов, который я рекомендую, - это mod_qos . Это бесплатный модуль, который очень эффективен против атак типа Certin DOS, Bruteforce и Slowloris. Это немного снизит нагрузку на ваш сервер.
Это очень мощно .
Текущая версия модуля mod_qos реализует механизмы контроля для управления:
Максимальное количество одновременных запросов к местоположению / ресурсу (URL) или виртуальному хосту.
Ограничение пропускной способности, например максимально допустимое количество запросов в секунду к URL-адресу или максимальное / минимальное количество загружаемых килобайт в секунду.
Ограничивает количество событий запроса в секунду (особые условия запроса).
Общая строка запроса и фильтр заголовка для запрета несанкционированных операций.
Ограничение и фильтрация данных тела запроса (требуется mod_parp).
Ограничивает количество событий запроса для отдельных клиентов (IP).
Ограничения на уровне TCP-соединения, например, максимальное количество разрешенных соединений с одного IP-адреса источника или динамический контроль активности.
Это образец конфигурации того, для чего вы можете ее использовать. Существуют сотни возможных конфигураций, соответствующих вашим потребностям. Посетите сайт для получения дополнительной информации об элементах управления.
http://opensource.adnovum.ch/mod_qos/
источник
В Apache 2.4 есть новый стандартный модуль под названием mod_ratelimit . Для эмуляции скорости модема вы можете использовать mod_dialup . Хотя я не понимаю, почему вы просто не можете использовать mod_ratelimit для всего.
источник
SUSPENDED
состояние, не тратя потоки на ожидание, тогда как mod_ratelimit, на данный момент, строго зависит от количества потоков на соединение. ср. thread.gmane.org/gmane.comp.apache.cvs/20490К сожалению,
mod_evasive
не будет работать должным образом при использовании в конфигурациях без предварительной вилки (недавние настройки apache в основном относятся к MPM)источник
Еще один вариант - mod_qos
Не простой в настройке, но мощный.
http://opensource.adnovum.ch/mod_qos/
источник
Зависит от того, почему вы хотите установить ограничение скорости.
Если это необходимо для защиты от перегрузки сервера, на самом деле имеет смысл поставить перед ним NGINX и настроить ограничение скорости. там . Это имеет смысл, потому что NGINX использует гораздо меньше ресурсов, примерно несколько МБ на десять тысяч соединений. Итак, если сервер переполнен, NGINX будет ограничивать скорость (используя незначительное количество ресурсов) и передавать только разрешенный трафик в Apache.
Если все, что вам нужно, это простота, используйте что-нибудь вроде mod_evasive.
Как обычно, если это необходимо для защиты от DDoS- или DoS-атак, используйте такую службу, как Cloudflare, которая также имеет ограничение скорости.
источник