У меня есть следующий файл конфигурации в моей папке .ebextensions для приложения PHP, работающего на эластичном стебле. Приложение находится в группе автомасштабирования за балансировщиком нагрузки. Итак, мы установили X-Forwarded-For в качестве исходного заголовка для фильтра. Тем не менее, фильтр получает IP-адрес загрузочного балансировщика, и обычным пользователям отображается экран ошибки 429.
Как правильно настроить mod_security для использования перенаправленного адреса, а не адреса загрузочного балансировщика?
packages:
yum:
mod24_security: []
files:
"/etc/httpd/conf.d/mod_security.conf" :
mode: "000644"
owner: root
group: root
content: |
# The amount of connections per second.
Define cons_per_sec 1
# The amount of connections that a single remote ip can burst to.
Define cons_burst 1000
# The header to use for tracking source ip addresses. Use "X-Forwarded-For" for Load Balanced environments and "REMOTE_ADDR" for Single instance.
Define src_header X-Forwarded-For
#Define src_header REMOTE_ADDR
<IfModule mod_security2.c>
SecRuleEngine On
SecStatusEngine Off
<LocationMatch "^/">
SecAction initcol:ip=%{REQUEST_HEADERS:${src_header},pass,nolog,id:11
SecAction "phase:5,deprecatevar:ip.awscounter=${cons_per_sec}/1,pass,nolog,id:12"
SecRule IP:AWSCOUNTER "@gt ${cons_burst}" "phase:2,deny,status:429,setenv:RATELIMITED,skip:1,log,id:13"
SecAction "phase:2,pass,setvar:ip.awscounter=+1,nolog,id:14"
</LocationMatch>
SecDebugLogLevel 0
SecDataDir /tmp
ErrorDocument 429 "Connection Limit Exceeded"
</IfModule>