Назад | Перейти на главную страницу

Как заблокировать IP-адрес на Apache, когда он исходит от прокси

У меня есть URL-адрес, который мне нужен, чтобы ограничить доступ для определенного IP (10.0.0.5). Когда я делаю это для прямого доступа следующим образом, он отлично работает:

<Location /incoming>
    Order Allow,Deny
    Deny from 10.0.0.5
    Allow from all
</Location>

Но когда этот IP-адрес поступает от прокси (IP-адрес прокси: 192.168.1.43), это решение не работает. Вот что я вижу в журнале:

10.0.0.5, 192.168.1.43 - - [24 / May / 2017: 16: 03: 54 +0300] "POST / входящий HTTP / 1.0" 200 698 0/6899 "-" "-"

Я попробовал сделать следующее - добавить секцию Proxy:

<Proxy /incoming >
    Order Allow,Deny
    Deny from 10.0.0.5
    Allow from all
</Proxy>

Это тоже не помогает.

Мне нужна ваша помощь, друзья !!!

Если прокси устанавливает заголовок X-Forwarded-For, вы должны иметь возможность использовать это:

<Location /incoming>
    Order Deny,Allow
    SetEnvIf X-Forwarded-For "10.0.0.5" DenyAccess
    Deny from env=DenyAccess
</Location>

Order Deny,Allow - это директива разрешения по умолчанию, которая дает доступ, если не соответствует запрещающее правило. SetEnvIf условно устанавливает флаг среды на основе значения X-Forwarded-For. Единственное правило запрета здесь срабатывает, только если этот флаг установлен. Если правило запрета не срабатывает, доступ разрешен.

Вы также можете сослаться на env флаги в Require блоки, как показано Вот.