Какие методы и/или модули доступны для обеспечения надежного ограничения скорости (запросы | bytes/ip/unit time) в apache?
Как я могу реализовать ограничение скорости с помощью Apache? (запросы в секунду)
Ответ 1
Лучший
- mod_evasive (больше внимания уделяется снижению воздействия DoS).
- mod_cband (Лучше всего использовать "нормальный" контроль полосы пропускания)
а остальные
Ответ 2
Как указано в этот блог, возможно, возможно использовать Apache mod_security, чтобы реализовать ограничение скорости в секунду.
Конфигурация выглядит примерно так:
SecRuleEngine On
<LocationMatch "^/somepath">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
ErrorDocument 509 "Rate Limit Exceeded"
Ответ 3
Существует множество способов, в том числе брандмауэры веб-приложений, но самая простая вещь для реализации при использовании модема Apache.
Один такой мод, который я рекомендую, - mod_qos. Это бесплатный модуль, который очень эффективен против атак типа certin DOS, Bruteforce и Slowloris. Это упростит загрузку вашего сервера совсем немного.
Он очень мощный.
Текущая версия модуля mod_qos реализует механизмы управления для управления:
-
Максимальное количество одновременных запросов к местоположению/ресурсу (URL) или виртуального хоста.
-
Ограничение полосы пропускания, например, максимально допустимое количество запросов в секунду для URL-адреса или максимальное/минимальное количество загружаемых килобайт в секунду.
-
Ограничивает количество событий запроса в секунду (специальный запрос условий).
- Ограничивает количество событий запроса в течение определенного периода времени.
- Он также может обнаруживать очень важных лиц (VIP), которые могут получить доступ к веб-сервер без ограничений или с меньшим количеством ограничений.
-
Общий фильтр запросов и фильтр заголовков для отказа от несанкционированного доступа операции.
-
Запросить ограничение и фильтрацию данных тела (требуется mod_parp).
-
Ограничивает количество событий запроса для отдельных клиентов (IP).
-
Ограничения на уровне соединения TCP, например, максимальное количество разрешенные соединения с одного IP-адреса источника или динамического keep-alive.
- Предпочитает известные 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.
Ответ 4
В Apache 2.4 есть новый складский модуль под названием mod_ratelimit. Для эмуляции скорости модема вы можете использовать mod_dialup. Хотя я не понимаю, почему вы просто не могли использовать mod_ratelimit для всего.
Ответ 5
К сожалению, mod_evasive
не будет работать должным образом при использовании в конфигурациях без предварительного просмотра (последние настройки Apache в основном относятся к MPM)
Ответ 6
Еще одна опция - mod_qos
Непростая настройка - но мощная.