Apache mod_security с AWS ElasticBeanstalk с использованием Loadbalancer IP вместо перенаправленного IP - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующий файл конфигурации в моей папке .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>
...