Какие методы и/или модули доступны для обеспечения надежного ограничения скорости (запросы | байт/ip/единицу времени) в apache?Как я могу реализовать ограничение скорости с помощью Apache? (запросы в секунду)
ответ
Лучший
- mod_evasive (Focused больше на снижение воздействия DoS)
- mod_cband (Лучший признакам для 'нормального' управления пропускной способностью)
и отдыха
Я не мог найти ничего, чтобы ограничивать соединения в день по IP-адресу. Я всю ночь искал, это позор. – Greg 2009-06-08 12:56:37
Кто-нибудь знает, есть ли способ получить mod_evasive, чтобы посмотреть на заголовок вместо IP, если он работает за обратным прокси-сервером? – 2010-11-15 17:57:49
@StavrosKorokithakis Может быть, это поможет? http://stderr.net/apache/rpaf/ Я полагаю, что это сделает IP-адрес X-Forwarded таким, как если бы он был исходным IP-адресом для всех модулей apache, загруженных после него. – Eli 2011-10-25 21:32:27
В Apache 2.4 есть новый запас модуль, который называется mod_ratelimit. Для эмуляции скорости модема вы можете использовать mod_dialup. Хотя я не понимаю, почему вы просто не могли использовать mod_ratelimit для всего. более
Как указано в this blog пост представляется возможным использовать для 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"
К сожалению, mod_evasive
не будет работать, как ожидалось при использовании в конфигурации без PreFork (недавние расстановок Апач в основном MPM)
Есть множество способов включая брандмауэры веб-приложений, но проще всего реализовать при использовании мод Apache.
Один такой мод, который я рекомендую, является mod_qos. Это бесплатный модуль, который очень эффективен против сертификатов 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.
Я использую для Linux [дц] (http://www.lartc.org/howto/lartc.qdisc.classless.html#AEN690) на веб-сервере, так как Red Hat 6 имеет только Apache 2.2. – ceving 2014-05-19 12:17:18